summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-10-03 20:44:20 +0000
committerJakub Jelinek <jakub@redhat.com>2005-10-03 20:44:20 +0000
commita5a11654ea5ea89bfffb295fbb2f17cbb45839b6 (patch)
tree2078fd7b828ae3b4c030e6722c53bdc81542a511
parent6543cff055c298ea3ec718b356f6c2115e8797ae (diff)
Updated to fedora-glibc-20051003T2040
-rw-r--r--BUGS14
-rw-r--r--ChangeLog496
-rw-r--r--Makefile54
-rw-r--r--argp/argp-eexst.c2
-rw-r--r--argp/argp-fmtstream.c2
-rw-r--r--argp/argp-fmtstream.h4
-rw-r--r--argp/argp-fs-xinl.c2
-rw-r--r--argp/argp-xinl.c2
-rwxr-xr-xdebug/xtrace.sh2
-rw-r--r--dirent/Makefile6
-rw-r--r--dirent/Versions3
-rw-r--r--dirent/dirent.h10
-rw-r--r--dirent/tst-fdopendir.c124
-rw-r--r--dlfcn/Makefile19
-rw-r--r--dlfcn/bug-atexit1-lib.c375
-rw-r--r--dlfcn/bug-atexit1.c23
-rw-r--r--dlfcn/bug-atexit2-lib.c14
-rw-r--r--dlfcn/bug-atexit2.c53
-rw-r--r--elf/dl-load.c75
-rw-r--r--elf/dl-tsd.c4
-rw-r--r--elf/rtld.c9
-rw-r--r--fedora/branch.mk4
-rw-r--r--iconv/loop.c6
-rw-r--r--iconvdata/Makefile19
-rw-r--r--iconvdata/TESTS31
-rw-r--r--iconvdata/gconv-modules221
-rw-r--r--iconvdata/ibm1008.c29
-rw-r--r--iconvdata/ibm1008.h153
-rw-r--r--iconvdata/ibm1008_420.c197
-rw-r--r--iconvdata/ibm1097.c29
-rw-r--r--iconvdata/ibm1097.h159
-rw-r--r--iconvdata/ibm1112.c29
-rw-r--r--iconvdata/ibm1112.h148
-rw-r--r--iconvdata/ibm1123.c29
-rw-r--r--iconvdata/ibm1123.h135
-rw-r--r--iconvdata/ibm1130.c29
-rw-r--r--iconvdata/ibm1130.h141
-rw-r--r--iconvdata/ibm1140.c29
-rw-r--r--iconvdata/ibm1140.h132
-rw-r--r--iconvdata/ibm1141.c29
-rw-r--r--iconvdata/ibm1141.h132
-rw-r--r--iconvdata/ibm1142.c29
-rw-r--r--iconvdata/ibm1142.h132
-rw-r--r--iconvdata/ibm1143.c29
-rw-r--r--iconvdata/ibm1143.h132
-rw-r--r--iconvdata/ibm1144.c29
-rw-r--r--iconvdata/ibm1144.h132
-rw-r--r--iconvdata/ibm1145.c29
-rw-r--r--iconvdata/ibm1145.h132
-rw-r--r--iconvdata/ibm1146.c29
-rw-r--r--iconvdata/ibm1146.h132
-rw-r--r--iconvdata/ibm1147.c29
-rw-r--r--iconvdata/ibm1147.h132
-rw-r--r--iconvdata/ibm1148.c29
-rw-r--r--iconvdata/ibm1148.h132
-rw-r--r--iconvdata/ibm1149.c29
-rw-r--r--iconvdata/ibm1149.h132
-rw-r--r--iconvdata/ibm1166.c29
-rw-r--r--iconvdata/ibm1166.h143
-rw-r--r--iconvdata/ibm1167.c29
-rw-r--r--iconvdata/ibm1167.h156
-rw-r--r--iconvdata/ibm12712.c29
-rw-r--r--iconvdata/ibm12712.h129
-rw-r--r--iconvdata/ibm16804.c29
-rw-r--r--iconvdata/ibm16804.h152
-rw-r--r--iconvdata/ibm4517.c29
-rw-r--r--iconvdata/ibm4517.h156
-rw-r--r--iconvdata/ibm4899.c29
-rw-r--r--iconvdata/ibm4899.h102
-rw-r--r--iconvdata/ibm4909.c29
-rw-r--r--iconvdata/ibm4909.h134
-rw-r--r--iconvdata/ibm4971.c29
-rw-r--r--iconvdata/ibm4971.h134
-rw-r--r--iconvdata/ibm5347.c29
-rw-r--r--iconvdata/ibm5347.h142
-rw-r--r--iconvdata/ibm803.c29
-rw-r--r--iconvdata/ibm803.h96
-rw-r--r--iconvdata/ibm901.c (renamed from sysdeps/powerpc/nofpu/fesetround.c)22
-rw-r--r--iconvdata/ibm901.h185
-rw-r--r--iconvdata/ibm902.c (renamed from sysdeps/powerpc/nofpu/fegetexcept.c)21
-rw-r--r--iconvdata/ibm902.h172
-rw-r--r--iconvdata/ibm9030.c29
-rw-r--r--iconvdata/ibm9030.h131
-rw-r--r--iconvdata/ibm9066.c29
-rw-r--r--iconvdata/ibm9066.h120
-rw-r--r--iconvdata/ibm921.c (renamed from sysdeps/powerpc/nofpu/fegetround.c)22
-rw-r--r--iconvdata/ibm921.h148
-rw-r--r--iconvdata/ibm9448.c29
-rw-r--r--iconvdata/ibm9448.h191
-rw-r--r--iconvdata/jis0208.c20
-rw-r--r--iconvdata/jis0208.h9
-rwxr-xr-xiconvdata/run-iconv-test.sh4
-rw-r--r--iconvdata/testdata/IBM1008bin0 -> 511 bytes
-rw-r--r--iconvdata/testdata/IBM1008..UTF8bin0 -> 712 bytes
-rw-r--r--iconvdata/testdata/IBM1097bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1097..UTF8bin0 -> 717 bytes
-rw-r--r--iconvdata/testdata/IBM1112bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1112..UTF8bin0 -> 645 bytes
-rw-r--r--iconvdata/testdata/IBM1123bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1123..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1130bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1130..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1140bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1140..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1141bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1141..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1142bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1142..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1143bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1143..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1144bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1144..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1145bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1145..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1146bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1146..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1147bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1147..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1148bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1148..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1149bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1149..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1166bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1166..UTF8bin0 -> 643 bytes
-rw-r--r--iconvdata/testdata/IBM1167bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1167..UTF8bin0 -> 686 bytes
-rw-r--r--iconvdata/testdata/IBM12712bin0 -> 455 bytes
-rw-r--r--iconvdata/testdata/IBM12712..UTF8bin0 -> 566 bytes
-rw-r--r--iconvdata/testdata/IBM16804bin0 -> 499 bytes
-rw-r--r--iconvdata/testdata/IBM16804..UTF8bin0 -> 668 bytes
-rw-r--r--iconvdata/testdata/IBM4517bin0 -> 425 bytes
-rw-r--r--iconvdata/testdata/IBM4517..UTF8bin0 -> 828 bytes
-rw-r--r--iconvdata/testdata/IBM4899bin0 -> 327 bytes
-rw-r--r--iconvdata/testdata/IBM4899..UTF8bin0 -> 406 bytes
-rw-r--r--iconvdata/testdata/IBM4909bin0 -> 503 bytes
-rw-r--r--iconvdata/testdata/IBM4909..UTF8bin0 -> 630 bytes
-rw-r--r--iconvdata/testdata/IBM4971bin0 -> 503 bytes
-rw-r--r--iconvdata/testdata/IBM4971..UTF8bin0 -> 630 bytes
-rw-r--r--iconvdata/testdata/IBM5347bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM5347..UTF8bin0 -> 659 bytes
-rw-r--r--iconvdata/testdata/IBM803bin0 -> 309 bytes
-rw-r--r--iconvdata/testdata/IBM803..UTF8bin0 -> 370 bytes
-rw-r--r--iconvdata/testdata/IBM901bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM901..UTF8bin0 -> 646 bytes
-rw-r--r--iconvdata/testdata/IBM902bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM902..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM9030bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM9030..UTF8bin0 -> 723 bytes
-rw-r--r--iconvdata/testdata/IBM9066bin0 -> 449 bytes
-rw-r--r--iconvdata/testdata/IBM9066..UTF8bin0 -> 627 bytes
-rw-r--r--iconvdata/testdata/IBM921bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM921..UTF8bin0 -> 645 bytes
-rw-r--r--iconvdata/testdata/IBM9448bin0 -> 451 bytes
-rw-r--r--iconvdata/testdata/IBM9448..UTF8bin0 -> 600 bytes
-rw-r--r--include/dirent.h2
-rw-r--r--inet/getnetgrent_r.c8
-rw-r--r--libio/fileops.c6
-rw-r--r--libio/fmemopen.c2
-rw-r--r--libio/iofclose.c4
-rw-r--r--libio/iofgets.c10
-rw-r--r--libio/iofgets_u.c10
-rw-r--r--libio/iofgetws.c10
-rw-r--r--libio/iofgetws_u.c10
-rw-r--r--libio/iofopncook.c11
-rw-r--r--libio/iogetline.c56
-rw-r--r--libio/oldfileops.c6
-rw-r--r--libio/oldiofclose.c4
-rw-r--r--locale/iso-4217.def4
-rw-r--r--locale/iso-639.def121
-rw-r--r--locale/programs/ld-address.c13
-rw-r--r--localedata/ChangeLog92
-rw-r--r--localedata/Makefile4
-rw-r--r--localedata/SUPPORTED7
-rw-r--r--localedata/locales/af_ZA246
-rw-r--r--localedata/locales/az_AZ47
-rw-r--r--localedata/locales/be_BY@latin147
-rw-r--r--localedata/locales/bn_BD117
-rw-r--r--localedata/locales/bs_BA18
-rw-r--r--localedata/locales/el_GR29
-rw-r--r--localedata/locales/en_US2
-rw-r--r--localedata/locales/es_US12
-rw-r--r--localedata/locales/hsb_DE2216
-rw-r--r--localedata/locales/km_KH1904
-rw-r--r--localedata/locales/ky_KG203
-rw-r--r--localedata/locales/mg_MG181
-rw-r--r--localedata/locales/ru_RU24
-rw-r--r--localedata/locales/sid_ET1
-rw-r--r--localedata/locales/sq_AL145
-rw-r--r--localedata/locales/st_ZA71
-rw-r--r--localedata/locales/tg_TJ15
-rw-r--r--localedata/locales/wa_BE32
-rw-r--r--localedata/locales/xh_ZA69
-rw-r--r--localedata/locales/yi_US53
-rw-r--r--localedata/locales/zh_CN6
-rw-r--r--localedata/locales/zu_ZA69
-rw-r--r--malloc/Makefile2
-rw-r--r--malloc/arena.c21
-rw-r--r--malloc/malloc.c2
-rw-r--r--malloc/memusage.c60
-rw-r--r--malloc/obstack.h5
-rw-r--r--malloc/tst-mallocfork.c52
-rw-r--r--manual/llio.texi12
-rw-r--r--manual/memory.texi4
-rw-r--r--manual/stdio.texi7
-rw-r--r--manual/time.texi3
-rw-r--r--nptl/ChangeLog35
-rw-r--r--nptl/allocatestack.c92
-rw-r--r--nptl/descr.h16
-rw-r--r--nptl/init.c11
-rw-r--r--nptl/perf.c7
-rw-r--r--nptl/pthread_create.c13
-rw-r--r--nscd/dbg_log.c2
-rw-r--r--nscd/nscd_getpw_r.c2
-rw-r--r--posix/Makefile2
-rw-r--r--posix/getconf.c57
-rw-r--r--posix/regcomp.c103
-rw-r--r--posix/regex.h114
-rw-r--r--posix/regex_internal.c2
-rw-r--r--posix/regex_internal.h76
-rw-r--r--posix/regexec.c105
-rw-r--r--posix/sys/wait.h11
-rw-r--r--posix/tst-rfc3484.c98
-rw-r--r--scripts/begin-end-check.pl47
-rw-r--r--stdio-common/Makefile3
-rw-r--r--stdio-common/tst-fgets.c20
-rw-r--r--stdio-common/tst-fwrite.c70
-rw-r--r--stdlib/Depend1
-rw-r--r--stdlib/Makefile2
-rw-r--r--stdlib/bug-strtod2.c46
-rw-r--r--stdlib/cxa_atexit.c61
-rw-r--r--stdlib/stdlib.h2
-rw-r--r--stdlib/strtod_l.c14
-rw-r--r--sysdeps/alpha/ldiv.S2
-rw-r--r--sysdeps/generic/fdopendir.c (renamed from sysdeps/unix/sysv/i386/sigreturn.S)22
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps16
-rw-r--r--sysdeps/posix/getaddrinfo.c29
-rw-r--r--sysdeps/posix/spawni.c12
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps18
-rw-r--r--sysdeps/powerpc/nofpu/Dist3
-rw-r--r--sysdeps/powerpc/nofpu/Makefile9
-rw-r--r--sysdeps/powerpc/nofpu/Versions13
-rw-r--r--sysdeps/powerpc/nofpu/fclrexcpt.c37
-rw-r--r--sysdeps/powerpc/nofpu/fedisblxcpt.c33
-rw-r--r--sysdeps/powerpc/nofpu/fegetenv.c49
-rw-r--r--sysdeps/powerpc/nofpu/feholdexcpt.c43
-rw-r--r--sysdeps/powerpc/nofpu/fenv_const.c35
-rw-r--r--sysdeps/powerpc/nofpu/fesetenv.c48
-rw-r--r--sysdeps/powerpc/nofpu/feupdateenv.c50
-rw-r--r--sysdeps/powerpc/nofpu/fgetexcptflg.c38
-rw-r--r--sysdeps/powerpc/nofpu/fraiseexcpt.c46
-rw-r--r--sysdeps/powerpc/nofpu/fsetexcptflg.c40
-rw-r--r--sysdeps/powerpc/nofpu/ftestexcept.c28
-rw-r--r--sysdeps/powerpc/nofpu/libm-test-ulps890
-rw-r--r--sysdeps/powerpc/nofpu/sim-full.c45
-rw-r--r--sysdeps/powerpc/nofpu/soft-supp.h37
-rw-r--r--sysdeps/unix/alpha/sysdep.h63
-rw-r--r--sysdeps/unix/fdopendir.c (renamed from sysdeps/powerpc/nofpu/feenablxcpt.c)33
-rw-r--r--sysdeps/unix/opendir.c33
-rw-r--r--sysdeps/unix/sockatmark.c6
-rw-r--r--sysdeps/unix/sysv/i386/signal.S31
-rw-r--r--sysdeps/unix/sysv/linux/lddlibc4.c4
-rw-r--r--sysdeps/unix/sysv/linux/mips/brk.c5
-rw-r--r--sysdeps/unix/sysv/linux/mips/getpagesize.c1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S10
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/syscall.S31
-rw-r--r--timezone/zdump.c1
-rw-r--r--wcsmbs/Makefile2
-rw-r--r--wcsmbs/tst-mbrtowc2.c67
-rw-r--r--wctype/wctype.h3
269 files changed, 13626 insertions, 2402 deletions
diff --git a/BUGS b/BUGS
index 9ff95155ef..d0d5056ffc 100644
--- a/BUGS
+++ b/BUGS
@@ -1,7 +1,7 @@
List of known bugs (certainly very incomplete)
----------------------------------------------
-Time-stamp: <02/09/30 13:49:48 drepper>
+Time-stamp: <2005-09-23 13:25:42 drepper>
This following list contains those bugs which I'm aware of. Please
make sure that bugs you report are not listed here. If you can fix one
@@ -10,7 +10,7 @@ of these bugs/limitations I'll certainly be glad to receive a patch.
Another source of information about bugs is the problem data base of the
GNU project. There is an easy to use WWW interface available at
- http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl
+ http://sourceware.org/bugzilla/
I would appreciate it very much if you could verify the problem was not
reported before by looking through the database. To make the information
@@ -27,19 +27,9 @@ Severity: [ *] to [***]
[ **] Closing shared objects in statically linked binaries most of the
times leads to crashes during the dlopen(). Hard to fix.
-[ **] There are problems with signal handling when using LinuxThreads.
-
[ **] The RPC code is not 64 bit clean. This is getting slowly fixed
but expect incompatible changes on 64 bit platforms like Alpha.
-[ **] If a DSO is using implicitly libpthread and the application itself
- does not there is a name lookup problem. E.g., the function fork()
- will be found in the libc.so instead of libpthread since the thread
- library is behind the libc. To correct this problem it must *not*
- be relied on the currently still enabled handling of weak symbols
- in the dynamic linker. Instead explicit tests for the availability
- of the libpthread version are needed. [PR libc/2325]
-
[ *] The precision of the `sinhl' and/or `asinhl' function do not seem
to be the best.
diff --git a/ChangeLog b/ChangeLog
index fe2a06010b..ac0c43b789 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,500 @@
+2005-10-03 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/powerpc/nofpu: Directory removed, saved in ports repository.
+
+2005-09-30 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/regex.h: Pretty printing.
+ Clean up namespace a bit.
+
+2005-09-30 Jakub Jelinek <jakub@redhat.com>
+
+ * posix/regexec.c (update_cur_sifted_state, check_arrival,
+ check_arrival_add_next_nodes): Avoid using uninitialized variable.
+
+ * malloc/memusage.c (dest): Fix a bunch of warnings on 32-bit arches.
+
+ * sysdeps/i386/fpu/libm-test-ulps: Update for GCC 4.0.x.
+
+2005-09-29 Ulrich Drepper <drepper@redhat.com>
+
+ * iconvdata/Makefile (modules): Add IBM803, IBM901, IBM902, IBM921,
+ IBM1008, IBM1008_420, IBM1097, IBM1112, IBM1123, IBM1130, IBM1140,
+ IBM1141, IBM1142, IBM1143, IBM1144, IBM1145, IBM1146, IBM1147, IBM1148,
+ IBM1149, IBM1166, IBM1167, IBM4517, IBM4899, IBM4909, IBM4971,
+ IBM5347, IBM9030, IBM9066, IBM9448, IBM12712, IBM16804.
+ (distribute): Add ibm803.c, ibm803.h, ibm901.c, ibm901.h, ibm902.c,
+ ibm902.h, ibm921.c, ibm921.h, ibm1008.c, ibm1008.h, ibm1008_420.c,
+ ibm1097.c, ibm1097.h, ibm1112.c, ibm1112.h, ibm1123.c, ibm1123.h,
+ ibm1130.c, ibm1130.h, ibm1140.c, ibm1140.h, ibm1141.c, ibm1141.h,
+ ibm1142.c, ibm1142.h, ibm1143.c, ibm1143.h, ibm1144.c, ibm1144.h,
+ ibm1145.c, ibm1145.h, ibm1146.c, ibm1146.h, ibm1147.c, ibm1147.h,
+ ibm1148.c, ibm1148.h, ibm1149.c, ibm1149.h, ibm1166.c, ibm1166.h,
+ ibm1167.c, ibm1167.h, ibm4517.c, ibm4517.h, ibm4899.c, ibm4899.h,
+ ibm4909.c, ibm4909.h, ibm4971.c, ibm4971.h, ibm5347.c, ibm5347.h,
+ ibm9030.c, ibm9030.h, ibm9066.c, ibm9066.h, ibm9448.c, ibm9448.h,
+ ibm12712.c, ibm12712.h, ibm16804.c, ibm16804.h.
+ * iconvdata/TESTS: Add entries for new modules.
+ * iconvdata/gconv-modules: Likewise.
+ * iconvdata/ibm803.c: New file.
+ * iconvdata/ibm803.h: New file.
+ * iconvdata/ibm901.c: New file.
+ * iconvdata/ibm901.h: New file.
+ * iconvdata/ibm902.c: New file.
+ * iconvdata/ibm902.h: New file.
+ * iconvdata/ibm921.c: New file.
+ * iconvdata/ibm921.h: New file.
+ * iconvdata/ibm1008.c: New file.
+ * iconvdata/ibm1008.h: New file.
+ * iconvdata/ibm1008_420.c: New file.
+ * iconvdata/ibm1097.c: New file.
+ * iconvdata/ibm1097.h: New file.
+ * iconvdata/ibm1112.c: New file.
+ * iconvdata/ibm1112.h: New file.
+ * iconvdata/ibm1123.c: New file.
+ * iconvdata/ibm1123.h: New file.
+ * iconvdata/ibm1130.c: New file.
+ * iconvdata/ibm1130.h: New file.
+ * iconvdata/ibm1140.c: New file.
+ * iconvdata/ibm1140.h: New file.
+ * iconvdata/ibm1141.c: New file.
+ * iconvdata/ibm1141.h: New file.
+ * iconvdata/ibm1142.c: New file.
+ * iconvdata/ibm1142.h: New file.
+ * iconvdata/ibm1143.c: New file.
+ * iconvdata/ibm1143.h: New file.
+ * iconvdata/ibm1144.c: New file.
+ * iconvdata/ibm1144.h: New file.
+ * iconvdata/ibm1145.c: New file.
+ * iconvdata/ibm1145.h: New file.
+ * iconvdata/ibm1146.c: New file.
+ * iconvdata/ibm1146.h: New file.
+ * iconvdata/ibm1147.c: New file.
+ * iconvdata/ibm1147.h: New file.
+ * iconvdata/ibm1148.c: New file.
+ * iconvdata/ibm1148.h: New file.
+ * iconvdata/ibm1149.c: New file.
+ * iconvdata/ibm1149.h: New file.
+ * iconvdata/ibm1166.c: New file.
+ * iconvdata/ibm1166.h: New file.
+ * iconvdata/ibm1167.c: New file.
+ * iconvdata/ibm1167.h: New file.
+ * iconvdata/ibm4517.c: New file.
+ * iconvdata/ibm4517.h: New file.
+ * iconvdata/ibm4899.c: New file.
+ * iconvdata/ibm4899.h: New file.
+ * iconvdata/ibm4909.c: New file.
+ * iconvdata/ibm4909.h: New file.
+ * iconvdata/ibm4971.c: New file.
+ * iconvdata/ibm4971.h: New file.
+ * iconvdata/ibm5347.c: New file.
+ * iconvdata/ibm5347.h: New file.
+ * iconvdata/ibm9030.c: New file.
+ * iconvdata/ibm9030.h: New file.
+ * iconvdata/ibm9066.c: New file.
+ * iconvdata/ibm9066.h: New file.
+ * iconvdata/ibm9448.c: New file.
+ * iconvdata/ibm9448.h: New file.
+ * iconvdata/ibm12712.c: New file.
+ * iconvdata/ibm12712.h: New file.
+ * iconvdata/ibm16804.c: New file.
+ * iconvdata/ibm16804.h: New file.
+ * iconvdata/testdata/IBM803: New file.
+ * iconvdata/testdata/IBM803..UTF8: New file.
+ * iconvdata/testdata/IBM901: New file.
+ * iconvdata/testdata/IBM901..UTF8: New file.
+ * iconvdata/testdata/IBM902: New file.
+ * iconvdata/testdata/IBM902..UTF8: New file.
+ * iconvdata/testdata/IBM921: New file.
+ * iconvdata/testdata/IBM921..UTF8: New file.
+ * iconvdata/testdata/IBM1008: New file.
+ * iconvdata/testdata/IBM1008..UTF8: New file.
+ * iconvdata/testdata/IBM1097: New file.
+ * iconvdata/testdata/IBM1097..UTF8: New file.
+ * iconvdata/testdata/IBM1112: New file.
+ * iconvdata/testdata/IBM1112..UTF8: New file.
+ * iconvdata/testdata/IBM1123: New file.
+ * iconvdata/testdata/IBM1123..UTF8: New file.
+ * iconvdata/testdata/IBM1130: New file.
+ * iconvdata/testdata/IBM1130..UTF8: New file.
+ * iconvdata/testdata/IBM1140: New file.
+ * iconvdata/testdata/IBM1140..UTF8: New file.
+ * iconvdata/testdata/IBM1141: New file.
+ * iconvdata/testdata/IBM1141..UTF8: New file.
+ * iconvdata/testdata/IBM1142: New file.
+ * iconvdata/testdata/IBM1142..UTF8: New file.
+ * iconvdata/testdata/IBM1143: New file.
+ * iconvdata/testdata/IBM1143..UTF8: New file.
+ * iconvdata/testdata/IBM1144: New file.
+ * iconvdata/testdata/IBM1144..UTF8: New file.
+ * iconvdata/testdata/IBM1145: New file.
+ * iconvdata/testdata/IBM1145..UTF8: New file.
+ * iconvdata/testdata/IBM1146: New file.
+ * iconvdata/testdata/IBM1146..UTF8: New file.
+ * iconvdata/testdata/IBM1147: New file.
+ * iconvdata/testdata/IBM1147..UTF8: New file.
+ * iconvdata/testdata/IBM1148: New file.
+ * iconvdata/testdata/IBM1148..UTF8: New file.
+ * iconvdata/testdata/IBM1149: New file.
+ * iconvdata/testdata/IBM1149..UTF8: New file.
+ * iconvdata/testdata/IBM1166: New file.
+ * iconvdata/testdata/IBM1166..UTF8: New file.
+ * iconvdata/testdata/IBM1167: New file.
+ * iconvdata/testdata/IBM1167..UTF8: New file.
+ * iconvdata/testdata/IBM4517: New file.
+ * iconvdata/testdata/IBM4517..UTF8: New file.
+ * iconvdata/testdata/IBM4899: New file.
+ * iconvdata/testdata/IBM4899..UTF8: New file.
+ * iconvdata/testdata/IBM4909: New file.
+ * iconvdata/testdata/IBM4909..UTF8: New file.
+ * iconvdata/testdata/IBM4971: New file.
+ * iconvdata/testdata/IBM4971..UTF8: New file.
+ * iconvdata/testdata/IBM5347: New file.
+ * iconvdata/testdata/IBM5347..UTF8: New file.
+ * iconvdata/testdata/IBM9030: New file.
+ * iconvdata/testdata/IBM9030..UTF8: New file.
+ * iconvdata/testdata/IBM9066: New file.
+ * iconvdata/testdata/IBM9066..UTF8: New file.
+ * iconvdata/testdata/IBM9448: New file.
+ * iconvdata/testdata/IBM9448..UTF8: New file.
+ * iconvdata/testdata/IBM12712: New file.
+ * iconvdata/testdata/IBM12712..UTF8: New file.
+ * iconvdata/testdata/IBM16804: New file.
+ * iconvdata/testdata/IBM16804..UTF8: New file.
+ Patch by Masahide WASHIZAWA <washi@jp.ibm.com>.
+
+ * iconvdata/run-iconv-test.sh: Run ASCII->encoding->ASCII suntzus
+ test only if $subset is N.
+
+2005-09-29 Roland McGrath <roland@redhat.com>
+
+ [BZ #1392]
+ * posix/sys/wait.h [!__GNUC__ || __cplusplus] (__WAIT_INT): Use const.
+
+2005-09-29 Alfred M. Szmidt <ams@gnu.org>
+
+ * elf/rtld.c [DL_ARGV_NOT_RELRO] (_dl_argc, _dl_skip_args):
+ Don't use attribute_relro.
+
+2005-09-29 Roland McGrath <roland@redhat.com>
+
+ [BZ #1392]
+ * posix/sys/wait.h (__WAIT_INT): Rewrite using an initializer,
+ in case __typeof yields a const-qualified type.
+
+2005-09-28 Ulrich Drepper <drepper@redhat.com>
+
+ * dirent/dirent.h: Declare fdopendir.
+ * dirent/Versions: Export fdopendir for GLIBC_2.4.
+ * dirent/Makefile (routines): Add fdopendir.
+ (tests): Add tst-fdopendir.
+ * dirent/tst-fdopendir.c: New file.
+ * include/dirent.h: Declare __alloc_dir.
+ * sysdeps/generic/fdopendir.c: New file.
+ * sysdeps/unix/fdopendir.c: New file.
+ * sysdeps/unix/opendir.c: Split off back part of opendir into new
+ function __alloc_dir.
+
+2005-09-26 Steven Munroe <sjmunroe@us.ibm.com>
+
+ [BZ #1384]
+ * sysdeps/powerpc/fpu/libm-test-ulps: Adjust expected y1, y1f, yn,
+ ynf results.
+
+2005-09-06 Paul Eggert <eggert@cs.ucla.edu>
+ Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #1302]
+ Change bitset word type from unsigned int to unsigned long int,
+ as this has better performance on typical 64-bit hosts. Change
+ bitset type name to bitset_t.
+ * posix/regcomp.c (build_equiv_class, build_charclass):
+ (build_range_exp, build_collating_symbol):
+ Prefer bitset_t to re_bitset_ptr_t in prototypes, when the actual
+ argument is a bitset. This is merely a style issue, but it makes
+ it clearer that an entire array is expected.
+ (re_compile_fastmap_iter, init_dfa, init_word_char, optimize_subexps,
+ lower_subexp): Adjust for new bitset_t definition.
+ (lower_subexp, parse_bracket_exp, built_charclass_op): Likewise.
+ * posix/regex_internal.h (bitset_set, bitset_clear, bitset_contain,
+ bitset_not, bitset_merge, bitset_set_all, bitset_mask): Likewise.
+ * posix/regexec.c (check_dst_limits_calc_pos_1,
+ check_subexp_matching_top, build_trtable, group_nodes_into_DFAstates):
+ Likewise.
+ * posix/regcomp.c (utf8_sb_map): Don't assume initializer
+ == 0xffffffff.
+ * posix/regex_internal.h (BITSET_WORD_BITS): Renamed from UINT_BITS.
+ All uses changed.
+ (BITSET_WORDS): Renamed from BITSET_UINTS. All uses changed.
+ (bitset_word_t): New type, replacing 'unsigned int' for bitset uses.
+ All uses changed.
+ (BITSET_WORD_MAX): New macro.
+ (bitset_set, bitset_clear, bitset_contain, bitset_empty,
+ (bitset_set_all, bitset_copy): Adjust for bitset_t change.
+ (bitset_empty, bitset_copy):
+ Prefer sizeof (bitset_t) to multiplying it out ourselves.
+ (bitset_not_merge): Remove; unused.
+ (bitset_contain): Return bool, not unsigned int with one bit on.
+ All callers changed.
+ * posix/regexec.c (build_trtable): Don't assume bitset_t has no
+ stricter alignment than re_node_set; do this by defining a new
+ internal type struct dests_alloc and using it to allocate memory.
+
+2005-09-27 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #1230]
+ * stdlib/strtod_l.c (STRNCASECMP): Always use C locale object.
+ (TOLOWER_C): Define. Use it when recognizing inf and nan.
+ * stdlib/Makefile (tests): Add bug-strtod2.
+ * stdlib/bug-strtod2.c: New file.
+
+2005-09-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ [BZ #1361]
+ * argp/argp-fmtstream.h [HAVE_CONFIG_H]: Do not #include <config.h>.
+ * argp/argp-eexst.c, argp/argp-fmtstream.c, argp/argp-fs-xinl.c,
+ argp/argp-xinl.c: Fix up whitespace.
+
+2005-09-27 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #1158]
+ * stdlib/cxa_atexit.c (__new_exitfn): Rewrite to preserve order in
+ which the functions were registered.
+ * dlfcn/Makefile: Add rules to build and run bug-atexit1 and
+ bug-atexit2.
+ * dlfcn/bug-atexit1.c: New file.
+ * dlfcn/bug-atexit1-lib.c: New file.
+ * dlfcn/bug-atexit2.c: New file.
+ * dlfcn/bug-atexit2-lib.c: New file.
+
+ [BZ #1078]
+ * libio/fileops.c (_IO_new_file_xsputn): Determine amount of
+ available space in non-line-buffered buffer correctly.
+ * libio/oldfileops.c (_IO_old_file_xsputn): Likewise.
+ * stdio-common/Makefile (tests): Add tst-fwrite.
+ * stdio-common/tst-fwrite.c: New file.
+
+2005-09-26 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #838]
+ * malloc/arena.c (ptmalloc_lock_all): If global lock already taken
+ by the same thread, just bump the counter.
+ (ptmalloc_unlock_all): If counter for recursive locks hasn't reached
+ zero, don't do anything else.
+ * malloc/Makefile (tests): Add tst-mallocfork.
+ * malloc/tst-mallocfork.c: New file.
+
+ [BZ #808]
+ * malloc/malloc.c (_int_realloc): Make error message clearer.
+
+ [BZ #713]
+ * libio/iofgets.c: Treat N==1 correctly.
+ * libio/iofgets_u.c: Likewise.
+ * libio/iofgetws.c: Likewise.
+ * libio/iofgetws_u.c: Likewise.
+ * stdio-common/Makefile (tests): Add tst-fgets.
+ * stdio-common/tst-fgets.c: New file.
+
+2005-01-11 Thorsten Kukuk <kukuk@suse.de>
+
+ [BZ #652]
+ * posix/getconf.c: Add new option -a to print the names of
+ the current system configuration variables to stdout.
+ Based on patch from Josh Aas <josha@sgi.com>.
+
+2005-09-26 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #644]
+ * sysdeps/posix/getaddrinfo.c (fls): New function.
+ (gaih_inet): Don't use ffs, use fls. Convert address to native byte
+ order first.
+ * posix/Makefile (tests): Add tst-rfc3484.
+ * posix/tst-rfc3484.c: New file.
+
+ [BZ #627]
+ * libio/iofclose.c (_IO_new_fclose): Unlock the internal lock
+ before destroying it as part of the _IO_FINISH call.
+ * libio/oldiofclose.c (_IO_old_fclose): Likewise.
+
+ [BZ #524]
+ * sysdeps/posix/getaddrinfo.c (match_prefix): Fix matching loop if
+ number of bits is multiple of 8.
+ Patch by Fredrik Tolf <fredrik@dolda2000.com>.
+
+ [BZ #516]
+ * elf/dl-load.c: Report failed loading due to ELF class mismatch
+ with better words.
+
+ [BZ #162]
+ * manual/llio.texi (Waiting for I/O): Correct description of read
+ conditions reported by select.
+
+2005-09-24 Jakub Jelinek <jakub@redhat.com>
+
+ * inet/getnetgrent_r.c (innetgr): Call endfct even if result != 0.
+ Return 1 only if result == 1. Patch by Benoit Capelle.
+
+2005-09-25 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #278]
+ * manual/stdio.texi (Hook Functions): Correct type of position
+ parameter of seeker and fix fallout of the change in the text.
+
+ [BZ #714]
+ * iconv/loop.c [!STORE_REST] (SINGLE): Correctly record number of
+ left-over bytes and store them correctly.
+ * wcsmbs/tst-mbrtowc2.c: New file.
+ * wcsmbs/Makefile (tests): Add tst-mbrtowc2.
+
+2005-09-24 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/unix/sysv/i386/signal.S: Removed, saved in ports repository.
+ * sysdeps/unix/sysv/i386/sigreturn.S: Likewise.
+
+2005-09-24 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #545]
+ * locale/iso-639.def: More updates from the current spec.
+
+ * locale/programs/ld-address.c (address_finish): Produce better
+ error messages for invalid lang_ab use.
+
+ * locale/iso-639.def: Add a few updates from current spec.
+
+2005-09-23 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #704]
+ * locale/iso-4217.def: Replace MGF with MGA.
+
+ * iconvdata/jis0208.c (__jisx0208_from_ucs4_lat1): Reduce size of
+ array.
+ * iconvdata/jis0208.h (ucs4_to_jisx0208): Adjust access.
+
+2004-08-13 GOTO Masanori <gotom@debian.or.jp>
+
+ [BZ #395]
+ * iconvdata/jis0208.c: Remove 0x005C mapping from
+ __jisx0208_from_ucs4_lat1.
+ Reported by Fumitoshi UKAI <ukai@debian.or.jp>
+
+2005-09-23 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #394]
+ * libio/fmemopen.c (fmemopen_write): Return 0 instead of -1 if
+ nothing can be written.
+ * libio/iofopncook.c (_IO_cookie_write): If something went wrong,
+ set error bit.
+
+2005-09-22 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #281]
+ * posix/regex.h: Define RE_TRANSLATE_TYPE as unsigned char *.
+ * posix/regcomp.c: Remove unnecessary uses of
+ unsigned RE_TRANSLATE_TYPE.
+ * posix/regex_internal.h: Likewise.
+ * posix/regex_internal.c: Likewise.
+ * posix/regexexec.c: Likewise.
+ Based on a patch by Stepan Kasal <kasal@ucw.cz>.
+
+ [BZ #1035]
+ * locale/iso-4217.def: Replace TRL entry with TRY for new Turkish Lira.
+
+ [BZ #1363]
+ * nscd/nscd_getpw_r.c (nscd_getpw_r): Remove incorrectly C&Ped
+ free call in code handling detection of GC runs.
+
+2005-09-22 Roland McGrath <roland@redhat.com>
+
+ * elf/dl-tsd.c (__libc_dl_error_tsd): Use attribute_tls_model_ie for
+ static __thread variable.
+ From Alexandre Oliva <aoliva@redhat.com>
+
+ * Makefile ($(objpfx)c++-types-check.out): Use $<, not $^, in command.
+ Reported by Alexandre Oliva <aoliva@redhat.com>.
+
+2005-09-20 Jakub Jelinek <jakub@redhat.com>
+
+ * nscd/dbg_log.c (init_logfile): Use fopen64 rather than fopen.
+
+2005-09-20 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/unix/sysv/linux/lddlibc4.c (main): Use execv, not execl.
+
+ [BZ #1346]
+ * elf/dl-load.c (_dl_map_object_from_fd) [HAVE_Z_RELRO]: Do relro
+ magic on __stack_prot only if [SHARED]. Skip mprotect if __stack_prot
+ lies outside the page-rounded-down relro region.
+
+2005-09-19 Richard Henderson <rth@redhat.com>
+
+ [BZ #1358]
+ * sysdeps/unix/alpha/sysdep.h (inline_syscall1): Copy argument(s)
+ to a temporary first.
+ (inline_syscall2, inline_syscall3, inline_syscall4): Likewise.
+ (inline_syscall5, inline_syscall6): Likewise.
+
+ * sysdeps/alpha/ldiv.S (lldiv): Add alias.
+
+2005-09-17 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #1010]
+ * sysdeps/unix/sockatmark.c (sockatmark): Use SIOCATMARK correctly.
+
+ [BZ #1053]
+ * debug/xtrace.sh: Add missing escape character in -? match.
+ Patch by Peter Breitenlohner <peb@mppmu.mpg.de>.
+
+ [BZ #1051]
+ * wctype/wctype.h: Remove stray __END_NAMESPACE_C99.
+ * stdlib/stdlib.h: Use __END_NAMESPACE_STD instead of
+ __END_NAMESPACE_C99 in one place.
+ * scripts/begin-end-check.pl: New file.
+ Patch by Ralph Loader <suckfish@ihug.co.nz>.
+ * Makefile: Add rules to run scripts/begin-end-check.pl.
+
+2005-09-17 Andreas Jaeger <aj@suse.de>
+
+ * timezone/zdump.c: Include ctype.h.
+
+2005-09-16 Andreas Jaeger <aj@suse.de>
+
+ [BZ #1047]
+ * sysdeps/unix/sysv/linux/mips/getpagesize.c: New file.
+
+2005-09-16 Maciej W. Rozycki <macro@linux-mips.org>
+
+ [BZ #933]
+ * sysdeps/unix/sysv/linux/mips/brk.c (__brk): Load the number of
+ the syscall immediately before invocation.
+ * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S (__ioctl): Likewise.
+ * sysdeps/unix/sysv/linux/mips/mips64/syscall.S (syscall): Likewise.
+
+ * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S (__ioctl): Use
+ macros to handle GP.
+ * sysdeps/unix/sysv/linux/mips/mips64/syscall.S (syscall):
+ Likewise. Update inaccurate comments.
+
+2005-09-13 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/posix/spawni.c (__spawni): Automatically recognize some
+ more cases when we can use vfork.
+
+2005-08-29 Thomas Schwinge <schwinge@nic-nac-project.de>
+
+ [BZ #1261]
+ * manual/memory.texi (Hooks for Malloc): Correct prototype of
+ my_init_hook and definition of my_free_hook.
+
+2005-09-12 Roland McGrath <roland@redhat.com>
+
+ [BZ #1331]
+ * malloc/obstack.h [!__STDC__] (obstack_int_grow_fast): Fix misnamed
+ macro argument.
+ Reported by Matej Vela <vela@debian.org>.
+
2005-09-12 Jakub Jelinek <jakub@redhat.com>
- * malloc.c (struct malloc_chunk): Fix comment typo.
+ * malloc/malloc.c (struct malloc_chunk): Fix comment typo.
(public_cALLOc): For mmapped chunks and perturb_byte != 0,
don't clear SIZE_SZ bytes more than should be cleared.
diff --git a/Makefile b/Makefile
index 734687cf3d..f2d0b1bed0 100644
--- a/Makefile
+++ b/Makefile
@@ -241,8 +241,8 @@ check-data := $(firstword $(wildcard \
$(foreach M,$(config-machine) $(base-machine),\
scripts/data/c++-types-$M-$(config-os).data)))
ifneq (,$(check-data))
-$(objpfx)c++-types-check.out: $(check-data)
- scripts/check-c++-types.sh $^ $(CXX) $(filter-out -std=gnu99 -Wstrict-prototypes,$(CFLAGS)) $(CPPFLAGS) > $@
+$(objpfx)c++-types-check.out: $(check-data) scripts/check-c++-types.sh
+ scripts/check-c++-types.sh $< $(CXX) $(filter-out -std=gnu99 -Wstrict-prototypes,$(CFLAGS)) $(CPPFLAGS) > $@
else
$(objpfx)c++-types-check.out:
@echo 'WARNING C++ tests not run; create a c++-types-XXX file'
@@ -250,6 +250,56 @@ $(objpfx)c++-types-check.out:
endif
endif
+ifneq ($(PERL),no)
+installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
+ crypt/crypt.h ctype/ctype.h debug/execinfo.h \
+ dirent/dirent.h dlfcn/dlfcn.h elf/elf.h elf/link.h \
+ gmon/sys/gmon.h gmon/sys/gmon_out.h gmon/sys/profil.h \
+ grp/grp.h iconv/iconv.h iconv/gconv.h \
+ $(wildcard inet/netinet/*.h) \
+ $(wildcard inet/arpa/*.h inet/protocols/*.h) \
+ inet/aliases.h inet/ifaddrs.h inet/netinet/ip6.h \
+ inet/netinet/icmp6.h intl/libintl.h io/sys/stat.h \
+ io/sys/statfs.h io/sys/vfs.h io/sys/statvfs.h \
+ io/fcntl.h io/sys/fcntl.h io/poll.h io/sys/poll.h \
+ io/utime.h io/ftw.h io/fts.h io/sys/sendfile.h \
+ libio/stdio.h libio/libio.h locale/locale.h \
+ locale/langinfo.h locale/xlocale.h login/utmp.h \
+ login/lastlog.h login/pty.h malloc/malloc.h \
+ malloc/obstack.h malloc/mcheck.h math/math.h \
+ math/complex.h math/fenv.h math/tgmath.h misc/sys/uio.h \
+ $(wildcard nis/rpcsvc/*.h) nptl_db/thread_db.h \
+ nptl/sysdeps/pthread/pthread.h nptl/semaphore.h \
+ nss/nss.h posix/sys/utsname.h posix/sys/times.h \
+ posix/sys/wait.h posix/sys/types.h posix/unistd.h \
+ posix/glob.h posix/regex.h posix/wordexp.h posix/fnmatch.h\
+ posix/getopt.h posix/tar.h posix/sys/unistd.h \
+ posix/sched.h posix/re_comp.h posix/wait.h \
+ posix/cpio.h posix/spawn.h pwd/pwd.h resolv/resolv.h \
+ resolv/netdb.h $(wildcard resolv/arpa/*.h) \
+ resource/sys/resource.h resource/sys/vlimit.h \
+ resource/sys/vtimes.h resource/ulimit.h rt/aio.h \
+ rt/mqueue.h setjmp/setjmp.h shadow/shadow.h \
+ signal/signal.h signal/sys/signal.h socket/sys/socket.h \
+ socket/sys/un.h stdio-common/printf.h \
+ stdio-common/stdio_ext.h stdlib/stdlib.h stdlib/alloca.h \
+ stdlib/monetary.h stdlib/fmtmsg.h stdlib/ucontext.h \
+ sysdeps/generic/inttypes.h sysdeps/generic/stdint.h \
+ stdlib/errno.h stdlib/sys/errno.h string/string.h \
+ string/strings.h string/memory.h string/endian.h \
+ string/argz.h string/envz.h string/byteswap.h \
+ $(wildcard sunrpc/rpc/*.h sunrpc/rpcsvc/*.h) \
+ sysvipc/sys/ipc.h sysvipc/sys/msg.h sysvipc/sys/sem.h \
+ sysvipc/sys/shm.h termios/termios.h \
+ termios/sys/termios.h termios/sys/ttychars.h time/time.h \
+ time/sys/time.h time/sys/timeb.h wcsmbs/wchar.h \
+ wctype/wctype.h
+
+tests: $(objpfx)begin-end-check.out
+$(objpfx)begin-end-check.out: scripts/begin-end-check.pl
+ $(PERL) scripts/begin-end-check.pl $(installed-headers) > $@
+endif
+
# The realclean target is just like distclean for the parent, but we want
# the subdirs to know the difference in case they care.
realclean distclean: parent-clean
diff --git a/argp/argp-eexst.c b/argp/argp-eexst.c
index 151f89a1c0..84df089e03 100644
--- a/argp/argp-eexst.c
+++ b/argp/argp-eexst.c
@@ -19,7 +19,7 @@
02111-1307 USA. */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#include <sysexits.h>
diff --git a/argp/argp-fmtstream.c b/argp/argp-fmtstream.c
index 1004e6762a..55ac7f9183 100644
--- a/argp/argp-fmtstream.c
+++ b/argp/argp-fmtstream.c
@@ -22,7 +22,7 @@
don't have that. */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#include <stdlib.h>
diff --git a/argp/argp-fmtstream.h b/argp/argp-fmtstream.h
index 5d0d5eac92..f94207a20b 100644
--- a/argp/argp-fmtstream.h
+++ b/argp/argp-fmtstream.h
@@ -26,10 +26,6 @@
#ifndef _ARGP_FMTSTREAM_H
#define _ARGP_FMTSTREAM_H
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include <string.h>
#include <unistd.h>
diff --git a/argp/argp-fs-xinl.c b/argp/argp-fs-xinl.c
index 3cf1f9827d..442ffa05d1 100644
--- a/argp/argp-fs-xinl.c
+++ b/argp/argp-fs-xinl.c
@@ -19,7 +19,7 @@
02111-1307 USA. */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#define ARGP_FS_EI
diff --git a/argp/argp-xinl.c b/argp/argp-xinl.c
index 73177585e8..7913b061ac 100644
--- a/argp/argp-xinl.c
+++ b/argp/argp-xinl.c
@@ -19,7 +19,7 @@
02111-1307 USA. */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#if defined _LIBC || defined HAVE_FEATURES_H
diff --git a/debug/xtrace.sh b/debug/xtrace.sh
index 811d6ba9a6..077b58bd1f 100755
--- a/debug/xtrace.sh
+++ b/debug/xtrace.sh
@@ -107,7 +107,7 @@ while test $# -gt 0; do
--d=* | --da=* | --dat=* | --data=*)
data=${1##*=}
;;
- -? | --h | --he | --hel | --help)
+ -\? | --h | --he | --hel | --help)
do_help
;;
-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
diff --git a/dirent/Makefile b/dirent/Makefile
index df150bcedc..ba492ca781 100644
--- a/dirent/Makefile
+++ b/dirent/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2000, 2002, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1991-2000, 2002, 2003, 2005 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
@@ -25,10 +25,10 @@ headers := dirent.h bits/dirent.h
routines := opendir closedir readdir readdir_r rewinddir \
seekdir telldir scandir alphasort versionsort \
getdents getdents64 dirfd readdir64 readdir64_r scandir64 \
- alphasort64 versionsort64
+ alphasort64 versionsort64 fdopendir
distribute := dirstream.h
-tests := list tst-seekdir opendir-tst1 bug-readdir1
+tests := list tst-seekdir opendir-tst1 bug-readdir1 tst-fdopendir
CFLAGS-scandir.c = $(uses-callbacks)
CFLAGS-scandir64.c = $(uses-callbacks)
diff --git a/dirent/Versions b/dirent/Versions
index 9d96caeb36..41c1584426 100644
--- a/dirent/Versions
+++ b/dirent/Versions
@@ -41,4 +41,7 @@ libc {
# g*
getdirentries64;
}
+ GLIBC_2.4 {
+ fdopendir;
+ }
}
diff --git a/dirent/dirent.h b/dirent/dirent.h
index a5e8a004e2..ed4147dbca 100644
--- a/dirent/dirent.h
+++ b/dirent/dirent.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2000, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2000, 2003, 2004, 2005 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
@@ -134,6 +134,14 @@ typedef struct __dirstream DIR;
marked with __THROW. */
extern DIR *opendir (__const char *__name) __nonnull ((1));
+#ifdef __USE_GNU
+/* Same as opendir, but open the stream on the file descriptor FD.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern DIR *fdopendir (int __fd);
+#endif
+
/* Close the directory stream DIRP.
Return 0 if successful, -1 if not.
diff --git a/dirent/tst-fdopendir.c b/dirent/tst-fdopendir.c
new file mode 100644
index 0000000000..3cf315d85c
--- /dev/null
+++ b/dirent/tst-fdopendir.c
@@ -0,0 +1,124 @@
+#include <stdio.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <stdbool.h>
+#include <string.h>
+
+
+static int
+do_test (void)
+{
+ char fname[] = "/tmp/jXXXXXX";
+ int fd = mkstemp (fname);
+ if (fd == -1)
+ {
+ puts ("mkstemp failed");
+ return 1;
+ }
+
+ write (fd, "hello", 5);
+ close (fd);
+
+ struct stat64 st;
+ if (stat64 (fname, &st) == -1)
+ {
+ puts ("first stat failed");
+ return 0;
+ }
+
+ /* Make sure there is enough time between the creation and the access. */
+ sleep (2);
+
+ fd = open (fname, O_RDONLY | O_NOATIME);
+ if (fd == -1)
+ {
+ puts ("first open failed");
+ return 1;
+ }
+
+ char buf[5];
+ read(fd, buf, sizeof (buf));
+ close(fd);
+
+ struct stat64 st2;
+ if (stat64 (fname, &st2) == -1)
+ {
+ puts ("second stat failed");
+ return 0;
+ }
+
+ bool no_noatime = false;
+#ifdef _STATBUF_ST_NSEC
+ if (st.st_atim.tv_sec != st2.st_atim.tv_sec
+ || st.st_atim.tv_nsec != st2.st_atim.tv_nsec)
+#else
+ if (st.st_atime != st2.st_atime)
+#endif
+ {
+ puts ("file atime changed");
+ no_noatime = true;
+ }
+
+ unlink(fname);
+
+ strcpy(fname, "/tmp/dXXXXXX");
+ char *d = mkdtemp (fname);
+ if (d == NULL)
+ {
+ puts ("mkdtemp failed");
+ return 1;
+ }
+
+ if (stat64 (d, &st) == -1)
+ {
+ puts ("third stat failed");
+ return 0;
+ }
+ sleep (2);
+
+ fd = open64 (d, O_RDONLY|O_NDELAY|O_DIRECTORY|O_NOATIME);
+ if (fd == -1)
+ {
+ puts ("second open failed");
+ return 1;
+ }
+ DIR *dir = fdopendir (fd);
+ if (dir == NULL)
+ {
+ puts ("fdopendir failed");
+ return 1;
+ }
+
+ struct dirent *de;
+ while ((de = readdir (dir)) != NULL)
+ ;
+
+ closedir (dir);
+
+ if (stat64 (d, &st2) == -1)
+ {
+ puts ("fourth stat failed");
+ return 0;
+ }
+#ifdef _STATBUF_ST_NSEC
+ if (!no_noatime
+ && (st.st_atim.tv_sec != st2.st_atim.tv_sec
+ || st.st_atim.tv_nsec != st2.st_atim.tv_nsec))
+#else
+ if (!no_noatime && st.st_atime != st2.st_atime)
+#endif
+ {
+ puts ("directory atime changed");
+ return 1;
+ }
+
+ rmdir(fname);
+
+ return 0;
+}
+
+#define TIMEOUT 6
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index 7b538fed2b..3f1a8fa6ae 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1995-2002, 2003, 2004, 2005 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
@@ -26,7 +26,8 @@ elide-routines.os := $(routines)
distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c \
defaultmod1.c defaultmod2.c errmsg1mod.c modatexit.c \
modcxaatexit.c modstatic.c modstatic2.c \
- bug-dlsym1-lib1.c bug-dlsym1-lib2.c
+ bug-dlsym1-lib1.c bug-dlsym1-lib2.c bug-atexit1-lib.c \
+ bug-atexit2-lib.c
extra-libs-others := libdl
@@ -39,14 +40,15 @@ endif
ifeq (yes,$(build-shared))
tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
- bug-dlopen1 bug-dlsym1 tst-dlinfo
+ bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2
ifeq (yes,$(have-protected))
tests += tstatexit
endif
endif
modules-names = glreflib1 glreflib2 failtestmod defaultmod1 defaultmod2 \
errmsg1mod modatexit modcxaatexit \
- bug-dlsym1-lib1 bug-dlsym1-lib2
+ bug-dlsym1-lib1 bug-dlsym1-lib2 bug-atexit1-lib \
+ bug-atexit2-lib
failtestmod.so-no-z-defs = yes
glreflib2.so-no-z-defs = yes
@@ -125,6 +127,15 @@ $(objpfx)bug-dlsym1-lib1.so: $(objpfx)bug-dlsym1-lib2.so \
$(objpfx)bug-dlsym1-lib2.so: $(common-objpfx)libc.so \
$(common-objpfx)libc_nonshared.a
+$(objpfx)bug-atexit1: $(libdl)
+$(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so
+$(objpfx)bug-atexit1-lib.so: $(common-objpfx)libc.so \
+ $(common-objpfx)libc_nonshared.a
+
+$(objpfx)bug-atexit2: $(libdl)
+$(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
+$(objpfx)bug-atexit2-lib.so: $(common-objpfx)libc.so \
+ $(common-objpfx)libc_nonshared.a
# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
diff --git a/dlfcn/bug-atexit1-lib.c b/dlfcn/bug-atexit1-lib.c
new file mode 100644
index 0000000000..715bb40b23
--- /dev/null
+++ b/dlfcn/bug-atexit1-lib.c
@@ -0,0 +1,375 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int next;
+
+void
+f00 (void)
+{
+ puts ("f00");
+ if (next-- != 0)
+ _exit (1);
+}
+
+void
+f01 (void)
+{
+ puts ("f01");
+ if (next-- != 1)
+ _exit (1);
+}
+
+void
+f02 (void)
+{
+ puts ("f02");
+ if (next-- != 2)
+ _exit (1);
+}
+
+void
+f03 (void)
+{
+ puts ("f03");
+ if (next-- != 3)
+ _exit (1);
+}
+
+void
+f04 (void)
+{
+ puts ("f04");
+ if (next-- != 4)
+ _exit (1);
+}
+
+void
+f05 (void)
+{
+ puts ("f05");
+ if (next-- != 5)
+ _exit (1);
+}
+
+void
+f06 (void)
+{
+ puts ("f06");
+ if (next-- != 6)
+ _exit (1);
+}
+
+void
+f07 (void)
+{
+ puts ("f07");
+ if (next-- != 7)
+ _exit (1);
+}
+
+void
+f08 (void)
+{
+ puts ("f08");
+ if (next-- != 8)
+ _exit (1);
+}
+
+void
+f09 (void)
+{
+ puts ("f09");
+ if (next-- != 9)
+ _exit (1);
+}
+
+void
+f10 (void)
+{
+ puts ("f10");
+ if (next-- != 10)
+ _exit (1);
+}
+
+void
+f11 (void)
+{
+ puts ("f11");
+ if (next-- != 11)
+ _exit (1);
+}
+
+void
+f12 (void)
+{
+ puts ("f12");
+ if (next-- != 12)
+ _exit (1);
+}
+
+void
+f13 (void)
+{
+ puts ("f13");
+ if (next-- != 13)
+ _exit (1);
+}
+
+void
+f14 (void)
+{
+ puts ("f14");
+ if (next-- != 14)
+ _exit (1);
+}
+
+void
+f15 (void)
+{
+ puts ("f15");
+ if (next-- != 15)
+ _exit (1);
+}
+
+void
+f16 (void)
+{
+ puts ("f16");
+ if (next-- != 16)
+ _exit (1);
+}
+
+void
+f17 (void)
+{
+ puts ("f17");
+ if (next-- != 17)
+ _exit (1);
+}
+
+void
+f18 (void)
+{
+ puts ("f18");
+ if (next-- != 18)
+ _exit (1);
+}
+
+void
+f19 (void)
+{
+ puts ("f19");
+ if (next-- != 19)
+ _exit (1);
+}
+
+void
+f20 (void)
+{
+ puts ("f20");
+ if (next-- != 20)
+ _exit (1);
+}
+
+void
+f21 (void)
+{
+ puts ("f21");
+ if (next-- != 21)
+ _exit (1);
+}
+
+void
+f22 (void)
+{
+ puts ("f22");
+ if (next-- != 22)
+ _exit (1);
+}
+
+void
+f23 (void)
+{
+ puts ("f23");
+ if (next-- != 23)
+ _exit (1);
+}
+
+void
+f24 (void)
+{
+ puts ("f24");
+ if (next-- != 24)
+ _exit (1);
+}
+
+void
+f25 (void)
+{
+ puts ("f25");
+ if (next-- != 25)
+ _exit (1);
+}
+
+void
+f26 (void)
+{
+ puts ("f26");
+ if (next-- != 26)
+ _exit (1);
+}
+
+void
+f27 (void)
+{
+ puts ("f27");
+ if (next-- != 27)
+ _exit (1);
+}
+
+void
+f28 (void)
+{
+ puts ("f28");
+ if (next-- != 28)
+ _exit (1);
+}
+
+void
+f29 (void)
+{
+ puts ("f29");
+ if (next-- != 29)
+ _exit (1);
+}
+
+void
+f30 (void)
+{
+ puts ("f30");
+ if (next-- != 30)
+ _exit (1);
+}
+
+void
+f31 (void)
+{
+ puts ("f31");
+ if (next-- != 31)
+ _exit (1);
+}
+
+void
+f32 (void)
+{
+ puts ("f32");
+ if (next-- != 32)
+ _exit (1);
+}
+
+void
+f33 (void)
+{
+ puts ("f33");
+ if (next-- != 33)
+ _exit (1);
+}
+
+void
+f34 (void)
+{
+ puts ("f34");
+ if (next-- != 34)
+ _exit (1);
+}
+
+void
+f35 (void)
+{
+ puts ("f35");
+ if (next-- != 35)
+ _exit (1);
+}
+
+void
+f36 (void)
+{
+ puts ("f36");
+ if (next-- != 36)
+ _exit (1);
+}
+
+void
+f37 (void)
+{
+ puts ("f37");
+ if (next-- != 37)
+ _exit (1);
+}
+
+void
+f38 (void)
+{
+ puts ("f38");
+ if (next-- != 38)
+ _exit (1);
+}
+
+void
+f39 (void)
+{
+ puts ("f39");
+ if (next-- != 39)
+ _exit (1);
+}
+
+void
+foo (void)
+{
+ atexit (f00);
+ atexit (f01);
+ atexit (f02);
+ atexit (f03);
+ atexit (f04);
+ atexit (f05);
+ atexit (f06);
+ atexit (f07);
+ atexit (f08);
+ atexit (f09);
+
+ atexit (f10);
+ atexit (f11);
+ atexit (f12);
+ atexit (f13);
+ atexit (f14);
+ atexit (f15);
+ atexit (f16);
+ atexit (f17);
+ atexit (f18);
+ atexit (f19);
+
+ atexit (f20);
+ atexit (f21);
+ atexit (f22);
+ atexit (f23);
+ atexit (f24);
+ atexit (f25);
+ atexit (f26);
+ atexit (f27);
+ atexit (f28);
+ atexit (f29);
+
+ atexit (f30);
+ atexit (f31);
+ atexit (f32);
+ atexit (f33);
+ atexit (f34);
+ atexit (f35);
+ atexit (f36);
+ atexit (f37);
+ atexit (f38);
+ atexit (f39);
+
+ next = 39;
+}
diff --git a/dlfcn/bug-atexit1.c b/dlfcn/bug-atexit1.c
new file mode 100644
index 0000000000..3bdb5587b1
--- /dev/null
+++ b/dlfcn/bug-atexit1.c
@@ -0,0 +1,23 @@
+/* Derived from a test case in
+ http://sourceware.org/bugzilla/show_bug.cgi?id=1158. */
+#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static int
+do_test (void)
+{
+ for (int i = 0; i < 2; ++i)
+ {
+ void *dso = dlopen ("$ORIGIN/bug-atexit1-lib.so", RTLD_NOW);
+ void (*fn) (void) = (void (*)()) dlsym (dso, "foo");
+ fn ();
+ dlclose (dso);
+ puts ("round done");
+ }
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/dlfcn/bug-atexit2-lib.c b/dlfcn/bug-atexit2-lib.c
new file mode 100644
index 0000000000..ca39657566
--- /dev/null
+++ b/dlfcn/bug-atexit2-lib.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+void
+fx (void)
+{
+ puts ("At exit fx");
+}
+
+void
+foo (void)
+{
+ atexit (fx);
+}
diff --git a/dlfcn/bug-atexit2.c b/dlfcn/bug-atexit2.c
new file mode 100644
index 0000000000..15e9f7aa01
--- /dev/null
+++ b/dlfcn/bug-atexit2.c
@@ -0,0 +1,53 @@
+/* Derived from a test case in
+ http://sourceware.org/bugzilla/show_bug.cgi?id=1158. */
+#include <dlfcn.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+static int next = 3;
+
+static void
+f1 (void)
+{
+ puts ("f1");
+ if (next-- != 1)
+ _exit (1);
+}
+
+static void
+f2 (void)
+{
+ puts ("f2");
+ if (next-- != 2)
+ _exit (1);
+}
+
+static void
+f3 (void)
+{
+ puts ("f3");
+ if (next-- != 3)
+ _exit (1);
+}
+
+static int
+do_test (void)
+{
+ atexit (f1);
+
+ void *dso = dlopen ("$ORIGIN/bug-atexit2-lib.so", RTLD_NOW);
+ void (*fn) (void) = (void (*) (void)) dlsym (dso, "foo");
+ fn ();
+
+ atexit (f2);
+
+ dlclose (dso);
+
+ atexit (f3);
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 58b0f91731..0ed670d158 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1354,22 +1354,36 @@ cannot allocate TLS data structures for initial thread");
if (__builtin_expect ((stack_flags &~ GL(dl_stack_flags)) & PF_X, 0))
{
+ if (__builtin_expect (__check_caller (RETURN_ADDRESS (0), allow_ldso),
+ 0) != 0)
+ {
+ errstring = N_("invalid caller");
+ goto call_lose;
+ }
+
/* The stack is presently not executable, but this module
requires that it be executable. We must change the
protection of the variable which contains the flags used in
the mprotect calls. */
-#ifdef HAVE_Z_RELRO
+#if defined HAVE_Z_RELRO && defined SHARED
if ((mode & (__RTLD_DLOPEN | __RTLD_AUDIT)) == __RTLD_DLOPEN)
{
- uintptr_t p = ((uintptr_t) &__stack_prot) & ~(GLRO(dl_pagesize) - 1);
- size_t s = (uintptr_t) &__stack_prot - p + sizeof (int);
-
- __mprotect ((void *) p, s, PROT_READ|PROT_WRITE);
- if (__builtin_expect (__check_caller (RETURN_ADDRESS (0),
- allow_ldso) == 0,
- 0))
+ const uintptr_t p = (uintptr_t) &__stack_prot & -GLRO(dl_pagesize);
+ const size_t s = (uintptr_t) (&__stack_prot + 1) - p;
+
+ struct link_map *const m = &GL(dl_rtld_map);
+ const uintptr_t relro_end = ((m->l_addr + m->l_relro_addr
+ + m->l_relro_size)
+ & -GLRO(dl_pagesize));
+ if (__builtin_expect (p + s <= relro_end, 1))
+ {
+ /* The variable lies in the region protected by RELRO. */
+ __mprotect ((void *) p, s, PROT_READ|PROT_WRITE);
+ __stack_prot |= PROT_READ|PROT_WRITE|PROT_EXEC;
+ __mprotect ((void *) p, s, PROT_READ);
+ }
+ else
__stack_prot |= PROT_READ|PROT_WRITE|PROT_EXEC;
- __mprotect ((void *) p, s, PROT_READ);
}
else
#endif
@@ -1538,7 +1552,7 @@ print_search_path (struct r_search_path_elem **list,
user might want to know about this. */
static int
open_verify (const char *name, struct filebuf *fbp, struct link_map *loader,
- int whatcode)
+ int whatcode, bool *found_other_class)
{
/* This is the expected ELF header. */
#define ELF32_CLASS ELFCLASS32
@@ -1642,10 +1656,13 @@ open_verify (const char *name, struct filebuf *fbp, struct link_map *loader,
)
errstring = N_("invalid ELF header");
else if (ehdr->e_ident[EI_CLASS] != ELFW(CLASS))
- /* This is not a fatal error. On architectures where
- 32-bit and 64-bit binaries can be run this might
- happen. */
- goto close_and_out;
+ {
+ /* This is not a fatal error. On architectures where
+ 32-bit and 64-bit binaries can be run this might
+ happen. */
+ *found_other_class = true;
+ goto close_and_out;
+ }
else if (ehdr->e_ident[EI_DATA] != byteorder)
{
if (BYTE_ORDER == BIG_ENDIAN)
@@ -1752,7 +1769,8 @@ open_verify (const char *name, struct filebuf *fbp, struct link_map *loader,
static int
open_path (const char *name, size_t namelen, int preloaded,
struct r_search_path_struct *sps, char **realname,
- struct filebuf *fbp, struct link_map *loader, int whatcode)
+ struct filebuf *fbp, struct link_map *loader, int whatcode,
+ bool *found_other_class)
{
struct r_search_path_elem **dirs = sps->dirs;
char *buf;
@@ -1801,7 +1819,7 @@ open_path (const char *name, size_t namelen, int preloaded,
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0))
_dl_debug_printf (" trying file=%s\n", buf);
- fd = open_verify (buf, fbp, loader, whatcode);
+ fd = open_verify (buf, fbp, loader, whatcode, found_other_class);
if (this_dir->status[cnt] == unknown)
{
if (fd != -1)
@@ -1976,6 +1994,9 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
}
#endif
+ /* Will be true if we found a DSO which is of the other ELF class. */
+ bool found_other_class = false;
+
if (strchr (name, '/') == NULL)
{
/* Search for NAME in several places. */
@@ -1996,7 +2017,8 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
for (l = loader; fd == -1 && l; l = l->l_loader)
if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs,
- &realname, &fb, loader, LA_SER_RUNPATH);
+ &realname, &fb, loader, LA_SER_RUNPATH,
+ &found_other_class);
/* If dynamically linked, try the DT_RPATH of the executable
itself. NB: we do this for lookups in any namespace. */
@@ -2006,7 +2028,8 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
if (l && l->l_type != lt_loaded && l != loader
&& cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs,
- &realname, &fb, loader ?: l, LA_SER_RUNPATH);
+ &realname, &fb, loader ?: l, LA_SER_RUNPATH,
+ &found_other_class);
}
}
@@ -2015,7 +2038,7 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
fd = open_path (name, namelen, preloaded, &env_path_list,
&realname, &fb,
loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded,
- LA_SER_LIBPATH);
+ LA_SER_LIBPATH, &found_other_class);
/* Look at the RUNPATH information for this binary. */
if (fd == -1 && loader != NULL
@@ -2023,7 +2046,7 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
DT_RUNPATH, "RUNPATH"))
fd = open_path (name, namelen, preloaded,
&loader->l_runpath_dirs, &realname, &fb, loader,
- LA_SER_RUNPATH);
+ LA_SER_RUNPATH, &found_other_class);
if (fd == -1
&& (__builtin_expect (! preloaded, 1)
@@ -2073,7 +2096,7 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
{
fd = open_verify (cached,
&fb, loader ?: GL(dl_ns)[nsid]._ns_loaded,
- LA_SER_CONFIG);
+ LA_SER_CONFIG, &found_other_class);
if (__builtin_expect (fd != -1, 1))
{
realname = local_strdup (cached);
@@ -2093,7 +2116,7 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
|| __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1))
&& rtld_search_dirs.dirs != (void *) -1)
fd = open_path (name, namelen, preloaded, &rtld_search_dirs,
- &realname, &fb, l, LA_SER_DEFAULT);
+ &realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
/* Add another newline when we are tracing the library loading. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0))
@@ -2110,7 +2133,8 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
else
{
fd = open_verify (realname, &fb,
- loader ?: GL(dl_ns)[nsid]._ns_loaded, 0);
+ loader ?: GL(dl_ns)[nsid]._ns_loaded, 0,
+ &found_other_class);
if (__builtin_expect (fd, 0) == -1)
free (realname);
}
@@ -2153,6 +2177,11 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
return l;
}
+ else if (found_other_class)
+ _dl_signal_error (0, name, NULL,
+ ELFW(CLASS) == ELFCLASS32
+ ? N_("wrong ELF class: ELFCLASS64")
+ : N_("wrong ELF class: ELFCLASS32"));
else
_dl_signal_error (errno, name, NULL,
N_("cannot open shared object file"));
diff --git a/elf/dl-tsd.c b/elf/dl-tsd.c
index f44fa7d365..f01f8d652e 100644
--- a/elf/dl-tsd.c
+++ b/elf/dl-tsd.c
@@ -1,5 +1,5 @@
/* Thread-local data used by error handling for runtime dynamic linker.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2005 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
@@ -49,7 +49,7 @@ void **(*_dl_error_catch_tsd) (void) __attribute__ ((const))
void ** __attribute__ ((const))
__libc_dl_error_tsd (void)
{
- static __thread void *data;
+ static __thread void *data attribute_tls_model_ie;
return &data;
}
diff --git a/elf/rtld.c b/elf/rtld.c
index 21365af2ba..a89f89b3a5 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -72,11 +72,15 @@ enum mode { normal, list, verify, trace };
all the entries. */
static void process_envvars (enum mode *modep);
-int _dl_argc attribute_relro attribute_hidden;
#ifdef DL_ARGV_NOT_RELRO
+int _dl_argc attribute_hidden;
char **_dl_argv = NULL;
+/* Nonzero if we were run directly. */
+unsigned int _dl_skip_args attribute_hidden;
#else
+int _dl_argc attribute_relro attribute_hidden;
char **_dl_argv attribute_relro = NULL;
+unsigned int _dl_skip_args attribute_relro attribute_hidden;
#endif
INTDEF(_dl_argv)
@@ -86,9 +90,6 @@ INTDEF(_dl_argv)
uintptr_t __stack_chk_guard attribute_relro;
#endif
-/* Nonzero if we were run directly. */
-unsigned int _dl_skip_args attribute_relro attribute_hidden;
-
/* List of auditing DSOs. */
static struct audit_list
{
diff --git a/fedora/branch.mk b/fedora/branch.mk
index dd93d8d799..60d6344425 100644
--- a/fedora/branch.mk
+++ b/fedora/branch.mk
@@ -3,5 +3,5 @@ glibc-branch := fedora
glibc-base := HEAD
DIST_BRANCH := devel
COLLECTION := dist-fc4
-fedora-sync-date := 2005-09-12 06:56 UTC
-fedora-sync-tag := fedora-glibc-20050912T0656
+fedora-sync-date := 2005-10-03 20:40 UTC
+fedora-sync-tag := fedora-glibc-20051003T2040
diff --git a/iconv/loop.c b/iconv/loop.c
index 1918fe5007..9785bf865c 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -1,5 +1,5 @@
/* Conversion loop frame work.
- Copyright (C) 1998-2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998-2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -450,6 +450,10 @@ SINGLE(LOOPFCT) (struct __gconv_step *step,
#else
/* We don't have enough input for another complete input
character. */
+ assert (inend - inptr > (state->__count & ~7));
+ assert (inend - inptr <= 7);
+ state->__count = (state->__count & ~7) | (inend - inptr);
+ inlen = 0;
while (inptr < inend)
state->__value.__wchb[inlen++] = *inptr++;
#endif
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index a45c7a9b3d..2ea0fcfcce 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -53,7 +53,11 @@ modules := ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 \
TCVN5712-1 libJISX0213 EUC-JISX0213 SHIFT_JISX0213 \
ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS PT154 RK1048 \
IBM1025 IBM1122 IBM1137 IBM1153 IBM1154 IBM1155 IBM1156 \
- IBM1157 IBM1158
+ IBM1157 IBM1158 IBM803 IBM901 IBM902 IBM921 IBM1008 \
+ IBM1008_420 IBM1097 IBM1112 IBM1123 IBM1130 IBM1140 IBM1141 \
+ IBM1142 IBM1143 IBM1144 IBM1145 IBM1146 IBM1147 IBM1148 \
+ IBM1149 IBM1166 IBM1167 IBM4517 IBM4899 IBM4909 IBM4971 \
+ IBM5347 IBM9030 IBM9066 IBM9448 IBM12712 IBM16804
modules.so := $(addsuffix .so, $(modules))
@@ -177,7 +181,18 @@ distribute := gconv-modules extra-module.mk gap.awk gaptab.awk gconv.map \
tcvn5712-1.c armscii-8.c tscii.c ibm866nav.c pt154.c rk1048.c \
ibm1025.c ibm1025.h ibm1122.c ibm1122.h ibm1137.c ibm1137.h \
ibm1153.c ibm1153.h ibm1154.c ibm1154.h ibm1155.c ibm1155.h \
- ibm1156.c ibm1156.h ibm1157.c ibm1157.h ibm1158.c ibm1158.h
+ ibm1156.c ibm1156.h ibm1157.c ibm1157.h ibm1158.c ibm1158.h \
+ ibm803.c ibm803.h ibm901.c ibm901.h ibm902.c ibm902.h \
+ ibm921.c ibm921.h ibm1008.c ibm1008.h ibm1008_420.c \
+ ibm1097.c ibm1097.h ibm1112.c ibm1112.h ibm1123.c ibm1123.h \
+ ibm1130.c ibm1130.h ibm1140.c ibm1140.h ibm1141.c ibm1141.h \
+ ibm1142.c ibm1142.h ibm1143.c ibm1143.h ibm1144.c ibm1144.h \
+ ibm1145.c ibm1145.h ibm1146.c ibm1146.h ibm1147.c ibm1147.h \
+ ibm1148.c ibm1148.h ibm1149.c ibm1149.h ibm1166.c ibm1166.h \
+ ibm1167.c ibm1167.h ibm4517.c ibm4517.h ibm4899.c ibm4899.h \
+ ibm4909.c ibm4909.h ibm4971.c ibm4971.h ibm5347.c ibm5347.h \
+ ibm9030.c ibm9030.h ibm9066.c ibm9066.h ibm9448.c ibm9448.h \
+ ibm12712.c ibm12712.h ibm16804.c ibm16804.h
# We build the transformation modules only when we build shared libs.
ifeq (yes,$(build-shared))
diff --git a/iconvdata/TESTS b/iconvdata/TESTS
index 8ff19125c3..05b0837558 100644
--- a/iconvdata/TESTS
+++ b/iconvdata/TESTS
@@ -128,3 +128,34 @@ IBM1155 IBM1155 N UTF8
IBM1156 IBM1156 N UTF8
IBM1157 IBM1157 N UTF8
IBM1158 IBM1158 N UTF8
+IBM803 IBM803 - UTF8
+IBM901 IBM901 N UTF8
+IBM902 IBM902 N UTF8
+IBM921 IBM921 N UTF8
+IBM1008 IBM1008 N UTF8
+IBM1097 IBM1097 Y UTF8
+IBM1112 IBM1112 N UTF8
+IBM1123 IBM1123 N UTF8
+IBM1130 IBM1130 N UTF8
+IBM1140 IBM1140 N UTF8
+IBM1141 IBM1141 N UTF8
+IBM1142 IBM1142 N UTF8
+IBM1143 IBM1143 N UTF8
+IBM1144 IBM1144 N UTF8
+IBM1145 IBM1145 N UTF8
+IBM1146 IBM1146 N UTF8
+IBM1147 IBM1147 N UTF8
+IBM1148 IBM1148 N UTF8
+IBM1149 IBM1149 N UTF8
+IBM1166 IBM1166 N UTF8
+IBM1167 IBM1167 N UTF8
+IBM4517 IBM4517 - UTF8
+IBM4899 IBM4899 - UTF8
+IBM4909 IBM4909 N UTF8
+IBM4971 IBM4971 N UTF8
+IBM5347 IBM5347 N UTF8
+IBM9030 IBM9030 N UTF8
+IBM9066 IBM9066 N UTF8
+IBM9448 IBM9448 N UTF8
+IBM12712 IBM12712 N UTF8
+IBM16804 IBM16804 - UTF8
diff --git a/iconvdata/gconv-modules b/iconvdata/gconv-modules
index 75d4228497..e03795f529 100644
--- a/iconvdata/gconv-modules
+++ b/iconvdata/gconv-modules
@@ -1641,3 +1641,224 @@ alias CP1158// IBM1158//
alias CSIBM1158// IBM1158//
module IBM1158// INTERNAL IBM1158 1
module INTERNAL IBM1158// IBM1158 1
+
+# from to module cost
+alias IBM-803// IBM803//
+alias CP803// IBM803//
+alias CSIBM803// IBM803//
+module IBM803// INTERNAL IBM803 1
+module INTERNAL IBM803// IBM803 1
+
+# from to module cost
+alias IBM-901// IBM901//
+alias CP901// IBM901//
+alias CSIBM901// IBM901//
+module IBM901// INTERNAL IBM901 1
+module INTERNAL IBM901// IBM901 1
+
+# from to module cost
+alias IBM-902// IBM902//
+alias CP902// IBM902//
+alias CSIBM902// IBM902//
+module IBM902// INTERNAL IBM902 1
+module INTERNAL IBM902// IBM902 1
+
+# from to module cost
+alias IBM-921// IBM921//
+alias CP921// IBM921//
+alias CSIBM921// IBM921//
+module IBM921// INTERNAL IBM921 1
+module INTERNAL IBM921// IBM921 1
+
+# from to module cost
+alias IBM-1008// IBM1008//
+alias CP1008// IBM1008//
+alias CSIBM1008// IBM1008//
+module IBM1008// INTERNAL IBM1008 1
+module INTERNAL IBM1008// IBM1008 1
+
+# from to module cost
+module IBM1008// IBM420// IBM1008_420 1
+module IBM420// IBM1008// IBM1008_420 1
+
+# from to module cost
+alias IBM-1097// IBM1097//
+alias CP1097// IBM1097//
+alias CSIBM1097// IBM1097//
+module IBM1097// INTERNAL IBM1097 1
+module INTERNAL IBM1097// IBM1097 1
+
+# from to module cost
+alias IBM-1112// IBM1112//
+alias CP1112// IBM1112//
+alias CSIBM1112// IBM1112//
+module IBM1112// INTERNAL IBM1112 1
+module INTERNAL IBM1112// IBM1112 1
+
+# from to module cost
+alias IBM-1123// IBM1123//
+alias CP1123// IBM1123//
+alias CSIBM1123// IBM1123//
+module IBM1123// INTERNAL IBM1123 1
+module INTERNAL IBM1123// IBM1123 1
+
+# from to module cost
+alias IBM-1130// IBM1130//
+alias CP1130// IBM1130//
+alias CSIBM1130// IBM1130//
+module IBM1130// INTERNAL IBM1130 1
+module INTERNAL IBM1130// IBM1130 1
+
+# from to module cost
+alias IBM-1140// IBM1140//
+alias CP1140// IBM1140//
+alias CSIBM1140// IBM1140//
+module IBM1140// INTERNAL IBM1140 1
+module INTERNAL IBM1140// IBM1140 1
+
+# from to module cost
+alias IBM-1141// IBM1141//
+alias CP1141// IBM1141//
+alias CSIBM1141// IBM1141//
+module IBM1141// INTERNAL IBM1141 1
+module INTERNAL IBM1141// IBM1141 1
+
+# from to module cost
+alias IBM-1142// IBM1142//
+alias CP1142// IBM1142//
+alias CSIBM1142// IBM1142//
+module IBM1142// INTERNAL IBM1142 1
+module INTERNAL IBM1142// IBM1142 1
+
+# from to module cost
+alias IBM-1143// IBM1143//
+alias CP1143// IBM1143//
+alias CSIBM1143// IBM1143//
+module IBM1143// INTERNAL IBM1143 1
+module INTERNAL IBM1143// IBM1143 1
+
+# from to module cost
+alias IBM-1144// IBM1144//
+alias CP1144// IBM1144//
+alias CSIBM1144// IBM1144//
+module IBM1144// INTERNAL IBM1144 1
+module INTERNAL IBM1144// IBM1144 1
+
+# from to module cost
+alias IBM-1145// IBM1145//
+alias CP1145// IBM1145//
+alias CSIBM1145// IBM1145//
+module IBM1145// INTERNAL IBM1145 1
+module INTERNAL IBM1145// IBM1145 1
+
+# from to module cost
+alias IBM-1146// IBM1146//
+alias CP1146// IBM1146//
+alias CSIBM1146// IBM1146//
+module IBM1146// INTERNAL IBM1146 1
+module INTERNAL IBM1146// IBM1146 1
+
+# from to module cost
+alias IBM-1147// IBM1147//
+alias CP1147// IBM1147//
+alias CSIBM1147// IBM1147//
+module IBM1147// INTERNAL IBM1147 1
+module INTERNAL IBM1147// IBM1147 1
+
+# from to module cost
+alias IBM-1148// IBM1148//
+alias CP1148// IBM1148//
+alias CSIBM1148// IBM1148//
+module IBM1148// INTERNAL IBM1148 1
+module INTERNAL IBM1148// IBM1148 1
+
+# from to module cost
+alias IBM-1149// IBM1149//
+alias CP1149// IBM1149//
+alias CSIBM1149// IBM1149//
+module IBM1149// INTERNAL IBM1149 1
+module INTERNAL IBM1149// IBM1149 1
+
+# from to module cost
+alias IBM-1166// IBM1166//
+alias CP1166// IBM1166//
+alias CSIBM1166// IBM1166//
+module IBM1166// INTERNAL IBM1166 1
+module INTERNAL IBM1166// IBM1166 1
+
+# from to module cost
+alias IBM-1167// IBM1167//
+alias CP1167// IBM1167//
+alias CSIBM1167// IBM1167//
+module IBM1167// INTERNAL IBM1167 1
+module INTERNAL IBM1167// IBM1167 1
+
+# from to module cost
+alias IBM-4517// IBM4517//
+alias CP4517// IBM4517//
+alias CSIBM4517// IBM4517//
+module IBM4517// INTERNAL IBM4517 1
+module INTERNAL IBM4517// IBM4517 1
+
+# from to module cost
+alias IBM-4899// IBM4899//
+alias CP4899// IBM4899//
+alias CSIBM4899// IBM4899//
+module IBM4899// INTERNAL IBM4899 1
+module INTERNAL IBM4899// IBM4899 1
+
+# from to module cost
+alias IBM-4909// IBM4909//
+alias CP4909// IBM4909//
+alias CSIBM4909// IBM4909//
+module IBM4909// INTERNAL IBM4909 1
+module INTERNAL IBM4909// IBM4909 1
+
+# from to module cost
+alias IBM-4971// IBM4971//
+alias CP4971// IBM4971//
+alias CSIBM4971// IBM4971//
+module IBM4971// INTERNAL IBM4971 1
+module INTERNAL IBM4971// IBM4971 1
+
+# from to module cost
+alias IBM-5347// IBM5347//
+alias CP5347// IBM5347//
+alias CSIBM5347// IBM5347//
+module IBM5347// INTERNAL IBM5347 1
+module INTERNAL IBM5347// IBM5347 1
+
+# from to module cost
+alias IBM-9030// IBM9030//
+alias CP9030// IBM9030//
+alias CSIBM9030// IBM9030//
+module IBM9030// INTERNAL IBM9030 1
+module INTERNAL IBM9030// IBM9030 1
+
+# from to module cost
+alias IBM-9066// IBM9066//
+alias CP9066// IBM9066//
+alias CSIBM9066// IBM9066//
+module IBM9066// INTERNAL IBM9066 1
+module INTERNAL IBM9066// IBM9066 1
+
+# from to module cost
+alias IBM-9448// IBM9448//
+alias CP9448// IBM9448//
+alias CSIBM9448// IBM9448//
+module IBM9448// INTERNAL IBM9448 1
+module INTERNAL IBM9448// IBM9448 1
+
+# from to module cost
+alias IBM-12712// IBM12712//
+alias CP12712// IBM12712//
+alias CSIBM12712// IBM12712//
+module IBM12712// INTERNAL IBM12712 1
+module INTERNAL IBM12712// IBM12712 1
+
+# from to module cost
+alias IBM-16804// IBM16804//
+alias CP16804// IBM16804//
+alias CSIBM16804// IBM16804//
+module IBM16804// INTERNAL IBM16804 1
+module INTERNAL IBM16804// IBM16804 1
diff --git a/iconvdata/ibm1008.c b/iconvdata/ibm1008.c
new file mode 100644
index 0000000000..57028cc147
--- /dev/null
+++ b/iconvdata/ibm1008.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1008.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1008.h>
+
+#define CHARSET_NAME "IBM1008//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1008.h b/iconvdata/ibm1008.h
new file mode 100644
index 0000000000..b824cd4761
--- /dev/null
+++ b/iconvdata/ibm1008.h
@@ -0,0 +1,153 @@
+/* Tables for conversion from and to IBM1008.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f,
+ [0x80] = 0x0080, [0x81] = 0x0081, [0x82] = 0x0082, [0x83] = 0x0083,
+ [0x84] = 0x0084, [0x85] = 0x0085, [0x86] = 0x0086, [0x87] = 0x0087,
+ [0x88] = 0x0088, [0x89] = 0x0089, [0x8a] = 0x008a, [0x8b] = 0x008b,
+ [0x8c] = 0x008c, [0x8d] = 0x008d, [0x8e] = 0x008e, [0x8f] = 0x008f,
+ [0x90] = 0x0090, [0x91] = 0x0091, [0x92] = 0x0092, [0x93] = 0x0093,
+ [0x94] = 0x0094, [0x95] = 0x0095, [0x96] = 0x0096, [0x97] = 0x0097,
+ [0x98] = 0x0098, [0x99] = 0x0099, [0x9a] = 0x009a, [0x9b] = 0x009b,
+ [0x9c] = 0x009c, [0x9d] = 0x009d, [0x9e] = 0x009e, [0x9f] = 0x009f,
+ [0xa0] = 0x00a0, [0xa1] = 0x060c, [0xa2] = 0x00a2, [0xa3] = 0x061b,
+ [0xa4] = 0x061f, [0xa5] = 0xfe7c, [0xa6] = 0x00a6, [0xa7] = 0xfe7d,
+ [0xa8] = 0x0640, [0xa9] = 0xf8fc, [0xaa] = 0xfe80, [0xab] = 0xfe81,
+ [0xac] = 0x00ac, [0xad] = 0x00ad, [0xae] = 0xfe82, [0xaf] = 0xfe83,
+ [0xb0] = 0x0660, [0xb1] = 0x0661, [0xb2] = 0x0662, [0xb3] = 0x0663,
+ [0xb4] = 0x0664, [0xb5] = 0x0665, [0xb6] = 0x0666, [0xb7] = 0x0667,
+ [0xb8] = 0x0668, [0xb9] = 0x0669, [0xba] = 0xfe84, [0xbb] = 0xfe85,
+ [0xbc] = 0xfe8b, [0xbd] = 0xfe8d, [0xbe] = 0xfe8e, [0xbf] = 0xfe8f,
+ [0xc0] = 0xfe91, [0xc1] = 0xfe93, [0xc2] = 0xfe95, [0xc3] = 0xfe97,
+ [0xc4] = 0xfe99, [0xc5] = 0xfe9b, [0xc6] = 0xfe9d, [0xc7] = 0xfe9f,
+ [0xc8] = 0xfea1, [0xc9] = 0xfea3, [0xca] = 0xfea5, [0xcb] = 0xfea7,
+ [0xcc] = 0xfea9, [0xcd] = 0xfeab, [0xce] = 0xfead, [0xcf] = 0xfeaf,
+ [0xd0] = 0xf8f6, [0xd1] = 0xfeb3, [0xd2] = 0xf8f5, [0xd3] = 0xfeb7,
+ [0xd4] = 0xf8f4, [0xd5] = 0xfebb, [0xd6] = 0xf8f7, [0xd7] = 0x00d7,
+ [0xd8] = 0xfebf, [0xd9] = 0xfec3, [0xda] = 0xfec7, [0xdb] = 0xfec9,
+ [0xdc] = 0xfeca, [0xdd] = 0xfecb, [0xde] = 0xfecc, [0xdf] = 0xfecd,
+ [0xe0] = 0xfece, [0xe1] = 0xfecf, [0xe2] = 0xfed0, [0xe3] = 0xfed1,
+ [0xe4] = 0xfed3, [0xe5] = 0xfed5, [0xe6] = 0xfed7, [0xe7] = 0xfed9,
+ [0xe8] = 0xfedb, [0xe9] = 0xfedd, [0xea] = 0xfef5, [0xeb] = 0xfef6,
+ [0xec] = 0xfef7, [0xed] = 0xfef8, [0xee] = 0xfefb, [0xef] = 0xfefc,
+ [0xf0] = 0xfedf, [0xf1] = 0xfee1, [0xf2] = 0xfee3, [0xf3] = 0xfee5,
+ [0xf4] = 0xfee7, [0xf5] = 0xfee9, [0xf6] = 0xfeeb, [0xf7] = 0x00f7,
+ [0xf8] = 0xfeec, [0xf9] = 0xfeed, [0xfa] = 0xfeef, [0xfb] = 0xfef0,
+ [0xfc] = 0xfef1, [0xfd] = 0xfef2, [0xfe] = 0xfef3
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ad, idx: 0 },
+ { start: 0x00d7, end: 0x00d7, idx: -41 },
+ { start: 0x00f7, end: 0x00f7, idx: -72 },
+ { start: 0x060c, end: 0x060c, idx: -1372 },
+ { start: 0x061b, end: 0x064a, idx: -1386 },
+ { start: 0x0651, end: 0x0651, idx: -1392 },
+ { start: 0x0660, end: 0x066d, idx: -1406 },
+ { start: 0xf8f4, end: 0xf8fc, idx: -63492 },
+ { start: 0xfe7c, end: 0xfefc, idx: -64899 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
+ '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
+ '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
+ '\xa0', '\x00', '\xa2', '\x00', '\x00', '\x00', '\xa6', '\x00',
+ '\x00', '\x00', '\x00', '\x00', '\xac', '\xad', '\xd7', '\xf7',
+ '\xa1', '\xa3', '\x00', '\x00', '\x00', '\xa4', '\x00', '\xaa',
+ '\xab', '\xaf', '\xbb', '\x00', '\xbc', '\xbd', '\xbf', '\xc1',
+ '\xc2', '\xc4', '\xc6', '\xc8', '\xca', '\xcc', '\xcd', '\xce',
+ '\xcf', '\xd0', '\xd2', '\xd4', '\xd6', '\xd9', '\xda', '\xdb',
+ '\xdf', '\x00', '\x00', '\x00', '\x00', '\x00', '\xa8', '\xe3',
+ '\xe5', '\xe7', '\xe9', '\xf1', '\xf3', '\xf5', '\xf9', '\xfa',
+ '\xfc', '\xa5', '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5',
+ '\xb6', '\xb7', '\xb8', '\xb9', '\x25', '\x2c', '\x2e', '\x2a',
+ '\xd4', '\xd2', '\xd0', '\xd6', '\x00', '\x00', '\x00', '\x00',
+ '\xa9', '\xa5', '\xa7', '\x00', '\x00', '\xaa', '\xab', '\xae',
+ '\xaf', '\xba', '\xbb', '\xbb', '\x00', '\x00', '\x00', '\x00',
+ '\xbc', '\xbc', '\xbd', '\xbe', '\xbf', '\xbf', '\xc0', '\xc0',
+ '\xc1', '\xc1', '\xc2', '\xc2', '\xc3', '\xc3', '\xc4', '\xc4',
+ '\xc5', '\xc5', '\xc6', '\xc6', '\xc7', '\xc7', '\xc8', '\xc8',
+ '\xc9', '\xc9', '\xca', '\xca', '\xcb', '\xcb', '\xcc', '\xcc',
+ '\xcd', '\xcd', '\xce', '\xce', '\xcf', '\xcf', '\x00', '\x00',
+ '\xd1', '\xd1', '\x00', '\x00', '\xd3', '\xd3', '\x00', '\x00',
+ '\xd5', '\xd5', '\x00', '\x00', '\xd8', '\xd8', '\xd9', '\xd9',
+ '\xd9', '\xd9', '\xda', '\xda', '\xda', '\xda', '\xdb', '\xdc',
+ '\xdd', '\xde', '\xdf', '\xe0', '\xe1', '\xe2', '\xe3', '\xe3',
+ '\xe4', '\xe4', '\xe5', '\xe5', '\xe6', '\xe6', '\xe7', '\xe7',
+ '\xe8', '\xe8', '\xe9', '\xe9', '\xf0', '\xf0', '\xf1', '\xf1',
+ '\xf2', '\xf2', '\xf3', '\xf3', '\xf4', '\xf4', '\xf5', '\xf5',
+ '\xf6', '\xf8', '\xf9', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd',
+ '\xfe', '\xfe', '\xea', '\xeb', '\xec', '\xed', '\x00', '\x00',
+ '\xee', '\xef'
+};
diff --git a/iconvdata/ibm1008_420.c b/iconvdata/ibm1008_420.c
new file mode 100644
index 0000000000..7dd964ab7f
--- /dev/null
+++ b/iconvdata/ibm1008_420.c
@@ -0,0 +1,197 @@
+/* Mapping tables from IBM1008 to IBM420 and vice versa.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <dlfcn.h>
+#include <gconv.h>
+#include <stdint.h>
+
+static const char __from_ibm1008_to_ibm420[256] =
+{
+ [0x00] = 0x00, [0x01] = 0x01, [0x02] = 0x02, [0x03] = 0x03,
+ [0x04] = 0x37, [0x05] = 0x2D, [0x06] = 0x2E, [0x07] = 0x2F,
+ [0x08] = 0x16, [0x09] = 0x05, [0x0A] = 0x25, [0x0B] = 0x0B,
+ [0x0C] = 0x0C, [0x0D] = 0x0D, [0x0E] = 0x0E, [0x0F] = 0x0F,
+ [0x10] = 0x10, [0x11] = 0x11, [0x12] = 0x12, [0x13] = 0x13,
+ [0x14] = 0x3C, [0x15] = 0x3D, [0x16] = 0x32, [0x17] = 0x26,
+ [0x18] = 0x18, [0x19] = 0x19, [0x1A] = 0x3F, [0x1B] = 0x27,
+ [0x1C] = 0x1C, [0x1D] = 0x1D, [0x1E] = 0x1E, [0x1F] = 0x1F,
+ [0x20] = 0x40, [0x21] = 0x5A, [0x22] = 0x7F, [0x23] = 0x7B,
+ [0x24] = 0x5B, [0x25] = 0x6C, [0x26] = 0x50, [0x27] = 0x7D,
+ [0x28] = 0x4D, [0x29] = 0x5D, [0x2A] = 0x5C, [0x2B] = 0x4E,
+ [0x2C] = 0x6B, [0x2D] = 0x60, [0x2E] = 0x4B, [0x2F] = 0x61,
+ [0x30] = 0xF0, [0x31] = 0xF1, [0x32] = 0xF2, [0x33] = 0xF3,
+ [0x34] = 0xF4, [0x35] = 0xF5, [0x36] = 0xF6, [0x37] = 0xF7,
+ [0x38] = 0xF8, [0x39] = 0xF9, [0x3A] = 0x7A, [0x3B] = 0x5E,
+ [0x3C] = 0x4C, [0x3D] = 0x7E, [0x3E] = 0x6E, [0x3F] = 0x6F,
+ [0x40] = 0x7C, [0x41] = 0xC1, [0x42] = 0xC2, [0x43] = 0xC3,
+ [0x44] = 0xC4, [0x45] = 0xC5, [0x46] = 0xC6, [0x47] = 0xC7,
+ [0x48] = 0xC8, [0x49] = 0xC9, [0x4A] = 0xD1, [0x4B] = 0xD2,
+ [0x4C] = 0xD3, [0x4D] = 0xD4, [0x4E] = 0xD5, [0x4F] = 0xD6,
+ [0x50] = 0xD7, [0x51] = 0xD8, [0x52] = 0xD9, [0x53] = 0xE2,
+ [0x54] = 0xE3, [0x55] = 0xE4, [0x56] = 0xE5, [0x57] = 0xE6,
+ [0x58] = 0xE7, [0x59] = 0xE8, [0x5A] = 0xE9, [0x5B] = 0x53,
+ [0x5C] = 0x54, [0x5D] = 0xB6, [0x5E] = 0xB7, [0x5F] = 0x6D,
+ [0x60] = 0xCC, [0x61] = 0x81, [0x62] = 0x82, [0x63] = 0x83,
+ [0x64] = 0x84, [0x65] = 0x85, [0x66] = 0x86, [0x67] = 0x87,
+ [0x68] = 0x88, [0x69] = 0x89, [0x6A] = 0x91, [0x6B] = 0x92,
+ [0x6C] = 0x93, [0x6D] = 0x94, [0x6E] = 0x95, [0x6F] = 0x96,
+ [0x70] = 0x97, [0x71] = 0x98, [0x72] = 0x99, [0x73] = 0xA2,
+ [0x74] = 0xA3, [0x75] = 0xA4, [0x76] = 0xA5, [0x77] = 0xA6,
+ [0x78] = 0xA7, [0x79] = 0xA8, [0x7A] = 0xA9, [0x7B] = 0xCE,
+ [0x7C] = 0x4F, [0x7D] = 0xE1, [0x7E] = 0xEC, [0x7F] = 0x07,
+ [0x80] = 0x20, [0x81] = 0x21, [0x82] = 0x22, [0x83] = 0x23,
+ [0x84] = 0x24, [0x85] = 0x15, [0x86] = 0x06, [0x87] = 0x17,
+ [0x88] = 0x28, [0x89] = 0x29, [0x8A] = 0x2A, [0x8B] = 0x2B,
+ [0x8C] = 0x2C, [0x8D] = 0x09, [0x8E] = 0x0A, [0x8F] = 0x1B,
+ [0x90] = 0x30, [0x91] = 0x31, [0x92] = 0x1A, [0x93] = 0x33,
+ [0x94] = 0x34, [0x95] = 0x35, [0x96] = 0x36, [0x97] = 0x08,
+ [0x98] = 0x38, [0x99] = 0x39, [0x9A] = 0x3A, [0x9B] = 0x3B,
+ [0x9C] = 0x04, [0x9D] = 0x14, [0x9E] = 0x3E, [0x9F] = 0xFF,
+ [0xA0] = 0x41, [0xA1] = 0x79, [0xA2] = 0x4A, [0xA3] = 0xC0,
+ [0xA4] = 0xD0, [0xA5] = 0x42, [0xA6] = 0x6A, [0xA7] = 0x43,
+ [0xA8] = 0x44, [0xA9] = 0x45, [0xAA] = 0x46, [0xAB] = 0x47,
+ [0xAC] = 0x5F, [0xAD] = 0xCA, [0xAE] = 0x48, [0xAF] = 0x49,
+ [0xB0] = 0xDF, [0xB1] = 0xEA, [0xB2] = 0xEB, [0xB3] = 0xED,
+ [0xB4] = 0xEE, [0xB5] = 0xEF, [0xB6] = 0xFB, [0xB7] = 0xFC,
+ [0xB8] = 0xFD, [0xB9] = 0xFE, [0xBA] = 0x51, [0xBB] = 0x52,
+ [0xBC] = 0x55, [0xBD] = 0x56, [0xBE] = 0x57, [0xBF] = 0x58,
+ [0xC0] = 0x59, [0xC1] = 0x62, [0xC2] = 0x63, [0xC3] = 0x64,
+ [0xC4] = 0x65, [0xC5] = 0x66, [0xC6] = 0x67, [0xC7] = 0x68,
+ [0xC8] = 0x69, [0xC9] = 0x70, [0xCA] = 0x71, [0xCB] = 0x72,
+ [0xCC] = 0x73, [0xCD] = 0x74, [0xCE] = 0x75, [0xCF] = 0x76,
+ [0xD0] = 0x77, [0xD1] = 0x78, [0xD2] = 0x80, [0xD3] = 0x8A,
+ [0xD4] = 0x8B, [0xD5] = 0x8C, [0xD6] = 0x8D, [0xD7] = 0xE0,
+ [0xD8] = 0x8E, [0xD9] = 0x8F, [0xDA] = 0x90, [0xDB] = 0x9A,
+ [0xDC] = 0x9B, [0xDD] = 0x9C, [0xDE] = 0x9D, [0xDF] = 0x9E,
+ [0xE0] = 0x9F, [0xE1] = 0xA0, [0xE2] = 0xAA, [0xE3] = 0xAB,
+ [0xE4] = 0xAC, [0xE5] = 0xAD, [0xE6] = 0xAE, [0xE7] = 0xAF,
+ [0xE8] = 0xB0, [0xE9] = 0xB1, [0xEA] = 0xB2, [0xEB] = 0xB3,
+ [0xEC] = 0xB4, [0xED] = 0xB5, [0xEE] = 0xB8, [0xEF] = 0xB9,
+ [0xF0] = 0xBA, [0xF1] = 0xBB, [0xF2] = 0xBC, [0xF3] = 0xBD,
+ [0xF4] = 0xBE, [0xF5] = 0xBF, [0xF6] = 0xCB, [0xF7] = 0xA1,
+ [0xF8] = 0xCD, [0xF9] = 0xCF, [0xFA] = 0xDA, [0xFB] = 0xDB,
+ [0xFC] = 0xDC, [0xFD] = 0xDD, [0xFE] = 0xDE, [0xFF] = 0xFA,
+};
+
+static const char __from_ibm420_to_ibm1008[256] =
+{
+ [0x00] = 0x00, [0x01] = 0x01, [0x02] = 0x02, [0x03] = 0x03,
+ [0x04] = 0x9C, [0x05] = 0x09, [0x06] = 0x86, [0x07] = 0x7F,
+ [0x08] = 0x97, [0x09] = 0x8D, [0x0A] = 0x8E, [0x0B] = 0x0B,
+ [0x0C] = 0x0C, [0x0D] = 0x0D, [0x0E] = 0x0E, [0x0F] = 0x0F,
+ [0x10] = 0x10, [0x11] = 0x11, [0x12] = 0x12, [0x13] = 0x13,
+ [0x14] = 0x9D, [0x15] = 0x85, [0x16] = 0x08, [0x17] = 0x87,
+ [0x18] = 0x18, [0x19] = 0x19, [0x1A] = 0x92, [0x1B] = 0x8F,
+ [0x1C] = 0x1C, [0x1D] = 0x1D, [0x1E] = 0x1E, [0x1F] = 0x1F,
+ [0x20] = 0x80, [0x21] = 0x81, [0x22] = 0x82, [0x23] = 0x83,
+ [0x24] = 0x84, [0x25] = 0x0A, [0x26] = 0x17, [0x27] = 0x1B,
+ [0x28] = 0x88, [0x29] = 0x89, [0x2A] = 0x8A, [0x2B] = 0x8B,
+ [0x2C] = 0x8C, [0x2D] = 0x05, [0x2E] = 0x06, [0x2F] = 0x07,
+ [0x30] = 0x90, [0x31] = 0x91, [0x32] = 0x16, [0x33] = 0x93,
+ [0x34] = 0x94, [0x35] = 0x95, [0x36] = 0x96, [0x37] = 0x04,
+ [0x38] = 0x98, [0x39] = 0x99, [0x3A] = 0x9A, [0x3B] = 0x9B,
+ [0x3C] = 0x14, [0x3D] = 0x15, [0x3E] = 0x9E, [0x3F] = 0x1A,
+ [0x40] = 0x20, [0x41] = 0xA0, [0x42] = 0xA5, [0x43] = 0xA7,
+ [0x44] = 0xA8, [0x45] = 0xA9, [0x46] = 0xAA, [0x47] = 0xAB,
+ [0x48] = 0xAE, [0x49] = 0xAF, [0x4A] = 0xA2, [0x4B] = 0x2E,
+ [0x4C] = 0x3C, [0x4D] = 0x28, [0x4E] = 0x2B, [0x4F] = 0x7C,
+ [0x50] = 0x26, [0x51] = 0xBA, [0x52] = 0xBB, [0x53] = 0x5B,
+ [0x54] = 0x5C, [0x55] = 0xBC, [0x56] = 0xBD, [0x57] = 0xBE,
+ [0x58] = 0xBF, [0x59] = 0xC0, [0x5A] = 0x21, [0x5B] = 0x24,
+ [0x5C] = 0x2A, [0x5D] = 0x29, [0x5E] = 0x3B, [0x5F] = 0xAC,
+ [0x60] = 0x2D, [0x61] = 0x2F, [0x62] = 0xC1, [0x63] = 0xC2,
+ [0x64] = 0xC3, [0x65] = 0xC4, [0x66] = 0xC5, [0x67] = 0xC6,
+ [0x68] = 0xC7, [0x69] = 0xC8, [0x6A] = 0xA6, [0x6B] = 0x2C,
+ [0x6C] = 0x25, [0x6D] = 0x5F, [0x6E] = 0x3E, [0x6F] = 0x3F,
+ [0x70] = 0xC9, [0x71] = 0xCA, [0x72] = 0xCB, [0x73] = 0xCC,
+ [0x74] = 0xCD, [0x75] = 0xCE, [0x76] = 0xCF, [0x77] = 0xD0,
+ [0x78] = 0xD1, [0x79] = 0xA1, [0x7A] = 0x3A, [0x7B] = 0x23,
+ [0x7C] = 0x40, [0x7D] = 0x27, [0x7E] = 0x3D, [0x7F] = 0x22,
+ [0x80] = 0xD2, [0x81] = 0x61, [0x82] = 0x62, [0x83] = 0x63,
+ [0x84] = 0x64, [0x85] = 0x65, [0x86] = 0x66, [0x87] = 0x67,
+ [0x88] = 0x68, [0x89] = 0x69, [0x8A] = 0xD3, [0x8B] = 0xD4,
+ [0x8C] = 0xD5, [0x8D] = 0xD6, [0x8E] = 0xD8, [0x8F] = 0xD9,
+ [0x90] = 0xDA, [0x91] = 0x6A, [0x92] = 0x6B, [0x93] = 0x6C,
+ [0x94] = 0x6D, [0x95] = 0x6E, [0x96] = 0x6F, [0x97] = 0x70,
+ [0x98] = 0x71, [0x99] = 0x72, [0x9A] = 0xDB, [0x9B] = 0xDC,
+ [0x9C] = 0xDD, [0x9D] = 0xDE, [0x9E] = 0xDF, [0x9F] = 0xE0,
+ [0xA0] = 0xE1, [0xA1] = 0xF7, [0xA2] = 0x73, [0xA3] = 0x74,
+ [0xA4] = 0x75, [0xA5] = 0x76, [0xA6] = 0x77, [0xA7] = 0x78,
+ [0xA8] = 0x79, [0xA9] = 0x7A, [0xAA] = 0xE2, [0xAB] = 0xE3,
+ [0xAC] = 0xE4, [0xAD] = 0xE5, [0xAE] = 0xE6, [0xAF] = 0xE7,
+ [0xB0] = 0xE8, [0xB1] = 0xE9, [0xB2] = 0xEA, [0xB3] = 0xEB,
+ [0xB4] = 0xEC, [0xB5] = 0xED, [0xB6] = 0x5D, [0xB7] = 0x5E,
+ [0xB8] = 0xEE, [0xB9] = 0xEF, [0xBA] = 0xF0, [0xBB] = 0xF1,
+ [0xBC] = 0xF2, [0xBD] = 0xF3, [0xBE] = 0xF4, [0xBF] = 0xF5,
+ [0xC0] = 0xA3, [0xC1] = 0x41, [0xC2] = 0x42, [0xC3] = 0x43,
+ [0xC4] = 0x44, [0xC5] = 0x45, [0xC6] = 0x46, [0xC7] = 0x47,
+ [0xC8] = 0x48, [0xC9] = 0x49, [0xCA] = 0xAD, [0xCB] = 0xF6,
+ [0xCC] = 0x60, [0xCD] = 0xF8, [0xCE] = 0x7B, [0xCF] = 0xF9,
+ [0xD0] = 0xA4, [0xD1] = 0x4A, [0xD2] = 0x4B, [0xD3] = 0x4C,
+ [0xD4] = 0x4D, [0xD5] = 0x4E, [0xD6] = 0x4F, [0xD7] = 0x50,
+ [0xD8] = 0x51, [0xD9] = 0x52, [0xDA] = 0xFA, [0xDB] = 0xFB,
+ [0xDC] = 0xFC, [0xDD] = 0xFD, [0xDE] = 0xFE, [0xDF] = 0xB0,
+ [0xE0] = 0xD7, [0xE1] = 0x7D, [0xE2] = 0x53, [0xE3] = 0x54,
+ [0xE4] = 0x55, [0xE5] = 0x56, [0xE6] = 0x57, [0xE7] = 0x58,
+ [0xE8] = 0x59, [0xE9] = 0x5A, [0xEA] = 0xB1, [0xEB] = 0xB2,
+ [0xEC] = 0x7E, [0xED] = 0xB3, [0xEE] = 0xB4, [0xEF] = 0xB5,
+ [0xF0] = 0x30, [0xF1] = 0x31, [0xF2] = 0x32, [0xF3] = 0x33,
+ [0xF4] = 0x34, [0xF5] = 0x35, [0xF6] = 0x36, [0xF7] = 0x37,
+ [0xF8] = 0x38, [0xF9] = 0x39, [0xFA] = 0xFF, [0xFB] = 0xB6,
+ [0xFC] = 0xB7, [0xFD] = 0xB8, [0xFE] = 0xB9, [0xFF] = 0x9F,
+};
+
+#define CHARSET_NAME "IBM1008//"
+#define FROM_LOOP from_ibm1008_to_ibm420
+#define TO_LOOP from_ibm420_to_ibm1008
+#define DEFINE_INIT 1
+#define DEFINE_FINI 1
+#define MIN_NEEDED_FROM 1
+#define MIN_NEEDED_TO 1
+
+/* First define the conversion function from the 8bit charset to UCS4. */
+#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
+#define LOOPFCT FROM_LOOP
+#define BODY \
+ { \
+ const char ch = __from_ibm1008_to_ibm420[*inptr]; \
+ *outptr++ = ch; \
+ ++inptr; \
+ }
+#define LOOP_NEED_FLAGS
+#include <iconv/loop.c>
+
+
+/* Next, define the other direction. */
+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
+#define LOOPFCT TO_LOOP
+#define BODY \
+ { \
+ const char ch = __from_ibm420_to_ibm1008[*inptr]; \
+ *outptr++ = ch; \
+ ++inptr; \
+ }
+#define LOOP_NEED_FLAGS
+#include <iconv/loop.c>
+
+/* Now define the toplevel functions. */
+#include <iconv/skeleton.c>
diff --git a/iconvdata/ibm1097.c b/iconvdata/ibm1097.c
new file mode 100644
index 0000000000..20eebe7cdb
--- /dev/null
+++ b/iconvdata/ibm1097.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1097.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1097.h>
+
+#define CHARSET_NAME "IBM1097//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1097.h b/iconvdata/ibm1097.h
new file mode 100644
index 0000000000..4d985b6240
--- /dev/null
+++ b/iconvdata/ibm1097.h
@@ -0,0 +1,159 @@
+/* Tables for conversion from and to IBM1097.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x060c, [0x43] = 0x064b,
+ [0x44] = 0xfe81, [0x45] = 0xfe82, [0x46] = 0xf8fa, [0x47] = 0xfe8d,
+ [0x48] = 0xfe8e, [0x49] = 0xf8fb, [0x4a] = 0x00a4, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+ [0x50] = 0x0026, [0x51] = 0xfe80, [0x52] = 0xfe83, [0x53] = 0xfe84,
+ [0x54] = 0xf8f9, [0x55] = 0xfe85, [0x56] = 0xfe8b, [0x57] = 0xfe8f,
+ [0x58] = 0xfe91, [0x59] = 0xfb56, [0x5a] = 0x0021, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00ac,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0xfb58, [0x63] = 0xfe95,
+ [0x64] = 0xfe97, [0x65] = 0xfe99, [0x66] = 0xfe9b, [0x67] = 0xfe9d,
+ [0x68] = 0xfe9f, [0x69] = 0xfb7a, [0x6a] = 0x061b, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0xfb7c, [0x71] = 0xfea1, [0x72] = 0xfea3, [0x73] = 0xfea5,
+ [0x74] = 0xfea7, [0x75] = 0xfea9, [0x76] = 0xfeab, [0x77] = 0xfead,
+ [0x78] = 0xfeaf, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0xfb8a, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0xfeb1, [0x8d] = 0xfeb3, [0x8e] = 0xfeb5, [0x8f] = 0xfeb7,
+ [0x90] = 0xfeb9, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0xfebb, [0x9b] = 0xfebd,
+ [0x9c] = 0xfebf, [0x9d] = 0xfec1, [0x9e] = 0xfec3, [0x9f] = 0xfec5,
+ [0xa0] = 0xfec7, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0xfec9, [0xab] = 0xfeca,
+ [0xac] = 0xfecb, [0xad] = 0xfecc, [0xae] = 0xfecd, [0xaf] = 0xfece,
+ [0xb0] = 0xfecf, [0xb1] = 0xfed0, [0xb2] = 0xfed1, [0xb3] = 0xfed3,
+ [0xb4] = 0xfed5, [0xb5] = 0xfed7, [0xb6] = 0xfb8e, [0xb7] = 0xfedb,
+ [0xb8] = 0xfb92, [0xb9] = 0xfb94, [0xba] = 0x005b, [0xbb] = 0x005d,
+ [0xbc] = 0xfedd, [0xbd] = 0xfedf, [0xbe] = 0xfee1, [0xbf] = 0x00d7,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0xfee3,
+ [0xcc] = 0xfee5, [0xcd] = 0xfee7, [0xce] = 0xfeed, [0xcf] = 0xfee9,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0xfeeb, [0xdb] = 0xfeec,
+ [0xdc] = 0xfba4, [0xdd] = 0xfbfc, [0xde] = 0xfbfd, [0xdf] = 0xfbfe,
+ [0xe0] = 0x005c, [0xe1] = 0x061f, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x0640, [0xeb] = 0x06f0,
+ [0xec] = 0x06f1, [0xed] = 0x06f2, [0xee] = 0x06f3, [0xef] = 0x06f4,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x06f5, [0xfb] = 0x06f6,
+ [0xfc] = 0x06f7, [0xfd] = 0x06f8, [0xfe] = 0x06f9, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00a4, idx: 0 },
+ { start: 0x00ab, end: 0x00ad, idx: -6 },
+ { start: 0x00bb, end: 0x00bb, idx: -19 },
+ { start: 0x00d7, end: 0x00d7, idx: -46 },
+ { start: 0x060c, end: 0x060c, idx: -1378 },
+ { start: 0x061b, end: 0x064b, idx: -1392 },
+ { start: 0x0660, end: 0x066d, idx: -1412 },
+ { start: 0x06f0, end: 0x06f9, idx: -1542 },
+ { start: 0xf8f9, end: 0xf8fb, idx: -63493 },
+ { start: 0xfb56, end: 0xfb58, idx: -64095 },
+ { start: 0xfb7a, end: 0xfb7c, idx: -64128 },
+ { start: 0xfb8a, end: 0xfb94, idx: -64141 },
+ { start: 0xfba4, end: 0xfba4, idx: -64156 },
+ { start: 0xfbfc, end: 0xfbfe, idx: -64243 },
+ { start: 0xfe80, end: 0xfeee, idx: -64884 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\xba', '\xe0', '\xbb', '\x00', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\x00', '\x00', '\x00', '\x4a', '\x8a', '\x5f', '\xca',
+ '\x8b', '\xbf', '\x42', '\x6a', '\x00', '\x00', '\x00', '\xe1',
+ '\x00', '\x51', '\x44', '\x52', '\x55', '\x00', '\x00', '\x47',
+ '\x57', '\x00', '\x63', '\x65', '\x67', '\x71', '\x73', '\x75',
+ '\x76', '\x77', '\x78', '\x8c', '\x8e', '\x90', '\x9b', '\x00',
+ '\x00', '\xaa', '\xae', '\x00', '\x00', '\x00', '\x00', '\x00',
+ '\xea', '\xb2', '\xb4', '\x00', '\xbc', '\xbe', '\xcc', '\xcf',
+ '\xce', '\x00', '\x00', '\x43', '\xeb', '\xec', '\xed', '\xee',
+ '\xef', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\x6c', '\x6b',
+ '\x4b', '\x5c', '\xeb', '\xec', '\xed', '\xee', '\xef', '\xfa',
+ '\xfb', '\xfc', '\xfd', '\xfe', '\x54', '\x46', '\x49', '\x59',
+ '\x00', '\x62', '\x69', '\x00', '\x70', '\x80', '\x00', '\x00',
+ '\x00', '\xb6', '\x00', '\x00', '\x00', '\xb8', '\x00', '\xb9',
+ '\xdc', '\xdd', '\xde', '\xdf', '\x51', '\x44', '\x45', '\x52',
+ '\x53', '\x55', '\x55', '\x00', '\x00', '\x00', '\x00', '\x56',
+ '\x56', '\x47', '\x48', '\x57', '\x57', '\x58', '\x58', '\x00',
+ '\x00', '\x63', '\x63', '\x64', '\x64', '\x65', '\x65', '\x66',
+ '\x66', '\x67', '\x67', '\x68', '\x68', '\x71', '\x71', '\x72',
+ '\x72', '\x73', '\x73', '\x74', '\x74', '\x75', '\x75', '\x76',
+ '\x76', '\x77', '\x77', '\x78', '\x78', '\x8c', '\x8c', '\x8d',
+ '\x8d', '\x8e', '\x8e', '\x8f', '\x8f', '\x90', '\x90', '\x9a',
+ '\x9a', '\x9b', '\x9b', '\x9c', '\x9c', '\x9d', '\x9d', '\x9e',
+ '\x9e', '\x9f', '\x9f', '\xa0', '\xa0', '\xaa', '\xab', '\xac',
+ '\xad', '\xae', '\xaf', '\xb0', '\xb1', '\xb2', '\xb2', '\xb3',
+ '\xb3', '\xb4', '\xb4', '\xb5', '\xb5', '\x00', '\x00', '\xb7',
+ '\xb7', '\xbc', '\xbc', '\xbd', '\xbd', '\xbe', '\xbe', '\xcb',
+ '\xcb', '\xcc', '\xcc', '\xcd', '\xcd', '\xcf', '\xcf', '\xda',
+ '\xdb', '\xce', '\xce'
+};
diff --git a/iconvdata/ibm1112.c b/iconvdata/ibm1112.c
new file mode 100644
index 0000000000..1a36423674
--- /dev/null
+++ b/iconvdata/ibm1112.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1112.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1112.h>
+
+#define CHARSET_NAME "IBM1112//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1112.h b/iconvdata/ibm1112.h
new file mode 100644
index 0000000000..d3776b13ee
--- /dev/null
+++ b/iconvdata/ibm1112.h
@@ -0,0 +1,148 @@
+/* Tables for conversion from and to IBM1112.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0161, [0x43] = 0x00e4,
+ [0x44] = 0x0105, [0x45] = 0x012f, [0x46] = 0x016b, [0x47] = 0x00e5,
+ [0x48] = 0x0113, [0x49] = 0x017e, [0x4a] = 0x00a2, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x0119, [0x53] = 0x0117,
+ [0x54] = 0x010d, [0x55] = 0x0173, [0x56] = 0x201e, [0x57] = 0x201c,
+ [0x58] = 0x0123, [0x59] = 0x00df, [0x5a] = 0x0021, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00ac,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0160, [0x63] = 0x00c4,
+ [0x64] = 0x0104, [0x65] = 0x012e, [0x66] = 0x016a, [0x67] = 0x00c5,
+ [0x68] = 0x0112, [0x69] = 0x017d, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x0118, [0x73] = 0x0116,
+ [0x74] = 0x010c, [0x75] = 0x0172, [0x76] = 0x012a, [0x77] = 0x013b,
+ [0x78] = 0x0122, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x0101, [0x8d] = 0x017c, [0x8e] = 0x0144, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x0156, [0x9b] = 0x0157,
+ [0x9c] = 0x00e6, [0x9d] = 0x0137, [0x9e] = 0x00c6, [0x9f] = 0x00a4,
+ [0xa0] = 0x00b5, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x201d, [0xab] = 0x017a,
+ [0xac] = 0x0100, [0xad] = 0x017b, [0xae] = 0x0143, [0xaf] = 0x00ae,
+ [0xb0] = 0x005e, [0xb1] = 0x00a3, [0xb2] = 0x012b, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x005b, [0xbb] = 0x005d,
+ [0xbc] = 0x0179, [0xbd] = 0x0136, [0xbe] = 0x013c, [0xbf] = 0x00d7,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x014d,
+ [0xcc] = 0x00f6, [0xcd] = 0x0146, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x0107,
+ [0xdc] = 0x00fc, [0xdd] = 0x0142, [0xde] = 0x015b, [0xdf] = 0x2019,
+ [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x014c,
+ [0xec] = 0x00d6, [0xed] = 0x0145, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x0106,
+ [0xfc] = 0x00dc, [0xfd] = 0x0141, [0xfe] = 0x015a, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00c9, idx: 0 },
+ { start: 0x00d3, end: 0x00e9, idx: -9 },
+ { start: 0x00f3, end: 0x0119, idx: -18 },
+ { start: 0x0122, end: 0x0123, idx: -26 },
+ { start: 0x012a, end: 0x012f, idx: -32 },
+ { start: 0x0136, end: 0x014d, idx: -38 },
+ { start: 0x0156, end: 0x0161, idx: -46 },
+ { start: 0x016a, end: 0x016b, idx: -54 },
+ { start: 0x0172, end: 0x017e, idx: -60 },
+ { start: 0x2019, end: 0x201e, idx: -7894 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\xba', '\xe0', '\xbb', '\xb0', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\x00', '\x4a', '\xb1', '\x9f', '\x00', '\x6a', '\xb5',
+ '\x00', '\xb4', '\x00', '\x8a', '\x5f', '\xca', '\xaf', '\x00',
+ '\x90', '\x8f', '\xea', '\xfa', '\x00', '\xa0', '\xb6', '\xb3',
+ '\x00', '\xda', '\x00', '\x8b', '\xb7', '\xb8', '\xb9', '\x00',
+ '\x00', '\x00', '\x00', '\x00', '\x63', '\x67', '\x9e', '\x00',
+ '\x00', '\x71', '\xee', '\x00', '\xef', '\xec', '\xbf', '\x80',
+ '\x00', '\x00', '\x00', '\xfc', '\x00', '\x00', '\x59', '\x00',
+ '\x00', '\x00', '\x00', '\x43', '\x47', '\x9c', '\x00', '\x00',
+ '\x51', '\xce', '\x00', '\xcf', '\xcc', '\xe1', '\x70', '\x00',
+ '\x00', '\x00', '\xdc', '\x00', '\x00', '\x00', '\xac', '\x8c',
+ '\x00', '\x00', '\x64', '\x44', '\xfb', '\xdb', '\x00', '\x00',
+ '\x00', '\x00', '\x74', '\x54', '\x00', '\x00', '\x00', '\x00',
+ '\x68', '\x48', '\x00', '\x00', '\x73', '\x53', '\x72', '\x52',
+ '\x78', '\x58', '\x76', '\xb2', '\x00', '\x00', '\x65', '\x45',
+ '\xbd', '\x9d', '\x00', '\x00', '\x00', '\x77', '\xbe', '\x00',
+ '\x00', '\x00', '\x00', '\xfd', '\xdd', '\xae', '\x8e', '\xed',
+ '\xcd', '\x00', '\x00', '\x00', '\x00', '\x00', '\xeb', '\xcb',
+ '\x9a', '\x9b', '\x00', '\x00', '\xfe', '\xde', '\x00', '\x00',
+ '\x00', '\x00', '\x62', '\x42', '\x66', '\x46', '\x75', '\x55',
+ '\x00', '\x00', '\x00', '\x00', '\x00', '\xbc', '\xab', '\xad',
+ '\x8d', '\x69', '\x49', '\xdf', '\x00', '\x00', '\x57', '\xaa',
+ '\x56'
+};
diff --git a/iconvdata/ibm1123.c b/iconvdata/ibm1123.c
new file mode 100644
index 0000000000..41110dc850
--- /dev/null
+++ b/iconvdata/ibm1123.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1123.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1123.h>
+
+#define CHARSET_NAME "IBM1123//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1123.h b/iconvdata/ibm1123.h
new file mode 100644
index 0000000000..846f98e2bd
--- /dev/null
+++ b/iconvdata/ibm1123.h
@@ -0,0 +1,135 @@
+/* Tables for conversion from and to IBM1123.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0452, [0x43] = 0x0491,
+ [0x44] = 0x0451, [0x45] = 0x0454, [0x46] = 0x0455, [0x47] = 0x0456,
+ [0x48] = 0x0457, [0x49] = 0x0458, [0x4a] = 0x005b, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x0459, [0x52] = 0x045a, [0x53] = 0x045b,
+ [0x54] = 0x045c, [0x55] = 0x045e, [0x56] = 0x045f, [0x57] = 0x042a,
+ [0x58] = 0x2116, [0x59] = 0x0402, [0x5a] = 0x005d, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0490, [0x63] = 0x0401,
+ [0x64] = 0x0404, [0x65] = 0x0405, [0x66] = 0x0406, [0x67] = 0x0407,
+ [0x68] = 0x0408, [0x69] = 0x0409, [0x6a] = 0x007c, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x040a, [0x71] = 0x040b, [0x72] = 0x040c, [0x73] = 0x00ad,
+ [0x74] = 0x040e, [0x75] = 0x040f, [0x76] = 0x044e, [0x77] = 0x0430,
+ [0x78] = 0x0431, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x0446, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x0434, [0x8b] = 0x0435,
+ [0x8c] = 0x0444, [0x8d] = 0x0433, [0x8e] = 0x0445, [0x8f] = 0x0438,
+ [0x90] = 0x0439, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x043a, [0x9b] = 0x043b,
+ [0x9c] = 0x043c, [0x9d] = 0x043d, [0x9e] = 0x043e, [0x9f] = 0x043f,
+ [0xa0] = 0x044f, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x0440, [0xab] = 0x0441,
+ [0xac] = 0x0442, [0xad] = 0x0443, [0xae] = 0x0436, [0xaf] = 0x0432,
+ [0xb0] = 0x044c, [0xb1] = 0x044b, [0xb2] = 0x0437, [0xb3] = 0x0448,
+ [0xb4] = 0x044d, [0xb5] = 0x0449, [0xb6] = 0x0447, [0xb7] = 0x044a,
+ [0xb8] = 0x042e, [0xb9] = 0x0410, [0xba] = 0x0411, [0xbb] = 0x0426,
+ [0xbc] = 0x0414, [0xbd] = 0x0415, [0xbe] = 0x0424, [0xbf] = 0x0413,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x0425, [0xcb] = 0x0418,
+ [0xcc] = 0x0419, [0xcd] = 0x041a, [0xce] = 0x041b, [0xcf] = 0x041c,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x041d, [0xdb] = 0x041e,
+ [0xdc] = 0x041f, [0xdd] = 0x042f, [0xde] = 0x0420, [0xdf] = 0x0421,
+ [0xe0] = 0x005c, [0xe1] = 0x00a7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x0422, [0xeb] = 0x0423,
+ [0xec] = 0x0416, [0xed] = 0x0412, [0xee] = 0x042c, [0xef] = 0x042b,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x0417, [0xfb] = 0x0428,
+ [0xfc] = 0x042d, [0xfd] = 0x0429, [0xfe] = 0x0427, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00a0, idx: 0 },
+ { start: 0x00a7, end: 0x00ad, idx: -6 },
+ { start: 0x0401, end: 0x045f, idx: -857 },
+ { start: 0x0490, end: 0x0491, idx: -905 },
+ { start: 0x2116, end: 0x2116, idx: -8205 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x6a', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xe1', '\x00', '\x00', '\x00', '\x00', '\x00', '\x73',
+ '\x63', '\x59', '\x00', '\x64', '\x65', '\x66', '\x67', '\x68',
+ '\x69', '\x70', '\x71', '\x72', '\x00', '\x74', '\x75', '\xb9',
+ '\xba', '\xed', '\xbf', '\xbc', '\xbd', '\xec', '\xfa', '\xcb',
+ '\xcc', '\xcd', '\xce', '\xcf', '\xda', '\xdb', '\xdc', '\xde',
+ '\xdf', '\xea', '\xeb', '\xbe', '\xca', '\xbb', '\xfe', '\xfb',
+ '\xfd', '\x57', '\xef', '\xee', '\xfc', '\xb8', '\xdd', '\x77',
+ '\x78', '\xaf', '\x8d', '\x8a', '\x8b', '\xae', '\xb2', '\x8f',
+ '\x90', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', '\xaa',
+ '\xab', '\xac', '\xad', '\x8c', '\x8e', '\x80', '\xb6', '\xb3',
+ '\xb5', '\xb7', '\xb1', '\xb0', '\xb4', '\x76', '\xa0', '\x00',
+ '\x44', '\x42', '\x00', '\x45', '\x46', '\x47', '\x48', '\x49',
+ '\x51', '\x52', '\x53', '\x54', '\x00', '\x55', '\x56', '\x62',
+ '\x43', '\x58'
+};
diff --git a/iconvdata/ibm1130.c b/iconvdata/ibm1130.c
new file mode 100644
index 0000000000..6c0048ef0e
--- /dev/null
+++ b/iconvdata/ibm1130.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1130.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1130.h>
+
+#define CHARSET_NAME "IBM1130//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1130.h b/iconvdata/ibm1130.h
new file mode 100644
index 0000000000..fe536d0800
--- /dev/null
+++ b/iconvdata/ibm1130.h
@@ -0,0 +1,141 @@
+/* Tables for conversion from and to IBM1130.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x0103, [0x47] = 0x00e5,
+ [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x005b, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x0303, [0x59] = 0x00df, [0x5a] = 0x005d, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x0102, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x20ab, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x0111, [0x8d] = 0x0309, [0x8e] = 0x0300, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x0152, [0x9e] = 0x00c6, [0x9f] = 0x00a4,
+ [0xa0] = 0x00b5, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x0110, [0xad] = 0x0323, [0xae] = 0x0301, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+ [0xbc] = 0x00af, [0xbd] = 0x0153, [0xbe] = 0x0178, [0xbf] = 0x00d7,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00f6, [0xcd] = 0x01b0, [0xce] = 0x00f3, [0xcf] = 0x01a1,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x00fc, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x00d6, [0xed] = 0x01af, [0xee] = 0x00d3, [0xef] = 0x01a0,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x0103, idx: 0 },
+ { start: 0x0110, end: 0x0111, idx: -12 },
+ { start: 0x0152, end: 0x0153, idx: -76 },
+ { start: 0x0178, end: 0x0178, idx: -112 },
+ { start: 0x01a0, end: 0x01a1, idx: -151 },
+ { start: 0x01af, end: 0x01b0, idx: -164 },
+ { start: 0x0300, end: 0x0309, idx: -499 },
+ { start: 0x0323, end: 0x0323, idx: -524 },
+ { start: 0x20ab, end: 0x20ab, idx: -8083 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\xbb', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\xb1', '\x9f', '\xb2', '\x6a', '\xb5',
+ '\x00', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+ '\x90', '\x8f', '\xea', '\xfa', '\x00', '\xa0', '\xb6', '\xb3',
+ '\x00', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x00', '\x63', '\x67', '\x9e', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x00', '\x75', '\x76', '\x77',
+ '\x00', '\x69', '\x00', '\xee', '\xeb', '\x00', '\xec', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\x00', '\x00', '\x59',
+ '\x44', '\x45', '\x42', '\x00', '\x43', '\x47', '\x9c', '\x48',
+ '\x54', '\x51', '\x52', '\x53', '\x00', '\x55', '\x56', '\x57',
+ '\x00', '\x49', '\x00', '\xce', '\xcb', '\x00', '\xcc', '\xe1',
+ '\x70', '\xdd', '\xde', '\xdb', '\xdc', '\x00', '\x00', '\xdf',
+ '\x00', '\x00', '\x66', '\x46', '\xac', '\x8c', '\x9d', '\xbd',
+ '\xbe', '\xef', '\xcf', '\xed', '\xcd', '\x8e', '\xae', '\x00',
+ '\x58', '\x00', '\x00', '\x00', '\x00', '\x00', '\x8d', '\xad',
+ '\x78'
+};
diff --git a/iconvdata/ibm1140.c b/iconvdata/ibm1140.c
new file mode 100644
index 0000000000..9cff5e006a
--- /dev/null
+++ b/iconvdata/ibm1140.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1140.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1140.h>
+
+#define CHARSET_NAME "IBM1140//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1140.h b/iconvdata/ibm1140.h
new file mode 100644
index 0000000000..3513a406b5
--- /dev/null
+++ b/iconvdata/ibm1140.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1140.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+ [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x00a2, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x0021, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00ac,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+ [0xa0] = 0x00b5, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x005e, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x005b, [0xbb] = 0x005d,
+ [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00f6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x00fc, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x00d6, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\xba', '\xe0', '\xbb', '\xb0', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\x4a', '\xb1', '\x00', '\xb2', '\x6a', '\xb5',
+ '\xbd', '\xb4', '\x9a', '\x8a', '\x5f', '\xca', '\xaf', '\xbc',
+ '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x63', '\x67', '\x9e', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x69', '\xed', '\xee', '\xeb', '\xef', '\xec', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\xae', '\x59',
+ '\x44', '\x45', '\x42', '\x46', '\x43', '\x47', '\x9c', '\x48',
+ '\x54', '\x51', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x8c', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\xcc', '\xe1',
+ '\x70', '\xdd', '\xde', '\xdb', '\xdc', '\x8d', '\x8e', '\xdf',
+ '\xbc', '\x9f'
+};
diff --git a/iconvdata/ibm1141.c b/iconvdata/ibm1141.c
new file mode 100644
index 0000000000..0998060bf9
--- /dev/null
+++ b/iconvdata/ibm1141.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1141.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1141.h>
+
+#define CHARSET_NAME "IBM1141//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1141.h b/iconvdata/ibm1141.h
new file mode 100644
index 0000000000..1b427b6a47
--- /dev/null
+++ b/iconvdata/ibm1141.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1141.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x007b,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+ [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x00c4, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x007e, [0x5a] = 0x00dc, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x005b,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00f6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x00a7, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+ [0xa0] = 0x00b5, [0xa1] = 0x00df, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x0040, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+ [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x00e4, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00a6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x00fc, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x007d, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x00d6, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x005c, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x005d, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\xb5', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x63', '\xec', '\xfc', '\x5f', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\x43', '\xbb', '\xdc', '\x59', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\xb1', '\x00', '\xb2', '\xcc', '\x7c',
+ '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+ '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x4a', '\x67', '\x9e', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x69', '\xed', '\xee', '\xeb', '\xef', '\xe0', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\x5a', '\xad', '\xae', '\xa1',
+ '\x44', '\x45', '\x42', '\x46', '\xc0', '\x47', '\x9c', '\x48',
+ '\x54', '\x51', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x8c', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\x6a', '\xe1',
+ '\x70', '\xdd', '\xde', '\xdb', '\xd0', '\x8d', '\x8e', '\xdf',
+ '\xbc', '\x9f'
+};
diff --git a/iconvdata/ibm1142.c b/iconvdata/ibm1142.c
new file mode 100644
index 0000000000..147784ca71
--- /dev/null
+++ b/iconvdata/ibm1142.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1142.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1142.h>
+
+#define CHARSET_NAME "IBM1142//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1142.h b/iconvdata/ibm1142.h
new file mode 100644
index 0000000000..04dd4c3e1f
--- /dev/null
+++ b/iconvdata/ibm1142.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1142.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x007d,
+ [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x0023, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x20ac, [0x5b] = 0x00c5,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x0024,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00f8, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00a6, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x00c6,
+ [0x7c] = 0x00d8, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x0040, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x007b, [0x9d] = 0x00b8, [0x9e] = 0x005b, [0x9f] = 0x005d,
+ [0xa0] = 0x00b5, [0xa1] = 0x00fc, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+ [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x00e6, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00f6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x00e5, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x007e, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x00d6, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x4a', '\x67', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x80', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x9e', '\xe0', '\x9f', '\x5f', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\x9c', '\xbb', '\x47', '\xdc', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\xb1', '\x00', '\xb2', '\x70', '\xb5',
+ '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+ '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x63', '\x5b', '\x7b', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x69', '\xed', '\xee', '\xeb', '\xef', '\xec', '\xbf',
+ '\x7c', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\xae', '\x59',
+ '\x44', '\x45', '\x42', '\x46', '\x43', '\xd0', '\xc0', '\x48',
+ '\x54', '\x51', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x8c', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\xcc', '\xe1',
+ '\x6a', '\xdd', '\xde', '\xdb', '\xa1', '\x8d', '\x8e', '\xdf',
+ '\xbc', '\x5a'
+};
diff --git a/iconvdata/ibm1143.c b/iconvdata/ibm1143.c
new file mode 100644
index 0000000000..5c7c208e4e
--- /dev/null
+++ b/iconvdata/ibm1143.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1143.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1143.h>
+
+#define CHARSET_NAME "IBM1143//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1143.h b/iconvdata/ibm1143.h
new file mode 100644
index 0000000000..2a5112c261
--- /dev/null
+++ b/iconvdata/ibm1143.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1143.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x007b,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x007d,
+ [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x00a7, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x0060, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x20ac, [0x5b] = 0x00c5,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x0023,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x0024,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00f6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x005c, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x00e9, [0x7a] = 0x003a, [0x7b] = 0x00c4,
+ [0x7c] = 0x00d6, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x005d,
+ [0xa0] = 0x00b5, [0xa1] = 0x00fc, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x005b, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+ [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x00e4, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00a6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x00e5, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x007e, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x00c9, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x0040, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x63', '\x67', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\xec', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\xb5', '\x71', '\x9f', '\x5f', '\x6d',
+ '\x51', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\x43', '\xbb', '\x47', '\xdc', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\xb1', '\x00', '\xb2', '\xcc', '\x4a',
+ '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+ '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x7b', '\x5b', '\x9e', '\x68',
+ '\x74', '\xe0', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x69', '\xed', '\xee', '\xeb', '\xef', '\x7c', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\xae', '\x59',
+ '\x44', '\x45', '\x42', '\x46', '\xc0', '\xd0', '\x9c', '\x48',
+ '\x54', '\x79', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x8c', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\x6a', '\xe1',
+ '\x70', '\xdd', '\xde', '\xdb', '\xa1', '\x8d', '\x8e', '\xdf',
+ '\xbc', '\x5a'
+};
diff --git a/iconvdata/ibm1144.c b/iconvdata/ibm1144.c
new file mode 100644
index 0000000000..a05436a9db
--- /dev/null
+++ b/iconvdata/ibm1144.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1144.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1144.h>
+
+#define CHARSET_NAME "IBM1144//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1144.h b/iconvdata/ibm1144.h
new file mode 100644
index 0000000000..df39a735d8
--- /dev/null
+++ b/iconvdata/ibm1144.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1144.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x007b, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+ [0x48] = 0x005c, [0x49] = 0x00f1, [0x4a] = 0x00b0, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x005d, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x007d, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x007e, [0x59] = 0x00df, [0x5a] = 0x00e9, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00f2, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x00f9, [0x7a] = 0x003a, [0x7b] = 0x00a3,
+ [0x7c] = 0x00a7, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x005b, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+ [0xa0] = 0x00b5, [0xa1] = 0x00ec, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x0023, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x0040, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+ [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x00e0, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00f6, [0xcd] = 0x00a6, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x00e8, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x00fc, [0xdd] = 0x0060, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x00e7, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x00d6, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\xb1', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\xb5', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x90', '\x48', '\x51', '\x5f', '\x6d',
+ '\xdd', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\x44', '\xbb', '\x54', '\x58', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\x7b', '\x00', '\xb2', '\xcd', '\x7c',
+ '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+ '\x4a', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x63', '\x67', '\x9e', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x69', '\xed', '\xee', '\xeb', '\xef', '\xec', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\xae', '\x59',
+ '\xc0', '\x45', '\x42', '\x46', '\x43', '\x47', '\x9c', '\xe0',
+ '\xd0', '\x5a', '\x52', '\x53', '\xa1', '\x55', '\x56', '\x57',
+ '\x8c', '\x49', '\x6a', '\xce', '\xcb', '\xcf', '\xcc', '\xe1',
+ '\x70', '\x79', '\xde', '\xdb', '\xdc', '\x8d', '\x8e', '\xdf',
+ '\xbc', '\x9f'
+};
diff --git a/iconvdata/ibm1145.c b/iconvdata/ibm1145.c
new file mode 100644
index 0000000000..b3af001366
--- /dev/null
+++ b/iconvdata/ibm1145.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1145.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1145.h>
+
+#define CHARSET_NAME "IBM1145//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1145.h b/iconvdata/ibm1145.h
new file mode 100644
index 0000000000..fabc28f9f5
--- /dev/null
+++ b/iconvdata/ibm1145.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1145.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+ [0x48] = 0x00e7, [0x49] = 0x00a6, [0x4a] = 0x005b, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x005d, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00ac,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x0023, [0x6a] = 0x00f1, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x00d1,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+ [0xa0] = 0x00b5, [0xa1] = 0x00a8, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x005e, [0xbb] = 0x0021,
+ [0xbc] = 0x00af, [0xbd] = 0x007e, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00f6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x00fc, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x00d6, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\xbb', '\x7f', '\x69', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\xba', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xbd', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\xb1', '\x00', '\xb2', '\x49', '\xb5',
+ '\xa1', '\xb4', '\x9a', '\x8a', '\x5f', '\xca', '\xaf', '\xbc',
+ '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x63', '\x67', '\x9e', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x7b', '\xed', '\xee', '\xeb', '\xef', '\xec', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\xae', '\x59',
+ '\x44', '\x45', '\x42', '\x46', '\x43', '\x47', '\x9c', '\x48',
+ '\x54', '\x51', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x8c', '\x6a', '\xcd', '\xce', '\xcb', '\xcf', '\xcc', '\xe1',
+ '\x70', '\xdd', '\xde', '\xdb', '\xdc', '\x8d', '\x8e', '\xdf',
+ '\xbc', '\x9f'
+};
diff --git a/iconvdata/ibm1146.c b/iconvdata/ibm1146.c
new file mode 100644
index 0000000000..72e6e6903d
--- /dev/null
+++ b/iconvdata/ibm1146.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1146.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1146.h>
+
+#define CHARSET_NAME "IBM1146//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1146.h b/iconvdata/ibm1146.h
new file mode 100644
index 0000000000..3b58e9364e
--- /dev/null
+++ b/iconvdata/ibm1146.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1146.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+ [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x0024, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x0021, [0x5b] = 0x00a3,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00ac,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+ [0xa0] = 0x00b5, [0xa1] = 0x00af, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x005b, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x005e, [0xbb] = 0x005d,
+ [0xbc] = 0x007e, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00f6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x00fc, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x00d6, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x4a', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\xb1', '\xe0', '\xbb', '\xba', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xbc', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\x5b', '\x00', '\xb2', '\x6a', '\xb5',
+ '\xbd', '\xb4', '\x9a', '\x8a', '\x5f', '\xca', '\xaf', '\xa1',
+ '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x63', '\x67', '\x9e', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x69', '\xed', '\xee', '\xeb', '\xef', '\xec', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\xae', '\x59',
+ '\x44', '\x45', '\x42', '\x46', '\x43', '\x47', '\x9c', '\x48',
+ '\x54', '\x51', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x8c', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\xcc', '\xe1',
+ '\x70', '\xdd', '\xde', '\xdb', '\xdc', '\x8d', '\x8e', '\xdf',
+ '\xa1', '\x9f'
+};
diff --git a/iconvdata/ibm1147.c b/iconvdata/ibm1147.c
new file mode 100644
index 0000000000..5c47102dd7
--- /dev/null
+++ b/iconvdata/ibm1147.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1147.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1147.h>
+
+#define CHARSET_NAME "IBM1147//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1147.h b/iconvdata/ibm1147.h
new file mode 100644
index 0000000000..3dbb3fedaa
--- /dev/null
+++ b/iconvdata/ibm1147.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1147.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x0040, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+ [0x48] = 0x005c, [0x49] = 0x00f1, [0x4a] = 0x00b0, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x007b, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x007d, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x00a7, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00f9, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x00b5, [0x7a] = 0x003a, [0x7b] = 0x00a3,
+ [0x7c] = 0x00e0, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x005b, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+ [0xa0] = 0x0060, [0xa1] = 0x00a8, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x0023, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x005d, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+ [0xbc] = 0x00af, [0xbd] = 0x007e, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x00e9, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00f6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x00e8, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x00fc, [0xdd] = 0x00a6, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x00e7, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x00d6, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\xb1', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x44', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x90', '\x48', '\xb5', '\x5f', '\x6d',
+ '\xa0', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\x51', '\xbb', '\x54', '\xbd', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\x7b', '\x00', '\xb2', '\xdd', '\x5a',
+ '\xa1', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+ '\x4a', '\x8f', '\xea', '\xfa', '\xbe', '\x79', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x63', '\x67', '\x9e', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x69', '\xed', '\xee', '\xeb', '\xef', '\xec', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\xae', '\x59',
+ '\x7c', '\x45', '\x42', '\x46', '\x43', '\x47', '\x9c', '\xe0',
+ '\xd0', '\xc0', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x8c', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\xcc', '\xe1',
+ '\x70', '\x6a', '\xde', '\xdb', '\xdc', '\x8d', '\x8e', '\xdf',
+ '\xbc', '\x9f'
+};
diff --git a/iconvdata/ibm1148.c b/iconvdata/ibm1148.c
new file mode 100644
index 0000000000..85d6fed2dc
--- /dev/null
+++ b/iconvdata/ibm1148.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1148.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1148.h>
+
+#define CHARSET_NAME "IBM1148//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1148.h b/iconvdata/ibm1148.h
new file mode 100644
index 0000000000..7f0cfe0583
--- /dev/null
+++ b/iconvdata/ibm1148.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1148.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+ [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x005b, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x005d, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x00f0, [0x8d] = 0x00fd, [0x8e] = 0x00fe, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+ [0xa0] = 0x00b5, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x00d0, [0xad] = 0x00dd, [0xae] = 0x00de, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+ [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x00f6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x00fc, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x00d6, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\xbb', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\xb1', '\x00', '\xb2', '\x6a', '\xb5',
+ '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+ '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x63', '\x67', '\x9e', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\xac', '\x69', '\xed', '\xee', '\xeb', '\xef', '\xec', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\xae', '\x59',
+ '\x44', '\x45', '\x42', '\x46', '\x43', '\x47', '\x9c', '\x48',
+ '\x54', '\x51', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x8c', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\xcc', '\xe1',
+ '\x70', '\xdd', '\xde', '\xdb', '\xdc', '\x8d', '\x8e', '\xdf',
+ '\xbc', '\x9f'
+};
diff --git a/iconvdata/ibm1149.c b/iconvdata/ibm1149.c
new file mode 100644
index 0000000000..a91652bba5
--- /dev/null
+++ b/iconvdata/ibm1149.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1149.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1149.h>
+
+#define CHARSET_NAME "IBM1149//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1149.h b/iconvdata/ibm1149.h
new file mode 100644
index 0000000000..1debebfad0
--- /dev/null
+++ b/iconvdata/ibm1149.h
@@ -0,0 +1,132 @@
+/* Tables for conversion from and to IBM1149.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+ [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+ [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x00de, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+ [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+ [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x00c6, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00d6,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+ [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+ [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+ [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+ [0x78] = 0x00cc, [0x79] = 0x00f0, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x00d0, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+ [0x8c] = 0x0060, [0x8d] = 0x00fd, [0x8e] = 0x007b, [0x8f] = 0x00b1,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+ [0x9c] = 0x007d, [0x9d] = 0x00b8, [0x9e] = 0x005d, [0x9f] = 0x20ac,
+ [0xa0] = 0x00b5, [0xa1] = 0x00f6, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+ [0xac] = 0x0040, [0xad] = 0x00dd, [0xae] = 0x005b, [0xaf] = 0x00ae,
+ [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+ [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+ [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+ [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x005c, [0xbf] = 0x00d7,
+ [0xc0] = 0x00fe, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+ [0xcc] = 0x007e, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+ [0xd0] = 0x00e6, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+ [0xdc] = 0x00fc, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+ [0xe0] = 0x00b4, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+ [0xec] = 0x005e, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+ [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x203e, end: 0x203e, idx: -7998 },
+ { start: 0x20ac, end: 0x20ac, idx: -8107 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\xac', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\xae', '\xbe', '\x9e', '\xec', '\x6d',
+ '\x8c', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\x8e', '\xbb', '\x9c', '\xcc', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\xaa', '\xb0', '\xb1', '\x00', '\xb2', '\x6a', '\xb5',
+ '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+ '\x90', '\x8f', '\xea', '\xfa', '\xe0', '\xa0', '\xb6', '\xb3',
+ '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+ '\x64', '\x65', '\x62', '\x66', '\x63', '\x67', '\x5a', '\x68',
+ '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+ '\x7c', '\x69', '\xed', '\xee', '\xeb', '\xef', '\x5f', '\xbf',
+ '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\x4a', '\x59',
+ '\x44', '\x45', '\x42', '\x46', '\x43', '\x47', '\xd0', '\x48',
+ '\x54', '\x51', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+ '\x79', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\xa1', '\xe1',
+ '\x70', '\xdd', '\xde', '\xdb', '\xdc', '\x8d', '\xc0', '\xdf',
+ '\xbc', '\x9f'
+};
diff --git a/iconvdata/ibm1166.c b/iconvdata/ibm1166.c
new file mode 100644
index 0000000000..75ff337c1a
--- /dev/null
+++ b/iconvdata/ibm1166.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1166.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1166.h>
+
+#define CHARSET_NAME "IBM1166//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1166.h b/iconvdata/ibm1166.h
new file mode 100644
index 0000000000..9eaa63e547
--- /dev/null
+++ b/iconvdata/ibm1166.h
@@ -0,0 +1,143 @@
+/* Tables for conversion from and to IBM1166.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x04d9, [0x43] = 0x0493,
+ [0x44] = 0x0451, [0x45] = 0x0454, [0x46] = 0x0455, [0x47] = 0x0456,
+ [0x48] = 0x049b, [0x49] = 0x0458, [0x4a] = 0x005b, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x04a3, [0x52] = 0x04e9, [0x53] = 0x04b1,
+ [0x54] = 0x04af, [0x55] = 0x045e, [0x56] = 0x04bb, [0x57] = 0x042a,
+ [0x58] = 0x2116, [0x59] = 0x04d8, [0x5a] = 0x005d, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0492, [0x63] = 0x0401,
+ [0x64] = 0x0404, [0x65] = 0x0405, [0x66] = 0x0406, [0x67] = 0x049a,
+ [0x68] = 0x0408, [0x69] = 0x04a2, [0x6a] = 0x007c, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x04e8, [0x71] = 0x04b0, [0x72] = 0x04ae, [0x73] = 0x00ad,
+ [0x74] = 0x040e, [0x75] = 0x04ba, [0x76] = 0x044e, [0x77] = 0x0430,
+ [0x78] = 0x0431, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x0446, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x0434, [0x8b] = 0x0435,
+ [0x8c] = 0x0444, [0x8d] = 0x0433, [0x8e] = 0x0445, [0x8f] = 0x0438,
+ [0x90] = 0x0439, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x043a, [0x9b] = 0x043b,
+ [0x9c] = 0x043c, [0x9d] = 0x043d, [0x9e] = 0x043e, [0x9f] = 0x043f,
+ [0xa0] = 0x044f, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x0440, [0xab] = 0x0441,
+ [0xac] = 0x0442, [0xad] = 0x0443, [0xae] = 0x0436, [0xaf] = 0x0432,
+ [0xb0] = 0x044c, [0xb1] = 0x044b, [0xb2] = 0x0437, [0xb3] = 0x0448,
+ [0xb4] = 0x044d, [0xb5] = 0x0449, [0xb6] = 0x0447, [0xb7] = 0x044a,
+ [0xb8] = 0x042e, [0xb9] = 0x0410, [0xba] = 0x0411, [0xbb] = 0x0426,
+ [0xbc] = 0x0414, [0xbd] = 0x0415, [0xbe] = 0x0424, [0xbf] = 0x0413,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x0425, [0xcb] = 0x0418,
+ [0xcc] = 0x0419, [0xcd] = 0x041a, [0xce] = 0x041b, [0xcf] = 0x041c,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x041d, [0xdb] = 0x041e,
+ [0xdc] = 0x041f, [0xdd] = 0x042f, [0xde] = 0x0420, [0xdf] = 0x0421,
+ [0xe0] = 0x005c, [0xe1] = 0x20ac, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x0422, [0xeb] = 0x0423,
+ [0xec] = 0x0416, [0xed] = 0x0412, [0xee] = 0x042c, [0xef] = 0x042b,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x0417, [0xfb] = 0x0428,
+ [0xfc] = 0x042d, [0xfd] = 0x0429, [0xfe] = 0x0427, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00a0, idx: 0 },
+ { start: 0x00ad, end: 0x00ad, idx: -12 },
+ { start: 0x0401, end: 0x045e, idx: -863 },
+ { start: 0x0492, end: 0x0493, idx: -914 },
+ { start: 0x049a, end: 0x049b, idx: -920 },
+ { start: 0x04a2, end: 0x04a3, idx: -926 },
+ { start: 0x04ae, end: 0x04b1, idx: -936 },
+ { start: 0x04ba, end: 0x04bb, idx: -944 },
+ { start: 0x04d8, end: 0x04d9, idx: -972 },
+ { start: 0x04e8, end: 0x04e9, idx: -986 },
+ { start: 0x20ac, end: 0x20ac, idx: -8092 },
+ { start: 0x2116, end: 0x2116, idx: -8197 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x6a', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\x73', '\x63', '\x00', '\x00', '\x64', '\x65', '\x66',
+ '\x00', '\x68', '\x00', '\x00', '\x00', '\x00', '\x00', '\x74',
+ '\x00', '\xb9', '\xba', '\xed', '\xbf', '\xbc', '\xbd', '\xec',
+ '\xfa', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', '\xda', '\xdb',
+ '\xdc', '\xde', '\xdf', '\xea', '\xeb', '\xbe', '\xca', '\xbb',
+ '\xfe', '\xfb', '\xfd', '\x57', '\xef', '\xee', '\xfc', '\xb8',
+ '\xdd', '\x77', '\x78', '\xaf', '\x8d', '\x8a', '\x8b', '\xae',
+ '\xb2', '\x8f', '\x90', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e',
+ '\x9f', '\xaa', '\xab', '\xac', '\xad', '\x8c', '\x8e', '\x80',
+ '\xb6', '\xb3', '\xb5', '\xb7', '\xb1', '\xb0', '\xb4', '\x76',
+ '\xa0', '\x00', '\x44', '\x00', '\x00', '\x45', '\x46', '\x47',
+ '\x00', '\x49', '\x00', '\x00', '\x00', '\x00', '\x00', '\x55',
+ '\x62', '\x43', '\x67', '\x48', '\x69', '\x51', '\x72', '\x54',
+ '\x71', '\x53', '\x75', '\x56', '\x59', '\x42', '\x70', '\x52',
+ '\xe1', '\x58'
+};
diff --git a/iconvdata/ibm1167.c b/iconvdata/ibm1167.c
new file mode 100644
index 0000000000..5a05d799aa
--- /dev/null
+++ b/iconvdata/ibm1167.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1167.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm1167.h>
+
+#define CHARSET_NAME "IBM1167//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1167.h b/iconvdata/ibm1167.h
new file mode 100644
index 0000000000..b19e268e34
--- /dev/null
+++ b/iconvdata/ibm1167.h
@@ -0,0 +1,156 @@
+/* Tables for conversion from and to IBM1167.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f,
+ [0x80] = 0x2500, [0x81] = 0x2502, [0x82] = 0x250c, [0x83] = 0x2510,
+ [0x84] = 0x2514, [0x85] = 0x2518, [0x86] = 0x251c, [0x87] = 0x2524,
+ [0x88] = 0x252c, [0x89] = 0x2534, [0x8a] = 0x253c, [0x8b] = 0x2580,
+ [0x8c] = 0x2584, [0x8d] = 0x2588, [0x8e] = 0x258c, [0x8f] = 0x2590,
+ [0x90] = 0x2591, [0x91] = 0x2592, [0x92] = 0x2593, [0x93] = 0x201c,
+ [0x94] = 0x25a0, [0x95] = 0x2219, [0x96] = 0x201d, [0x97] = 0x2014,
+ [0x98] = 0x2116, [0x99] = 0x2122, [0x9a] = 0x00a0, [0x9b] = 0x00bb,
+ [0x9c] = 0x00ae, [0x9d] = 0x00ab, [0x9e] = 0x00b7, [0x9f] = 0x00a4,
+ [0xa0] = 0x2550, [0xa1] = 0x2551, [0xa2] = 0x2552, [0xa3] = 0x0451,
+ [0xa4] = 0x0454, [0xa5] = 0x2554, [0xa6] = 0x0456, [0xa7] = 0x0457,
+ [0xa8] = 0x2557, [0xa9] = 0x2558, [0xaa] = 0x2559, [0xab] = 0x255a,
+ [0xac] = 0x255b, [0xad] = 0x0491, [0xae] = 0x045e, [0xaf] = 0x255e,
+ [0xb0] = 0x255f, [0xb1] = 0x2560, [0xb2] = 0x2561, [0xb3] = 0x0401,
+ [0xb4] = 0x0404, [0xb5] = 0x2563, [0xb6] = 0x0406, [0xb7] = 0x0407,
+ [0xb8] = 0x2566, [0xb9] = 0x2567, [0xba] = 0x2568, [0xbb] = 0x2569,
+ [0xbc] = 0x256a, [0xbd] = 0x0490, [0xbe] = 0x040e, [0xbf] = 0x00a9,
+ [0xc0] = 0x044e, [0xc1] = 0x0430, [0xc2] = 0x0431, [0xc3] = 0x0446,
+ [0xc4] = 0x0434, [0xc5] = 0x0435, [0xc6] = 0x0444, [0xc7] = 0x0433,
+ [0xc8] = 0x0445, [0xc9] = 0x0438, [0xca] = 0x0439, [0xcb] = 0x043a,
+ [0xcc] = 0x043b, [0xcd] = 0x043c, [0xce] = 0x043d, [0xcf] = 0x043e,
+ [0xd0] = 0x043f, [0xd1] = 0x044f, [0xd2] = 0x0440, [0xd3] = 0x0441,
+ [0xd4] = 0x0442, [0xd5] = 0x0443, [0xd6] = 0x0436, [0xd7] = 0x0432,
+ [0xd8] = 0x044c, [0xd9] = 0x044b, [0xda] = 0x0437, [0xdb] = 0x0448,
+ [0xdc] = 0x044d, [0xdd] = 0x0449, [0xde] = 0x0447, [0xdf] = 0x044a,
+ [0xe0] = 0x042e, [0xe1] = 0x0410, [0xe2] = 0x0411, [0xe3] = 0x0426,
+ [0xe4] = 0x0414, [0xe5] = 0x0415, [0xe6] = 0x0424, [0xe7] = 0x0413,
+ [0xe8] = 0x0425, [0xe9] = 0x0418, [0xea] = 0x0419, [0xeb] = 0x041a,
+ [0xec] = 0x041b, [0xed] = 0x041c, [0xee] = 0x041d, [0xef] = 0x041e,
+ [0xf0] = 0x041f, [0xf1] = 0x042f, [0xf2] = 0x0420, [0xf3] = 0x0421,
+ [0xf4] = 0x0422, [0xf5] = 0x0423, [0xf6] = 0x0416, [0xf7] = 0x0412,
+ [0xf8] = 0x042c, [0xf9] = 0x042b, [0xfa] = 0x0417, [0xfb] = 0x0428,
+ [0xfc] = 0x042d, [0xfd] = 0x0429, [0xfe] = 0x0427, [0xff] = 0x042a
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x007f, idx: 0 },
+ { start: 0x00a0, end: 0x00ae, idx: -32 },
+ { start: 0x00b7, end: 0x00bb, idx: -40 },
+ { start: 0x0401, end: 0x0407, idx: -877 },
+ { start: 0x040e, end: 0x0457, idx: -883 },
+ { start: 0x045e, end: 0x045e, idx: -889 },
+ { start: 0x0490, end: 0x0491, idx: -938 },
+ { start: 0x2014, end: 0x2014, idx: -7980 },
+ { start: 0x201c, end: 0x201d, idx: -7987 },
+ { start: 0x2116, end: 0x2116, idx: -8235 },
+ { start: 0x2122, end: 0x2122, idx: -8246 },
+ { start: 0x2219, end: 0x2219, idx: -8492 },
+ { start: 0x2500, end: 0x2502, idx: -9234 },
+ { start: 0x250c, end: 0x251c, idx: -9243 },
+ { start: 0x2524, end: 0x2524, idx: -9250 },
+ { start: 0x252c, end: 0x252c, idx: -9257 },
+ { start: 0x2534, end: 0x2534, idx: -9264 },
+ { start: 0x253c, end: 0x253c, idx: -9271 },
+ { start: 0x2550, end: 0x256a, idx: -9290 },
+ { start: 0x2580, end: 0x2593, idx: -9311 },
+ { start: 0x25a0, end: 0x25a0, idx: -9323 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x9a', '\x00', '\x00', '\x00', '\x9f', '\x00', '\x00', '\x00',
+ '\x00', '\xbf', '\x00', '\x9d', '\x00', '\x00', '\x9c', '\x9e',
+ '\x00', '\x00', '\x00', '\x9b', '\xb3', '\x00', '\x00', '\xb4',
+ '\x00', '\xb6', '\xb7', '\xbe', '\x00', '\xe1', '\xe2', '\xf7',
+ '\xe7', '\xe4', '\xe5', '\xf6', '\xfa', '\xe9', '\xea', '\xeb',
+ '\xec', '\xed', '\xee', '\xef', '\xf0', '\xf2', '\xf3', '\xf4',
+ '\xf5', '\xe6', '\xe8', '\xe3', '\xfe', '\xfb', '\xfd', '\xff',
+ '\xf9', '\xf8', '\xfc', '\xe0', '\xf1', '\xc1', '\xc2', '\xd7',
+ '\xc7', '\xc4', '\xc5', '\xd6', '\xda', '\xc9', '\xca', '\xcb',
+ '\xcc', '\xcd', '\xce', '\xcf', '\xd0', '\xd2', '\xd3', '\xd4',
+ '\xd5', '\xc6', '\xc8', '\xc3', '\xde', '\xdb', '\xdd', '\xdf',
+ '\xd9', '\xd8', '\xdc', '\xc0', '\xd1', '\x00', '\xa3', '\x00',
+ '\x00', '\xa4', '\x00', '\xa6', '\xa7', '\xae', '\xbd', '\xad',
+ '\x97', '\x93', '\x96', '\x98', '\x99', '\x95', '\x80', '\x00',
+ '\x81', '\x82', '\x00', '\x00', '\x00', '\x83', '\x00', '\x00',
+ '\x00', '\x84', '\x00', '\x00', '\x00', '\x85', '\x00', '\x00',
+ '\x00', '\x86', '\x87', '\x88', '\x89', '\x8a', '\xa0', '\xa1',
+ '\xa2', '\x00', '\xa5', '\x00', '\x00', '\xa8', '\xa9', '\xaa',
+ '\xab', '\xac', '\x00', '\x00', '\xaf', '\xb0', '\xb1', '\xb2',
+ '\x00', '\xb5', '\x00', '\x00', '\xb8', '\xb9', '\xba', '\xbb',
+ '\xbc', '\x8b', '\x00', '\x00', '\x00', '\x8c', '\x00', '\x00',
+ '\x00', '\x8d', '\x00', '\x00', '\x00', '\x8e', '\x00', '\x00',
+ '\x00', '\x8f', '\x90', '\x91', '\x92', '\x94'
+};
diff --git a/iconvdata/ibm12712.c b/iconvdata/ibm12712.c
new file mode 100644
index 0000000000..8bc0760953
--- /dev/null
+++ b/iconvdata/ibm12712.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM12712.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm12712.h>
+
+#define CHARSET_NAME "IBM12712//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm12712.h b/iconvdata/ibm12712.h
new file mode 100644
index 0000000000..1c42e6fc5d
--- /dev/null
+++ b/iconvdata/ibm12712.h
@@ -0,0 +1,129 @@
+/* Tables for conversion from and to IBM12712.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x05d0, [0x42] = 0x05d1, [0x43] = 0x05d2,
+ [0x44] = 0x05d3, [0x45] = 0x05d4, [0x46] = 0x05d5, [0x47] = 0x05d6,
+ [0x48] = 0x05d7, [0x49] = 0x05d8, [0x4a] = 0x00a2, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+ [0x50] = 0x0026, [0x51] = 0x05d9, [0x52] = 0x05da, [0x53] = 0x05db,
+ [0x54] = 0x05dc, [0x55] = 0x05dd, [0x56] = 0x05de, [0x57] = 0x05df,
+ [0x58] = 0x05e0, [0x59] = 0x05e1, [0x5a] = 0x0021, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00ac,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x05e2, [0x63] = 0x05e3,
+ [0x64] = 0x05e4, [0x65] = 0x05e5, [0x66] = 0x05e6, [0x67] = 0x05e7,
+ [0x68] = 0x05e8, [0x69] = 0x05e9, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x71] = 0x05ea, [0x74] = 0x00a0, [0x78] = 0x2017, [0x79] = 0x0060,
+ [0x7a] = 0x003a, [0x7b] = 0x0023, [0x7c] = 0x0040, [0x7d] = 0x0027,
+ [0x7e] = 0x003d, [0x7f] = 0x0022, [0x81] = 0x0061, [0x82] = 0x0062,
+ [0x83] = 0x0063, [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066,
+ [0x87] = 0x0067, [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab,
+ [0x8b] = 0x00bb, [0x8f] = 0x00b1, [0x90] = 0x00b0, [0x91] = 0x006a,
+ [0x92] = 0x006b, [0x93] = 0x006c, [0x94] = 0x006d, [0x95] = 0x006e,
+ [0x96] = 0x006f, [0x97] = 0x0070, [0x98] = 0x0071, [0x99] = 0x0072,
+ [0x9c] = 0x20ac, [0x9d] = 0x00b8, [0x9e] = 0x20aa, [0x9f] = 0x00a4,
+ [0xa0] = 0x00b5, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaf] = 0x00ae, [0xb0] = 0x005e,
+ [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x2022, [0xb4] = 0x00a9,
+ [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc, [0xb8] = 0x00bd,
+ [0xb9] = 0x00be, [0xba] = 0x005b, [0xbb] = 0x005d, [0xbc] = 0x203e,
+ [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7, [0xc0] = 0x007b,
+ [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043, [0xc4] = 0x0044,
+ [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047, [0xc8] = 0x0048,
+ [0xc9] = 0x0049, [0xca] = 0x00ad, [0xd0] = 0x007d, [0xd1] = 0x004a,
+ [0xd2] = 0x004b, [0xd3] = 0x004c, [0xd4] = 0x004d, [0xd5] = 0x004e,
+ [0xd6] = 0x004f, [0xd7] = 0x0050, [0xd8] = 0x0051, [0xd9] = 0x0052,
+ [0xda] = 0x00b9, [0xdb] = 0x202d, [0xdc] = 0x202e, [0xdd] = 0x202c,
+ [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xf0] = 0x0030,
+ [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033, [0xf4] = 0x0034,
+ [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037, [0xf8] = 0x0038,
+ [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x202a, [0xfc] = 0x202b,
+ [0xfd] = 0x200e, [0xfe] = 0x200f, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00be, idx: 0 },
+ { start: 0x00d7, end: 0x00d7, idx: -24 },
+ { start: 0x00f7, end: 0x00f7, idx: -55 },
+ { start: 0x05d0, end: 0x05ea, idx: -1295 },
+ { start: 0x200e, end: 0x200f, idx: -7986 },
+ { start: 0x2017, end: 0x2017, idx: -7993 },
+ { start: 0x2022, end: 0x2022, idx: -8003 },
+ { start: 0x202a, end: 0x202e, idx: -8010 },
+ { start: 0x203e, end: 0x203e, idx: -8025 },
+ { start: 0x20aa, end: 0x20ac, idx: -8132 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\xba', '\xe0', '\xbb', '\xb0', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x74', '\x00', '\x4a', '\xb1', '\x9f', '\xb2', '\x6a', '\xb5',
+ '\xbd', '\xb4', '\x00', '\x8a', '\x5f', '\xca', '\xaf', '\x00',
+ '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\x00',
+ '\x9d', '\xda', '\x00', '\x8b', '\xb7', '\xb8', '\xb9', '\xbf',
+ '\xe1', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56',
+ '\x57', '\x58', '\x59', '\x62', '\x63', '\x64', '\x65', '\x66',
+ '\x67', '\x68', '\x69', '\x71', '\xfd', '\xfe', '\x78', '\xb3',
+ '\xfb', '\xfc', '\xdd', '\xdb', '\xdc', '\xbc', '\x9e', '\x00',
+ '\x9c'
+};
diff --git a/iconvdata/ibm16804.c b/iconvdata/ibm16804.c
new file mode 100644
index 0000000000..2e5f65ea8c
--- /dev/null
+++ b/iconvdata/ibm16804.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM16804.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm16804.h>
+
+#define CHARSET_NAME "IBM16804//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm16804.h b/iconvdata/ibm16804.h
new file mode 100644
index 0000000000..699ef659fa
--- /dev/null
+++ b/iconvdata/ibm16804.h
@@ -0,0 +1,152 @@
+/* Tables for conversion from and to IBM16804.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0651, [0x43] = 0xfe7d,
+ [0x44] = 0x0640, [0x45] = 0x200b, [0x46] = 0x0621, [0x47] = 0x0622,
+ [0x48] = 0xfe82, [0x49] = 0x0623, [0x4a] = 0x00a2, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+ [0x50] = 0x0026, [0x51] = 0xfe84, [0x52] = 0x0624, [0x55] = 0x0626,
+ [0x56] = 0x0627, [0x57] = 0xfe8e, [0x58] = 0x0628, [0x59] = 0xfe91,
+ [0x5a] = 0x0021, [0x5b] = 0x0024, [0x5c] = 0x002a, [0x5d] = 0x0029,
+ [0x5e] = 0x003b, [0x5f] = 0x00ac, [0x60] = 0x002d, [0x61] = 0x002f,
+ [0x62] = 0x0629, [0x63] = 0x062a, [0x64] = 0xfe97, [0x65] = 0x062b,
+ [0x66] = 0xfe9b, [0x67] = 0x062c, [0x68] = 0xfe9f, [0x69] = 0x062d,
+ [0x6a] = 0x00a6, [0x6b] = 0x002c, [0x6c] = 0x0025, [0x6d] = 0x005f,
+ [0x6e] = 0x003e, [0x6f] = 0x003f, [0x70] = 0xfea3, [0x71] = 0x062e,
+ [0x72] = 0xfea7, [0x73] = 0x062f, [0x74] = 0x0630, [0x75] = 0x0631,
+ [0x76] = 0x0632, [0x77] = 0x0633, [0x78] = 0xfeb3, [0x79] = 0x060c,
+ [0x7a] = 0x003a, [0x7b] = 0x0023, [0x7c] = 0x0040, [0x7d] = 0x0027,
+ [0x7e] = 0x003d, [0x7f] = 0x0022, [0x80] = 0x0634, [0x81] = 0x0061,
+ [0x82] = 0x0062, [0x83] = 0x0063, [0x84] = 0x0064, [0x85] = 0x0065,
+ [0x86] = 0x0066, [0x87] = 0x0067, [0x88] = 0x0068, [0x89] = 0x0069,
+ [0x8a] = 0xfeb7, [0x8b] = 0x0635, [0x8c] = 0xfebb, [0x8d] = 0x0636,
+ [0x8e] = 0xfebf, [0x8f] = 0x0637, [0x90] = 0x0638, [0x91] = 0x006a,
+ [0x92] = 0x006b, [0x93] = 0x006c, [0x94] = 0x006d, [0x95] = 0x006e,
+ [0x96] = 0x006f, [0x97] = 0x0070, [0x98] = 0x0071, [0x99] = 0x0072,
+ [0x9a] = 0x0639, [0x9b] = 0xfeca, [0x9c] = 0xfecb, [0x9d] = 0xfecc,
+ [0x9e] = 0x063a, [0x9f] = 0xfece, [0xa0] = 0xfecf, [0xa1] = 0x00f7,
+ [0xa2] = 0x0073, [0xa3] = 0x0074, [0xa4] = 0x0075, [0xa5] = 0x0076,
+ [0xa6] = 0x0077, [0xa7] = 0x0078, [0xa8] = 0x0079, [0xa9] = 0x007a,
+ [0xaa] = 0xfed0, [0xab] = 0x0641, [0xac] = 0xfed3, [0xad] = 0x0642,
+ [0xae] = 0xfed7, [0xaf] = 0x0643, [0xb0] = 0xfedb, [0xb1] = 0x0644,
+ [0xb2] = 0xfef5, [0xb3] = 0xfef6, [0xb4] = 0xfef7, [0xb5] = 0xfef8,
+ [0xb8] = 0xfefb, [0xb9] = 0xfefc, [0xba] = 0xfedf, [0xbb] = 0x0645,
+ [0xbc] = 0xfee3, [0xbd] = 0x0646, [0xbe] = 0xfee7, [0xbf] = 0x0647,
+ [0xc0] = 0x061b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0xfeeb,
+ [0xcd] = 0xfeec, [0xcf] = 0x0648, [0xd0] = 0x061f, [0xd1] = 0x004a,
+ [0xd2] = 0x004b, [0xd3] = 0x004c, [0xd4] = 0x004d, [0xd5] = 0x004e,
+ [0xd6] = 0x004f, [0xd7] = 0x0050, [0xd8] = 0x0051, [0xd9] = 0x0052,
+ [0xda] = 0x0649, [0xdb] = 0xfef0, [0xdc] = 0x064a, [0xdd] = 0xfef2,
+ [0xde] = 0xfef3, [0xdf] = 0x0660, [0xe0] = 0x00d7, [0xe1] = 0x2007,
+ [0xe2] = 0x0053, [0xe3] = 0x0054, [0xe4] = 0x0055, [0xe5] = 0x0056,
+ [0xe6] = 0x0057, [0xe7] = 0x0058, [0xe8] = 0x0059, [0xe9] = 0x005a,
+ [0xea] = 0x0661, [0xeb] = 0x0662, [0xed] = 0x0663, [0xee] = 0x0664,
+ [0xef] = 0x0665, [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032,
+ [0xf3] = 0x0033, [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036,
+ [0xf7] = 0x0037, [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x20ac,
+ [0xfb] = 0x0666, [0xfc] = 0x0667, [0xfd] = 0x0668, [0xfe] = 0x0669,
+ [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ad, idx: 0 },
+ { start: 0x00d7, end: 0x00d7, idx: -41 },
+ { start: 0x00f7, end: 0x00f7, idx: -72 },
+ { start: 0x060c, end: 0x060c, idx: -1372 },
+ { start: 0x061b, end: 0x064a, idx: -1386 },
+ { start: 0x0651, end: 0x0651, idx: -1392 },
+ { start: 0x0660, end: 0x066d, idx: -1406 },
+ { start: 0x2007, end: 0x200b, idx: -7959 },
+ { start: 0x20ac, end: 0x20ac, idx: -8119 },
+ { start: 0xfe7c, end: 0xfefc, idx: -64902 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x00', '\x00', '\x00', '\x00', '\x6d',
+ '\x00', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\x00', '\x4f', '\x00', '\x00', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\x00', '\x4a', '\x00', '\x00', '\x00', '\x6a', '\x00',
+ '\x00', '\x00', '\x00', '\x00', '\x5f', '\xca', '\xe0', '\xa1',
+ '\x79', '\xc0', '\x00', '\x00', '\x00', '\xd0', '\x00', '\x46',
+ '\x47', '\x49', '\x52', '\x56', '\x55', '\x56', '\x58', '\x62',
+ '\x63', '\x65', '\x67', '\x69', '\x71', '\x73', '\x74', '\x75',
+ '\x76', '\x77', '\x80', '\x8b', '\x8d', '\x8f', '\x90', '\x9a',
+ '\x9e', '\x00', '\x00', '\x00', '\x00', '\x00', '\x44', '\xab',
+ '\xad', '\xaf', '\xb1', '\xbb', '\xbd', '\xbf', '\xcf', '\xda',
+ '\xdc', '\x42', '\xdf', '\xea', '\xeb', '\xed', '\xee', '\xef',
+ '\xfb', '\xfc', '\xfd', '\xfe', '\x6c', '\x6b', '\x4b', '\x5c',
+ '\xe1', '\x00', '\x00', '\x00', '\x45', '\xfa', '\x42', '\x43',
+ '\x00', '\x00', '\x46', '\x47', '\x48', '\x49', '\x51', '\x52',
+ '\x52', '\x56', '\x57', '\x00', '\x00', '\x55', '\x55', '\x56',
+ '\x57', '\x58', '\x58', '\x59', '\x59', '\x62', '\x62', '\x63',
+ '\x63', '\x64', '\x64', '\x65', '\x65', '\x66', '\x66', '\x67',
+ '\x67', '\x68', '\x68', '\x69', '\x69', '\x70', '\x70', '\x71',
+ '\x71', '\x72', '\x72', '\x73', '\x73', '\x74', '\x74', '\x75',
+ '\x75', '\x76', '\x76', '\x77', '\x77', '\x78', '\x78', '\x80',
+ '\x80', '\x8a', '\x8a', '\x8b', '\x8b', '\x8c', '\x8c', '\x8d',
+ '\x8d', '\x8e', '\x8e', '\x8f', '\x8f', '\x8f', '\x8f', '\x90',
+ '\x90', '\x90', '\x90', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e',
+ '\x9f', '\xa0', '\xaa', '\xab', '\xab', '\xac', '\xac', '\xad',
+ '\xad', '\xae', '\xae', '\xaf', '\xaf', '\xb0', '\xb0', '\xb1',
+ '\xb1', '\xba', '\xba', '\xbb', '\xbb', '\xbc', '\xbc', '\xbd',
+ '\xbd', '\xbe', '\xbe', '\xbf', '\xbf', '\xcb', '\xcd', '\xcf',
+ '\xcf', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xde', '\xb2',
+ '\xb3', '\xb4', '\xb5', '\xb8', '\xb9', '\xb8', '\xb9'
+};
diff --git a/iconvdata/ibm4517.c b/iconvdata/ibm4517.c
new file mode 100644
index 0000000000..587172481f
--- /dev/null
+++ b/iconvdata/ibm4517.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM4517.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm4517.h>
+
+#define CHARSET_NAME "IBM4517//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm4517.h b/iconvdata/ibm4517.h
new file mode 100644
index 0000000000..59e9f83cb7
--- /dev/null
+++ b/iconvdata/ibm4517.h
@@ -0,0 +1,156 @@
+/* Tables for conversion from and to IBM4517.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0xfe7c, [0x43] = 0xfe7d,
+ [0x44] = 0x0640, [0x45] = 0x200b, [0x46] = 0xfe80, [0x47] = 0xfe81,
+ [0x48] = 0xfe82, [0x49] = 0xfe83, [0x4a] = 0x00b0, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0xfe84, [0x52] = 0xfe85, [0x55] = 0xfe8b,
+ [0x56] = 0xfe8d, [0x57] = 0xfe8e, [0x58] = 0xfe8f, [0x59] = 0xfe91,
+ [0x5a] = 0x00a7, [0x5b] = 0x0024, [0x5c] = 0x002a, [0x5d] = 0x0029,
+ [0x5e] = 0x003b, [0x5f] = 0x005e, [0x60] = 0x002d, [0x61] = 0x002f,
+ [0x62] = 0xfe93, [0x63] = 0xfe95, [0x64] = 0xfe97, [0x65] = 0xfe99,
+ [0x66] = 0xfe9b, [0x67] = 0xfe9d, [0x68] = 0xfe9f, [0x69] = 0xfea1,
+ [0x6a] = 0x00fa, [0x6b] = 0x002c, [0x6c] = 0x0025, [0x6d] = 0x005f,
+ [0x6e] = 0x003e, [0x6f] = 0x003f, [0x70] = 0xfea3, [0x71] = 0xfea5,
+ [0x72] = 0xfea7, [0x73] = 0xfea9, [0x74] = 0xfeab, [0x75] = 0xfead,
+ [0x76] = 0xfeaf, [0x77] = 0xfeb1, [0x78] = 0xfeb3, [0x79] = 0x00a3,
+ [0x7a] = 0x003a, [0x7b] = 0x00b5, [0x7c] = 0x00e1, [0x7d] = 0x0027,
+ [0x7e] = 0x003d, [0x7f] = 0x0022, [0x80] = 0xfeb5, [0x81] = 0x0061,
+ [0x82] = 0x0062, [0x83] = 0x0063, [0x84] = 0x0064, [0x85] = 0x0065,
+ [0x86] = 0x0066, [0x87] = 0x0067, [0x88] = 0x0068, [0x89] = 0x0069,
+ [0x8a] = 0xfeb7, [0x8b] = 0xfeb9, [0x8c] = 0xfebb, [0x8d] = 0xfebd,
+ [0x8e] = 0xfebf, [0x8f] = 0xfec3, [0x90] = 0xfec7, [0x91] = 0x006a,
+ [0x92] = 0x006b, [0x93] = 0x006c, [0x94] = 0x006d, [0x95] = 0x006e,
+ [0x96] = 0x006f, [0x97] = 0x0070, [0x98] = 0x0071, [0x99] = 0x0072,
+ [0x9a] = 0xfec9, [0x9b] = 0xfeca, [0x9c] = 0xfecb, [0x9d] = 0xfecc,
+ [0x9e] = 0xfecd, [0x9f] = 0xfece, [0xa0] = 0xfecf, [0xa1] = 0x00a8,
+ [0xa2] = 0x0073, [0xa3] = 0x0074, [0xa4] = 0x0075, [0xa5] = 0x0076,
+ [0xa6] = 0x0077, [0xa7] = 0x0078, [0xa8] = 0x0079, [0xa9] = 0x007a,
+ [0xaa] = 0xfed0, [0xab] = 0xfed1, [0xac] = 0xfed3, [0xad] = 0xfed5,
+ [0xae] = 0xfed7, [0xaf] = 0xfed9, [0xb0] = 0xfedb, [0xb1] = 0xfedd,
+ [0xb2] = 0xfef5, [0xb3] = 0xfef6, [0xb4] = 0xfef7, [0xb5] = 0xfef8,
+ [0xb8] = 0xfefb, [0xb9] = 0xfefc, [0xba] = 0xfedf, [0xbb] = 0xfee1,
+ [0xbc] = 0xfee3, [0xbd] = 0xfee5, [0xbe] = 0xfee7, [0xbf] = 0xfee9,
+ [0xc0] = 0x00e9, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0xfeeb,
+ [0xcd] = 0xfeec, [0xcf] = 0xfeed, [0xd0] = 0x00e8, [0xd1] = 0x004a,
+ [0xd2] = 0x004b, [0xd3] = 0x004c, [0xd4] = 0x004d, [0xd5] = 0x004e,
+ [0xd6] = 0x004f, [0xd7] = 0x0050, [0xd8] = 0x0051, [0xd9] = 0x0052,
+ [0xda] = 0xfeef, [0xdb] = 0xfef0, [0xdc] = 0xfef1, [0xdd] = 0xfef2,
+ [0xde] = 0xfef3, [0xe0] = 0x00e7, [0xe1] = 0x2007, [0xe2] = 0x0053,
+ [0xe3] = 0x0054, [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057,
+ [0xe7] = 0x0058, [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00f7,
+ [0xeb] = 0x060c, [0xed] = 0x00d7, [0xee] = 0x061f, [0xef] = 0x061b,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00b5, idx: 0 },
+ { start: 0x00d7, end: 0x00d7, idx: -33 },
+ { start: 0x00e1, end: 0x00e9, idx: -42 },
+ { start: 0x00f7, end: 0x00fa, idx: -55 },
+ { start: 0x060c, end: 0x060c, idx: -1352 },
+ { start: 0x061b, end: 0x064a, idx: -1366 },
+ { start: 0x0651, end: 0x0651, idx: -1372 },
+ { start: 0x0660, end: 0x066d, idx: -1386 },
+ { start: 0x2007, end: 0x200b, idx: -7939 },
+ { start: 0xf8f4, end: 0xf8f7, idx: -63467 },
+ { start: 0xfe70, end: 0xfefc, idx: -64867 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x00', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x00', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x00', '\x00', '\x00', '\x5f', '\x6d',
+ '\x00', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\x00', '\x00', '\x00', '\x00', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\x00', '\x00', '\x79', '\x00', '\x00', '\x00', '\x5a',
+ '\xa1', '\x00', '\x00', '\x00', '\x00', '\xca', '\x00', '\x00',
+ '\x4a', '\x00', '\x00', '\x00', '\x00', '\x7b', '\xed', '\x7c',
+ '\x00', '\x00', '\x00', '\x00', '\x00', '\xe0', '\xd0', '\xc0',
+ '\xea', '\x00', '\x00', '\x6a', '\xeb', '\xef', '\x00', '\x00',
+ '\x00', '\xee', '\x00', '\x46', '\x47', '\x49', '\x52', '\x56',
+ '\x55', '\x56', '\x58', '\x62', '\x63', '\x65', '\x67', '\x69',
+ '\x71', '\x73', '\x74', '\x75', '\x76', '\x77', '\x80', '\x8b',
+ '\x8d', '\x8f', '\x90', '\x9a', '\x9e', '\x00', '\x00', '\x00',
+ '\x00', '\x00', '\x44', '\xab', '\xad', '\xaf', '\xb1', '\xbb',
+ '\xbd', '\xbf', '\xcf', '\xda', '\xdc', '\x42', '\xf0', '\xf1',
+ '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7', '\xf8', '\xf9',
+ '\x6c', '\x6b', '\x4b', '\x5c', '\xe1', '\x00', '\x00', '\x00',
+ '\x45', '\x8b', '\x80', '\x77', '\x8d', '\x40', '\x44', '\x40',
+ '\x45', '\x40', '\x00', '\x40', '\x44', '\x40', '\x44', '\x40',
+ '\x44', '\x42', '\x43', '\x40', '\x44', '\x46', '\x47', '\x48',
+ '\x49', '\x51', '\x52', '\x52', '\x56', '\x57', '\x55', '\x55',
+ '\x55', '\x55', '\x56', '\x57', '\x58', '\x58', '\x59', '\x59',
+ '\x62', '\x62', '\x63', '\x63', '\x64', '\x64', '\x65', '\x65',
+ '\x66', '\x66', '\x67', '\x67', '\x68', '\x68', '\x69', '\x69',
+ '\x70', '\x70', '\x71', '\x71', '\x72', '\x72', '\x73', '\x73',
+ '\x74', '\x74', '\x75', '\x75', '\x76', '\x76', '\x77', '\x77',
+ '\x78', '\x78', '\x80', '\x80', '\x8a', '\x8a', '\x8b', '\x8b',
+ '\x8c', '\x8c', '\x8d', '\x8d', '\x8e', '\x8e', '\x8f', '\x8f',
+ '\x8f', '\x8f', '\x90', '\x90', '\x90', '\x90', '\x9a', '\x9b',
+ '\x9c', '\x9d', '\x9e', '\x9f', '\xa0', '\xaa', '\xab', '\xab',
+ '\xac', '\xac', '\xad', '\xad', '\xae', '\xae', '\xaf', '\xaf',
+ '\xb0', '\xb0', '\xb1', '\xb1', '\xba', '\xba', '\xbb', '\xbb',
+ '\xbc', '\xbc', '\xbd', '\xbd', '\xbe', '\xbe', '\xbf', '\xbf',
+ '\xcb', '\xcd', '\xcf', '\xcf', '\xda', '\xdb', '\xdc', '\xdd',
+ '\xde', '\xde', '\xb2', '\xb3', '\xb4', '\xb5', '\xb8', '\xb9',
+ '\xb8', '\xb9'
+};
diff --git a/iconvdata/ibm4899.c b/iconvdata/ibm4899.c
new file mode 100644
index 0000000000..7ee0e8ba34
--- /dev/null
+++ b/iconvdata/ibm4899.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM4899.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm4899.h>
+
+#define CHARSET_NAME "IBM4899//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm4899.h b/iconvdata/ibm4899.h
new file mode 100644
index 0000000000..bb49a8f627
--- /dev/null
+++ b/iconvdata/ibm4899.h
@@ -0,0 +1,102 @@
+/* Tables for conversion from and to IBM4899.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x4a] = 0x0024, [0x4b] = 0x002e, [0x4c] = 0x003c,
+ [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c, [0x50] = 0x05d0,
+ [0x5a] = 0x0021, [0x5b] = 0x00a2, [0x5c] = 0x002a, [0x5d] = 0x0029,
+ [0x5e] = 0x003b, [0x5f] = 0x00ac, [0x60] = 0x002d, [0x61] = 0x002f,
+ [0x6b] = 0x002c, [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e,
+ [0x6f] = 0x003f, [0x7a] = 0x003a, [0x7b] = 0x0023, [0x7c] = 0x0040,
+ [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022, [0x81] = 0x05d1,
+ [0x82] = 0x05d2, [0x83] = 0x05d3, [0x84] = 0x05d4, [0x85] = 0x05d5,
+ [0x86] = 0x05d6, [0x87] = 0x05d7, [0x88] = 0x05d8, [0x89] = 0x05d9,
+ [0x91] = 0x05da, [0x92] = 0x05db, [0x93] = 0x05dc, [0x94] = 0x05dd,
+ [0x95] = 0x05de, [0x96] = 0x05df, [0x97] = 0x05e0, [0x98] = 0x05e1,
+ [0x99] = 0x05e2, [0x9c] = 0x20ac, [0x9e] = 0x20aa, [0xa2] = 0x05e3,
+ [0xa3] = 0x05e4, [0xa4] = 0x05e5, [0xa5] = 0x05e6, [0xa6] = 0x05e7,
+ [0xa7] = 0x05e8, [0xa8] = 0x05e9, [0xa9] = 0x05ea, [0xc1] = 0x0041,
+ [0xc2] = 0x0042, [0xc3] = 0x0043, [0xc4] = 0x0044, [0xc5] = 0x0045,
+ [0xc6] = 0x0046, [0xc7] = 0x0047, [0xc8] = 0x0048, [0xc9] = 0x0049,
+ [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c, [0xd4] = 0x004d,
+ [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050, [0xd8] = 0x0051,
+ [0xd9] = 0x0052, [0xdb] = 0x202d, [0xdc] = 0x202e, [0xdd] = 0x202c,
+ [0xe2] = 0x0053, [0xe3] = 0x0054, [0xe4] = 0x0055, [0xe5] = 0x0056,
+ [0xe6] = 0x0057, [0xe7] = 0x0058, [0xe8] = 0x0059, [0xe9] = 0x005a,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfb] = 0x202a, [0xfc] = 0x202b,
+ [0xfd] = 0x200e, [0xfe] = 0x200f, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x005f, idx: 0 },
+ { start: 0x007c, end: 0x00a2, idx: -28 },
+ { start: 0x00ac, end: 0x00ac, idx: -37 },
+ { start: 0x05d0, end: 0x05ea, idx: -1352 },
+ { start: 0x200e, end: 0x200f, idx: -8043 },
+ { start: 0x202a, end: 0x202e, idx: -8069 },
+ { start: 0x20aa, end: 0x20ac, idx: -8192 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x4a', '\x6c', '\x00', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x00', '\x00', '\x00', '\x00', '\x6d',
+ '\x4f', '\x00', '\x00', '\x07', '\x20', '\x21', '\x22', '\x23',
+ '\x24', '\x15', '\x06', '\x17', '\x28', '\x29', '\x2a', '\x2b',
+ '\x2c', '\x09', '\x0a', '\x1b', '\x30', '\x31', '\x1a', '\x33',
+ '\x34', '\x35', '\x36', '\x08', '\x38', '\x39', '\x3a', '\x3b',
+ '\x04', '\x14', '\x3e', '\xff', '\x00', '\x00', '\x5b', '\x5f',
+ '\x50', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xfd', '\xfe', '\xfb', '\xfc', '\xdd',
+ '\xdb', '\xdc', '\x9e', '\x00', '\x9c'
+};
diff --git a/iconvdata/ibm4909.c b/iconvdata/ibm4909.c
new file mode 100644
index 0000000000..da35689eed
--- /dev/null
+++ b/iconvdata/ibm4909.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM4909.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm4909.h>
+
+#define CHARSET_NAME "IBM4909//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm4909.h b/iconvdata/ibm4909.h
new file mode 100644
index 0000000000..3be8932f0a
--- /dev/null
+++ b/iconvdata/ibm4909.h
@@ -0,0 +1,134 @@
+/* Tables for conversion from and to IBM4909.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f,
+ [0x80] = 0x0080, [0x81] = 0x0081, [0x82] = 0x0082, [0x83] = 0x0083,
+ [0x84] = 0x0084, [0x85] = 0x0085, [0x86] = 0x0086, [0x87] = 0x0087,
+ [0x88] = 0x0088, [0x89] = 0x0089, [0x8a] = 0x008a, [0x8b] = 0x008b,
+ [0x8c] = 0x008c, [0x8d] = 0x008d, [0x8e] = 0x008e, [0x8f] = 0x008f,
+ [0x90] = 0x0090, [0x91] = 0x0091, [0x92] = 0x0092, [0x93] = 0x0093,
+ [0x94] = 0x0094, [0x95] = 0x0095, [0x96] = 0x0096, [0x97] = 0x0097,
+ [0x98] = 0x0098, [0x99] = 0x0099, [0x9a] = 0x009a, [0x9b] = 0x009b,
+ [0x9c] = 0x009c, [0x9d] = 0x009d, [0x9e] = 0x009e, [0x9f] = 0x009f,
+ [0xa0] = 0x00a0, [0xa1] = 0x2018, [0xa2] = 0x2019, [0xa3] = 0x00a3,
+ [0xa4] = 0x20ac, [0xa6] = 0x00a6, [0xa7] = 0x00a7, [0xa8] = 0x00a8,
+ [0xa9] = 0x00a9, [0xab] = 0x00ab, [0xac] = 0x00ac, [0xad] = 0x00ad,
+ [0xaf] = 0x2015, [0xb0] = 0x00b0, [0xb1] = 0x00b1, [0xb2] = 0x00b2,
+ [0xb3] = 0x00b3, [0xb4] = 0x00b4, [0xb5] = 0x0385, [0xb6] = 0x0386,
+ [0xb7] = 0x0387, [0xb8] = 0x0388, [0xb9] = 0x0389, [0xba] = 0x038a,
+ [0xbb] = 0x00bb, [0xbc] = 0x038c, [0xbd] = 0x00bd, [0xbe] = 0x038e,
+ [0xbf] = 0x038f, [0xc0] = 0x0390, [0xc1] = 0x0391, [0xc2] = 0x0392,
+ [0xc3] = 0x0393, [0xc4] = 0x0394, [0xc5] = 0x0395, [0xc6] = 0x0396,
+ [0xc7] = 0x0397, [0xc8] = 0x0398, [0xc9] = 0x0399, [0xca] = 0x039a,
+ [0xcb] = 0x039b, [0xcc] = 0x039c, [0xcd] = 0x039d, [0xce] = 0x039e,
+ [0xcf] = 0x039f, [0xd0] = 0x03a0, [0xd1] = 0x03a1, [0xd3] = 0x03a3,
+ [0xd4] = 0x03a4, [0xd5] = 0x03a5, [0xd6] = 0x03a6, [0xd7] = 0x03a7,
+ [0xd8] = 0x03a8, [0xd9] = 0x03a9, [0xda] = 0x03aa, [0xdb] = 0x03ab,
+ [0xdc] = 0x03ac, [0xdd] = 0x03ad, [0xde] = 0x03ae, [0xdf] = 0x03af,
+ [0xe0] = 0x03b0, [0xe1] = 0x03b1, [0xe2] = 0x03b2, [0xe3] = 0x03b3,
+ [0xe4] = 0x03b4, [0xe5] = 0x03b5, [0xe6] = 0x03b6, [0xe7] = 0x03b7,
+ [0xe8] = 0x03b8, [0xe9] = 0x03b9, [0xea] = 0x03ba, [0xeb] = 0x03bb,
+ [0xec] = 0x03bc, [0xed] = 0x03bd, [0xee] = 0x03be, [0xef] = 0x03bf,
+ [0xf0] = 0x03c0, [0xf1] = 0x03c1, [0xf2] = 0x03c2, [0xf3] = 0x03c3,
+ [0xf4] = 0x03c4, [0xf5] = 0x03c5, [0xf6] = 0x03c6, [0xf7] = 0x03c7,
+ [0xf8] = 0x03c8, [0xf9] = 0x03c9, [0xfa] = 0x03ca, [0xfb] = 0x03cb,
+ [0xfc] = 0x03cc, [0xfd] = 0x03cd, [0xfe] = 0x03ce
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00bd, idx: 0 },
+ { start: 0x0385, end: 0x03ce, idx: -711 },
+ { start: 0x03d5, end: 0x03d5, idx: -717 },
+ { start: 0x2015, end: 0x2019, idx: -7948 },
+ { start: 0x20ac, end: 0x20ac, idx: -8094 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
+ '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
+ '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
+ '\xa0', '\x00', '\x00', '\xa3', '\x00', '\x00', '\xa6', '\xa7',
+ '\xa8', '\xa9', '\x00', '\xab', '\xac', '\xad', '\x00', '\x00',
+ '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\x00', '\x00', '\xb7',
+ '\x00', '\x00', '\x00', '\xbb', '\x00', '\xbd', '\xb5', '\xb6',
+ '\xb7', '\xb8', '\xb9', '\xba', '\x00', '\xbc', '\x00', '\xbe',
+ '\xbf', '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6',
+ '\xc7', '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce',
+ '\xcf', '\xd0', '\xd1', '\x00', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde',
+ '\xdf', '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee',
+ '\xef', '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6',
+ '\xf7', '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe',
+ '\xf6', '\xaf', '\x00', '\x00', '\xa1', '\xa2', '\xa4'
+};
diff --git a/iconvdata/ibm4971.c b/iconvdata/ibm4971.c
new file mode 100644
index 0000000000..0b362b6030
--- /dev/null
+++ b/iconvdata/ibm4971.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM4971.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm4971.h>
+
+#define CHARSET_NAME "IBM4971//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm4971.h b/iconvdata/ibm4971.h
new file mode 100644
index 0000000000..936b3e1f91
--- /dev/null
+++ b/iconvdata/ibm4971.h
@@ -0,0 +1,134 @@
+/* Tables for conversion from and to IBM4971.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x0391, [0x42] = 0x0392, [0x43] = 0x0393,
+ [0x44] = 0x0394, [0x45] = 0x0395, [0x46] = 0x0396, [0x47] = 0x0397,
+ [0x48] = 0x0398, [0x49] = 0x0399, [0x4a] = 0x005b, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+ [0x50] = 0x0026, [0x51] = 0x039a, [0x52] = 0x039b, [0x53] = 0x039c,
+ [0x54] = 0x039d, [0x55] = 0x039e, [0x56] = 0x039f, [0x57] = 0x03a0,
+ [0x58] = 0x03a1, [0x59] = 0x03a3, [0x5a] = 0x005d, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x03a4, [0x63] = 0x03a5,
+ [0x64] = 0x03a6, [0x65] = 0x03a7, [0x66] = 0x03a8, [0x67] = 0x03a9,
+ [0x68] = 0x03aa, [0x69] = 0x03ab, [0x6a] = 0x007c, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x00a8, [0x71] = 0x0386, [0x72] = 0x0388, [0x73] = 0x0389,
+ [0x74] = 0x00a0, [0x75] = 0x038a, [0x76] = 0x038c, [0x77] = 0x038e,
+ [0x78] = 0x038f, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x0385, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x03b1, [0x8b] = 0x03b2,
+ [0x8c] = 0x03b3, [0x8d] = 0x03b4, [0x8e] = 0x03b5, [0x8f] = 0x03b6,
+ [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x03b7, [0x9b] = 0x03b8,
+ [0x9c] = 0x03b9, [0x9d] = 0x03ba, [0x9e] = 0x03bb, [0x9f] = 0x03bc,
+ [0xa0] = 0x00b4, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x03bd, [0xab] = 0x03be,
+ [0xac] = 0x03bf, [0xad] = 0x03c0, [0xae] = 0x03c1, [0xaf] = 0x03c3,
+ [0xb0] = 0x00a3, [0xb1] = 0x03ac, [0xb2] = 0x03ad, [0xb3] = 0x03ae,
+ [0xb4] = 0x03ca, [0xb5] = 0x03af, [0xb6] = 0x03cc, [0xb7] = 0x03cd,
+ [0xb8] = 0x03cb, [0xb9] = 0x03ce, [0xba] = 0x03c2, [0xbb] = 0x03c4,
+ [0xbc] = 0x03c5, [0xbd] = 0x03c6, [0xbe] = 0x03c7, [0xbf] = 0x03c8,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x03c9,
+ [0xcc] = 0x0390, [0xcd] = 0x03b0, [0xce] = 0x2018, [0xcf] = 0x2015,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b1, [0xdb] = 0x00bd,
+ [0xdd] = 0x0387, [0xde] = 0x2019, [0xdf] = 0x00a6, [0xe0] = 0x005c,
+ [0xe2] = 0x0053, [0xe3] = 0x0054, [0xe4] = 0x0055, [0xe5] = 0x0056,
+ [0xe6] = 0x0057, [0xe7] = 0x0058, [0xe8] = 0x0059, [0xe9] = 0x005a,
+ [0xea] = 0x00b2, [0xeb] = 0x00a7, [0xee] = 0x00ab, [0xef] = 0x00ac,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00a9,
+ [0xfc] = 0x20ac, [0xfe] = 0x00bb, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00bd, idx: 0 },
+ { start: 0x0385, end: 0x03ce, idx: -711 },
+ { start: 0x03d5, end: 0x03d5, idx: -717 },
+ { start: 0x2015, end: 0x2019, idx: -7948 },
+ { start: 0x20ac, end: 0x20ac, idx: -8094 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x6a', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x74', '\x00', '\x00', '\xb0', '\x00', '\x00', '\xdf', '\xeb',
+ '\x70', '\xfb', '\x00', '\xee', '\xef', '\xca', '\x00', '\x00',
+ '\x90', '\xda', '\xea', '\xfa', '\xa0', '\x00', '\x00', '\xdd',
+ '\x00', '\x00', '\x00', '\xfe', '\x00', '\xdb', '\x80', '\x71',
+ '\xdd', '\x72', '\x73', '\x75', '\x00', '\x76', '\x00', '\x77',
+ '\x78', '\xcc', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46',
+ '\x47', '\x48', '\x49', '\x51', '\x52', '\x53', '\x54', '\x55',
+ '\x56', '\x57', '\x58', '\x00', '\x59', '\x62', '\x63', '\x64',
+ '\x65', '\x66', '\x67', '\x68', '\x69', '\xb1', '\xb2', '\xb3',
+ '\xb5', '\xcd', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
+ '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', '\xaa', '\xab',
+ '\xac', '\xad', '\xae', '\xba', '\xaf', '\xbb', '\xbc', '\xbd',
+ '\xbe', '\xbf', '\xcb', '\xb4', '\xb8', '\xb6', '\xb7', '\xb9',
+ '\xbd', '\xcf', '\x00', '\x00', '\xce', '\xde', '\xfc'
+};
diff --git a/iconvdata/ibm5347.c b/iconvdata/ibm5347.c
new file mode 100644
index 0000000000..79d4b7f663
--- /dev/null
+++ b/iconvdata/ibm5347.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM5347.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm5347.h>
+
+#define CHARSET_NAME "IBM5347//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm5347.h b/iconvdata/ibm5347.h
new file mode 100644
index 0000000000..4ef71a8896
--- /dev/null
+++ b/iconvdata/ibm5347.h
@@ -0,0 +1,142 @@
+/* Tables for conversion from and to IBM5347.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f,
+ [0x80] = 0x0402, [0x81] = 0x0403, [0x82] = 0x201a, [0x83] = 0x0453,
+ [0x84] = 0x201e, [0x85] = 0x2026, [0x86] = 0x2020, [0x87] = 0x2021,
+ [0x88] = 0x20ac, [0x89] = 0x2030, [0x8a] = 0x0409, [0x8b] = 0x2039,
+ [0x8c] = 0x040a, [0x8d] = 0x040c, [0x8e] = 0x040b, [0x8f] = 0x040f,
+ [0x90] = 0x0452, [0x91] = 0x2018, [0x92] = 0x2019, [0x93] = 0x201c,
+ [0x94] = 0x201d, [0x95] = 0x2022, [0x96] = 0x2013, [0x97] = 0x2014,
+ [0x98] = 0x0098, [0x99] = 0x2122, [0x9a] = 0x0459, [0x9b] = 0x203a,
+ [0x9c] = 0x045a, [0x9d] = 0x045c, [0x9e] = 0x045b, [0x9f] = 0x045f,
+ [0xa0] = 0x00a0, [0xa1] = 0x040e, [0xa2] = 0x045e, [0xa3] = 0x0408,
+ [0xa4] = 0x00a4, [0xa5] = 0x0490, [0xa6] = 0x00a6, [0xa7] = 0x00a7,
+ [0xa8] = 0x0401, [0xa9] = 0x00a9, [0xaa] = 0x0404, [0xab] = 0x00ab,
+ [0xac] = 0x00ac, [0xad] = 0x00ad, [0xae] = 0x00ae, [0xaf] = 0x0407,
+ [0xb0] = 0x00b0, [0xb1] = 0x00b1, [0xb2] = 0x0406, [0xb3] = 0x0456,
+ [0xb4] = 0x0491, [0xb5] = 0x00b5, [0xb6] = 0x00b6, [0xb7] = 0x00b7,
+ [0xb8] = 0x0451, [0xb9] = 0x2116, [0xba] = 0x0454, [0xbb] = 0x00bb,
+ [0xbc] = 0x0458, [0xbd] = 0x0405, [0xbe] = 0x0455, [0xbf] = 0x0457,
+ [0xc0] = 0x0410, [0xc1] = 0x0411, [0xc2] = 0x0412, [0xc3] = 0x0413,
+ [0xc4] = 0x0414, [0xc5] = 0x0415, [0xc6] = 0x0416, [0xc7] = 0x0417,
+ [0xc8] = 0x0418, [0xc9] = 0x0419, [0xca] = 0x041a, [0xcb] = 0x041b,
+ [0xcc] = 0x041c, [0xcd] = 0x041d, [0xce] = 0x041e, [0xcf] = 0x041f,
+ [0xd0] = 0x0420, [0xd1] = 0x0421, [0xd2] = 0x0422, [0xd3] = 0x0423,
+ [0xd4] = 0x0424, [0xd5] = 0x0425, [0xd6] = 0x0426, [0xd7] = 0x0427,
+ [0xd8] = 0x0428, [0xd9] = 0x0429, [0xda] = 0x042a, [0xdb] = 0x042b,
+ [0xdc] = 0x042c, [0xdd] = 0x042d, [0xde] = 0x042e, [0xdf] = 0x042f,
+ [0xe0] = 0x0430, [0xe1] = 0x0431, [0xe2] = 0x0432, [0xe3] = 0x0433,
+ [0xe4] = 0x0434, [0xe5] = 0x0435, [0xe6] = 0x0436, [0xe7] = 0x0437,
+ [0xe8] = 0x0438, [0xe9] = 0x0439, [0xea] = 0x043a, [0xeb] = 0x043b,
+ [0xec] = 0x043c, [0xed] = 0x043d, [0xee] = 0x043e, [0xef] = 0x043f,
+ [0xf0] = 0x0440, [0xf1] = 0x0441, [0xf2] = 0x0442, [0xf3] = 0x0443,
+ [0xf4] = 0x0444, [0xf5] = 0x0445, [0xf6] = 0x0446, [0xf7] = 0x0447,
+ [0xf8] = 0x0448, [0xf9] = 0x0449, [0xfa] = 0x044a, [0xfb] = 0x044b,
+ [0xfc] = 0x044c, [0xfd] = 0x044d, [0xfe] = 0x044e, [0xff] = 0x044f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x007f, idx: 0 },
+ { start: 0x0098, end: 0x0098, idx: -24 },
+ { start: 0x00a0, end: 0x00bb, idx: -31 },
+ { start: 0x0401, end: 0x045f, idx: -868 },
+ { start: 0x0490, end: 0x0491, idx: -916 },
+ { start: 0x2013, end: 0x2026, idx: -7957 },
+ { start: 0x2030, end: 0x2030, idx: -7966 },
+ { start: 0x2039, end: 0x203a, idx: -7974 },
+ { start: 0x20ac, end: 0x20ac, idx: -8087 },
+ { start: 0x2116, end: 0x2116, idx: -8192 },
+ { start: 0x2122, end: 0x2122, idx: -8203 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x98', '\xa0', '\x00', '\x00', '\x00', '\xa4', '\x00', '\xa6',
+ '\xa7', '\x00', '\xa9', '\x00', '\xab', '\xac', '\xad', '\xae',
+ '\x00', '\xb0', '\xb1', '\x00', '\x00', '\x00', '\xb5', '\xb6',
+ '\xb7', '\x00', '\x00', '\x00', '\xbb', '\xa8', '\x80', '\x81',
+ '\xaa', '\xbd', '\xb2', '\xaf', '\xa3', '\x8a', '\x8c', '\x8e',
+ '\x8d', '\x00', '\xa1', '\x8f', '\xc0', '\xc1', '\xc2', '\xc3',
+ '\xc4', '\xc5', '\xc6', '\xc7', '\xc8', '\xc9', '\xca', '\xcb',
+ '\xcc', '\xcd', '\xce', '\xcf', '\xd0', '\xd1', '\xd2', '\xd3',
+ '\xd4', '\xd5', '\xd6', '\xd7', '\xd8', '\xd9', '\xda', '\xdb',
+ '\xdc', '\xdd', '\xde', '\xdf', '\xe0', '\xe1', '\xe2', '\xe3',
+ '\xe4', '\xe5', '\xe6', '\xe7', '\xe8', '\xe9', '\xea', '\xeb',
+ '\xec', '\xed', '\xee', '\xef', '\xf0', '\xf1', '\xf2', '\xf3',
+ '\xf4', '\xf5', '\xf6', '\xf7', '\xf8', '\xf9', '\xfa', '\xfb',
+ '\xfc', '\xfd', '\xfe', '\xff', '\x00', '\xb8', '\x90', '\x83',
+ '\xba', '\xbe', '\xb3', '\xbf', '\xbc', '\x9a', '\x9c', '\x9e',
+ '\x9d', '\x00', '\xa2', '\x9f', '\xa5', '\xb4', '\x96', '\x97',
+ '\x00', '\x00', '\x00', '\x91', '\x92', '\x82', '\x00', '\x93',
+ '\x94', '\x84', '\x00', '\x86', '\x87', '\x95', '\x00', '\x00',
+ '\x00', '\x85', '\x89', '\x8b', '\x9b', '\x88', '\xb9', '\x99'
+};
diff --git a/iconvdata/ibm803.c b/iconvdata/ibm803.c
new file mode 100644
index 0000000000..d55dc59422
--- /dev/null
+++ b/iconvdata/ibm803.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM803.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm803.h>
+
+#define CHARSET_NAME "IBM803//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm803.h b/iconvdata/ibm803.h
new file mode 100644
index 0000000000..6dc45aa656
--- /dev/null
+++ b/iconvdata/ibm803.h
@@ -0,0 +1,96 @@
+/* Tables for conversion from and to IBM803.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x4a] = 0x0024, [0x4b] = 0x002e, [0x4c] = 0x003c,
+ [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c, [0x50] = 0x05d0,
+ [0x5a] = 0x0021, [0x5b] = 0x00a2, [0x5c] = 0x002a, [0x5d] = 0x0029,
+ [0x5e] = 0x003b, [0x5f] = 0x00ac, [0x60] = 0x002d, [0x61] = 0x002f,
+ [0x6b] = 0x002c, [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e,
+ [0x6f] = 0x003f, [0x7a] = 0x003a, [0x7b] = 0x0023, [0x7c] = 0x0040,
+ [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022, [0x81] = 0x05d1,
+ [0x82] = 0x05d2, [0x83] = 0x05d3, [0x84] = 0x05d4, [0x85] = 0x05d5,
+ [0x86] = 0x05d6, [0x87] = 0x05d7, [0x88] = 0x05d8, [0x89] = 0x05d9,
+ [0x91] = 0x05da, [0x92] = 0x05db, [0x93] = 0x05dc, [0x94] = 0x05dd,
+ [0x95] = 0x05de, [0x96] = 0x05df, [0x97] = 0x05e0, [0x98] = 0x05e1,
+ [0x99] = 0x05e2, [0xa2] = 0x05e3, [0xa3] = 0x05e4, [0xa4] = 0x05e5,
+ [0xa5] = 0x05e6, [0xa6] = 0x05e7, [0xa7] = 0x05e8, [0xa8] = 0x05e9,
+ [0xa9] = 0x05ea, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xd1] = 0x004a, [0xd2] = 0x004b,
+ [0xd3] = 0x004c, [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f,
+ [0xd7] = 0x0050, [0xd8] = 0x0051, [0xd9] = 0x0052, [0xe2] = 0x0053,
+ [0xe3] = 0x0054, [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057,
+ [0xe7] = 0x0058, [0xe8] = 0x0059, [0xe9] = 0x005a, [0xf0] = 0x0030,
+ [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033, [0xf4] = 0x0034,
+ [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037, [0xf8] = 0x0038,
+ [0xf9] = 0x0039, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x005f, idx: 0 },
+ { start: 0x007c, end: 0x00a2, idx: -28 },
+ { start: 0x00ac, end: 0x00ac, idx: -37 },
+ { start: 0x05d0, end: 0x05ea, idx: -1352 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x4a', '\x6c', '\x00', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x00', '\x00', '\x00', '\x00', '\x6d',
+ '\x4f', '\x00', '\x00', '\x07', '\x20', '\x21', '\x22', '\x23',
+ '\x24', '\x15', '\x06', '\x17', '\x28', '\x29', '\x2a', '\x2b',
+ '\x2c', '\x09', '\x0a', '\x1b', '\x30', '\x31', '\x1a', '\x33',
+ '\x34', '\x35', '\x36', '\x08', '\x38', '\x39', '\x3a', '\x3b',
+ '\x04', '\x14', '\x3e', '\xff', '\x00', '\x00', '\x5b', '\x5f',
+ '\x50', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9'
+};
diff --git a/sysdeps/powerpc/nofpu/fesetround.c b/iconvdata/ibm901.c
index 842614a974..0e095ed69e 100644
--- a/sysdeps/powerpc/nofpu/fesetround.c
+++ b/iconvdata/ibm901.c
@@ -1,7 +1,7 @@
-/* Set rounding mode (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
+/* Conversion from and to IBM901.
+ Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,16 +18,12 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include "soft-fp.h"
-#include "soft-supp.h"
+#include <stdint.h>
-int
-fesetround (int round)
-{
- if ((unsigned int) round > FE_DOWNWARD)
- return 1;
+/* Get the conversion table. */
+#define TABLES <ibm901.h>
- __sim_round_mode = round;
+#define CHARSET_NAME "IBM901//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
- return 0;
-}
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm901.h b/iconvdata/ibm901.h
new file mode 100644
index 0000000000..393d2d7ca3
--- /dev/null
+++ b/iconvdata/ibm901.h
@@ -0,0 +1,185 @@
+/* Tables for conversion from and to IBM901.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f,
+ [0x80] = 0x0080, [0x81] = 0x0081, [0x82] = 0x0082, [0x83] = 0x0083,
+ [0x84] = 0x0084, [0x85] = 0x0085, [0x86] = 0x0086, [0x87] = 0x0087,
+ [0x88] = 0x0088, [0x89] = 0x0089, [0x8a] = 0x008a, [0x8b] = 0x008b,
+ [0x8c] = 0x008c, [0x8d] = 0x008d, [0x8e] = 0x008e, [0x8f] = 0x008f,
+ [0x90] = 0x0090, [0x91] = 0x0091, [0x92] = 0x0092, [0x93] = 0x0093,
+ [0x94] = 0x0094, [0x95] = 0x0095, [0x96] = 0x0096, [0x97] = 0x0097,
+ [0x98] = 0x0098, [0x99] = 0x0099, [0x9a] = 0x009a, [0x9b] = 0x009b,
+ [0x9c] = 0x009c, [0x9d] = 0x009d, [0x9e] = 0x009e, [0x9f] = 0x009f,
+ [0xa0] = 0x00a0, [0xa1] = 0x201d, [0xa2] = 0x00a2, [0xa3] = 0x00a3,
+ [0xa4] = 0x20ac, [0xa5] = 0x201e, [0xa6] = 0x00a6, [0xa7] = 0x00a7,
+ [0xa8] = 0x00d8, [0xa9] = 0x00a9, [0xaa] = 0x0156, [0xab] = 0x00ab,
+ [0xac] = 0x00ac, [0xad] = 0x00ad, [0xae] = 0x00ae, [0xaf] = 0x00c6,
+ [0xb0] = 0x00b0, [0xb1] = 0x00b1, [0xb2] = 0x00b2, [0xb3] = 0x00b3,
+ [0xb4] = 0x201c, [0xb5] = 0x00b5, [0xb6] = 0x00b6, [0xb7] = 0x00b7,
+ [0xb8] = 0x00f8, [0xb9] = 0x00b9, [0xba] = 0x0157, [0xbb] = 0x00bb,
+ [0xbc] = 0x00bc, [0xbd] = 0x00bd, [0xbe] = 0x00be, [0xbf] = 0x00e6,
+ [0xc0] = 0x0104, [0xc1] = 0x012e, [0xc2] = 0x0100, [0xc3] = 0x0106,
+ [0xc4] = 0x00c4, [0xc5] = 0x00c5, [0xc6] = 0x0118, [0xc7] = 0x0112,
+ [0xc8] = 0x010c, [0xc9] = 0x00c9, [0xca] = 0x0179, [0xcb] = 0x0116,
+ [0xcc] = 0x0122, [0xcd] = 0x0136, [0xce] = 0x012a, [0xcf] = 0x013b,
+ [0xd0] = 0x0160, [0xd1] = 0x0143, [0xd2] = 0x0145, [0xd3] = 0x00d3,
+ [0xd4] = 0x014c, [0xd5] = 0x00d5, [0xd6] = 0x00d6, [0xd7] = 0x00d7,
+ [0xd8] = 0x0172, [0xd9] = 0x0141, [0xda] = 0x015a, [0xdb] = 0x016a,
+ [0xdc] = 0x00dc, [0xdd] = 0x017b, [0xde] = 0x017d, [0xdf] = 0x00df,
+ [0xe0] = 0x0105, [0xe1] = 0x012f, [0xe2] = 0x0101, [0xe3] = 0x0107,
+ [0xe4] = 0x00e4, [0xe5] = 0x00e5, [0xe6] = 0x0119, [0xe7] = 0x0113,
+ [0xe8] = 0x010d, [0xe9] = 0x00e9, [0xea] = 0x017a, [0xeb] = 0x0117,
+ [0xec] = 0x0123, [0xed] = 0x0137, [0xee] = 0x012b, [0xef] = 0x013c,
+ [0xf0] = 0x0161, [0xf1] = 0x0144, [0xf2] = 0x0146, [0xf3] = 0x00f3,
+ [0xf4] = 0x014d, [0xf5] = 0x00f5, [0xf6] = 0x00f6, [0xf7] = 0x00f7,
+ [0xf8] = 0x0173, [0xf9] = 0x0142, [0xfa] = 0x015b, [0xfb] = 0x016b,
+ [0xfc] = 0x00fc, [0xfd] = 0x017c, [0xfe] = 0x017e, [0xff] = 0x2019
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00c9, idx: 0 },
+ { start: 0x00d3, end: 0x00e9, idx: -9 },
+ { start: 0x00f3, end: 0x0119, idx: -18 },
+ { start: 0x0122, end: 0x0123, idx: -26 },
+ { start: 0x012a, end: 0x012f, idx: -32 },
+ { start: 0x0136, end: 0x014d, idx: -38 },
+ { start: 0x0156, end: 0x0161, idx: -46 },
+ { start: 0x016a, end: 0x016b, idx: -54 },
+ { start: 0x0172, end: 0x017e, idx: -60 },
+ { start: 0x2017, end: 0x2022, idx: -7892 },
+ { start: 0x203c, end: 0x203e, idx: -7917 },
+ { start: 0x20ac, end: 0x20ac, idx: -8026 },
+ { start: 0x2190, end: 0x2195, idx: -8253 },
+ { start: 0x21a8, end: 0x21a8, idx: -8271 },
+ { start: 0x221f, end: 0x221f, idx: -8389 },
+ { start: 0x2500, end: 0x2502, idx: -9125 },
+ { start: 0x250c, end: 0x251c, idx: -9134 },
+ { start: 0x2524, end: 0x2524, idx: -9141 },
+ { start: 0x252c, end: 0x252c, idx: -9148 },
+ { start: 0x2534, end: 0x2534, idx: -9155 },
+ { start: 0x253c, end: 0x253c, idx: -9162 },
+ { start: 0x2550, end: 0x256c, idx: -9181 },
+ { start: 0x2580, end: 0x2588, idx: -9200 },
+ { start: 0x2591, end: 0x2593, idx: -9208 },
+ { start: 0x25a0, end: 0x25a0, idx: -9220 },
+ { start: 0x25ac, end: 0x25b2, idx: -9231 },
+ { start: 0x25ba, end: 0x25bc, idx: -9238 },
+ { start: 0x25c4, end: 0x25c4, idx: -9245 },
+ { start: 0x25cb, end: 0x25cb, idx: -9251 },
+ { start: 0x25d8, end: 0x25d9, idx: -9263 },
+ { start: 0x263a, end: 0x2642, idx: -9359 },
+ { start: 0x2660, end: 0x266c, idx: -9388 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
+ '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
+ '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
+ '\xa0', '\x00', '\xa2', '\xa3', '\x00', '\x8e', '\xa6', '\xa7',
+ '\x00', '\xa9', '\x00', '\xab', '\xac', '\xad', '\xae', '\x00',
+ '\xb0', '\xb1', '\xb2', '\xb3', '\x00', '\xb5', '\xb6', '\xb7',
+ '\x00', '\xb9', '\x00', '\xbb', '\xbc', '\xbd', '\xbe', '\x00',
+ '\x00', '\x00', '\x00', '\x00', '\xc4', '\xc5', '\xaf', '\x00',
+ '\x00', '\xc9', '\xd3', '\x00', '\xd5', '\xd6', '\xd7', '\xa8',
+ '\x00', '\x00', '\x00', '\xdc', '\x00', '\x00', '\xdf', '\x00',
+ '\x00', '\x00', '\x00', '\xe4', '\xe5', '\xbf', '\x00', '\x00',
+ '\xe9', '\xf3', '\x00', '\xf5', '\xf6', '\xf7', '\xb8', '\x00',
+ '\x00', '\x00', '\xfc', '\x00', '\x00', '\x00', '\xc2', '\xe2',
+ '\x00', '\x00', '\xc0', '\xe0', '\xc3', '\xe3', '\x00', '\x00',
+ '\x00', '\x00', '\xc8', '\xe8', '\x00', '\x00', '\x00', '\x00',
+ '\xc7', '\xe7', '\x00', '\x00', '\xcb', '\xeb', '\xc6', '\xe6',
+ '\xcc', '\xec', '\xce', '\xee', '\x00', '\x00', '\xc1', '\xe1',
+ '\xcd', '\xed', '\x00', '\x00', '\x00', '\xcf', '\xef', '\x00',
+ '\x00', '\x00', '\x00', '\xd9', '\xf9', '\xd1', '\xf1', '\xd2',
+ '\xf2', '\x00', '\x00', '\x00', '\x00', '\x00', '\xd4', '\xf4',
+ '\xaa', '\xba', '\x00', '\x00', '\xda', '\xfa', '\x00', '\x00',
+ '\x00', '\x00', '\xd0', '\xf0', '\xdb', '\xfb', '\xd8', '\xf8',
+ '\x00', '\x00', '\x00', '\x00', '\x00', '\xca', '\xea', '\xdd',
+ '\xfd', '\xde', '\xfe', '\x97', '\x00', '\xff', '\x00', '\x00',
+ '\xb4', '\xa1', '\xa5', '\x00', '\x00', '\x00', '\x07', '\x13',
+ '\x00', '\x9f', '\xa4', '\x1b', '\x18', '\x1a', '\x19', '\x1d',
+ '\x12', '\x17', '\x1c', '\x94', '\x00', '\x83', '\x86', '\x00',
+ '\x00', '\x00', '\x8f', '\x00', '\x00', '\x00', '\x90', '\x00',
+ '\x00', '\x00', '\x85', '\x00', '\x00', '\x00', '\x93', '\x84',
+ '\x92', '\x91', '\x95', '\x9d', '\x8a', '\x00', '\x00', '\x99',
+ '\x00', '\x00', '\x8b', '\x00', '\x00', '\x98', '\x00', '\x00',
+ '\x8c', '\x00', '\x00', '\x9c', '\x00', '\x00', '\x89', '\x00',
+ '\x00', '\x9b', '\x00', '\x00', '\x9a', '\x00', '\x00', '\x9e',
+ '\x8d', '\x00', '\x00', '\x00', '\x88', '\x00', '\x00', '\x00',
+ '\x87', '\x80', '\x81', '\x82', '\x96', '\x16', '\x00', '\x00',
+ '\x00', '\x00', '\x00', '\x1e', '\x10', '\x00', '\x1f', '\x11',
+ '\x09', '\x08', '\x0a', '\x01', '\x02', '\x0f', '\x00', '\x00',
+ '\x00', '\x0c', '\x00', '\x0b', '\x06', '\x00', '\x00', '\x05',
+ '\x00', '\x03', '\x04', '\x00', '\x00', '\x00', '\x0d', '\x00',
+ '\x0e'
+};
diff --git a/sysdeps/powerpc/nofpu/fegetexcept.c b/iconvdata/ibm902.c
index 0a47a09ac0..46fab92dd6 100644
--- a/sysdeps/powerpc/nofpu/fegetexcept.c
+++ b/iconvdata/ibm902.c
@@ -1,7 +1,7 @@
-/* Get floating-point exceptions (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
+/* Conversion from and to IBM902.
+ Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,11 +18,12 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include "soft-fp.h"
-#include "soft-supp.h"
+#include <stdint.h>
-int
-fegetexcept (void)
-{
- return (__sim_disabled_exceptions ^ FE_ALL_EXCEPT) & FE_ALL_EXCEPT;
-}
+/* Get the conversion table. */
+#define TABLES <ibm902.h>
+
+#define CHARSET_NAME "IBM902//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm902.h b/iconvdata/ibm902.h
new file mode 100644
index 0000000000..ebc7d9667d
--- /dev/null
+++ b/iconvdata/ibm902.h
@@ -0,0 +1,172 @@
+/* Tables for conversion from and to IBM902.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f,
+ [0x80] = 0x0080, [0x81] = 0x0081, [0x82] = 0x0082, [0x83] = 0x0083,
+ [0x84] = 0x0084, [0x85] = 0x0085, [0x86] = 0x0086, [0x87] = 0x0087,
+ [0x88] = 0x0088, [0x89] = 0x0089, [0x8a] = 0x008a, [0x8b] = 0x008b,
+ [0x8c] = 0x008c, [0x8d] = 0x008d, [0x8e] = 0x008e, [0x8f] = 0x008f,
+ [0x90] = 0x0090, [0x91] = 0x0091, [0x92] = 0x0092, [0x93] = 0x0093,
+ [0x94] = 0x0094, [0x95] = 0x0095, [0x96] = 0x0096, [0x97] = 0x0097,
+ [0x98] = 0x0098, [0x99] = 0x0099, [0x9a] = 0x009a, [0x9b] = 0x009b,
+ [0x9c] = 0x009c, [0x9d] = 0x009d, [0x9e] = 0x009e, [0x9f] = 0x009f,
+ [0xa0] = 0x00a0, [0xa1] = 0x00a1, [0xa2] = 0x00a2, [0xa3] = 0x00a3,
+ [0xa4] = 0x20ac, [0xa5] = 0x00a5, [0xa6] = 0x00a6, [0xa7] = 0x00a7,
+ [0xa8] = 0x00a8, [0xa9] = 0x00a9, [0xaa] = 0x00aa, [0xab] = 0x00ab,
+ [0xac] = 0x00ac, [0xad] = 0x00ad, [0xae] = 0x00ae, [0xaf] = 0x00af,
+ [0xb0] = 0x00b0, [0xb1] = 0x00b1, [0xb2] = 0x00b2, [0xb3] = 0x00b3,
+ [0xb4] = 0x00b4, [0xb5] = 0x00b5, [0xb6] = 0x00b6, [0xb7] = 0x00b7,
+ [0xb8] = 0x00b8, [0xb9] = 0x00b9, [0xba] = 0x00ba, [0xbb] = 0x00bb,
+ [0xbc] = 0x00bc, [0xbd] = 0x00bd, [0xbe] = 0x00be, [0xbf] = 0x00bf,
+ [0xc0] = 0x00c0, [0xc1] = 0x00c1, [0xc2] = 0x00c2, [0xc3] = 0x00c3,
+ [0xc4] = 0x00c4, [0xc5] = 0x00c5, [0xc6] = 0x00c6, [0xc7] = 0x00c7,
+ [0xc8] = 0x00c8, [0xc9] = 0x00c9, [0xca] = 0x00ca, [0xcb] = 0x00cb,
+ [0xcc] = 0x00cc, [0xcd] = 0x00cd, [0xce] = 0x00ce, [0xcf] = 0x00cf,
+ [0xd0] = 0x0160, [0xd1] = 0x00d1, [0xd2] = 0x00d2, [0xd3] = 0x00d3,
+ [0xd4] = 0x00d4, [0xd5] = 0x00d5, [0xd6] = 0x00d6, [0xd7] = 0x00d7,
+ [0xd8] = 0x00d8, [0xd9] = 0x00d9, [0xda] = 0x00da, [0xdb] = 0x00db,
+ [0xdc] = 0x00dc, [0xdd] = 0x00dd, [0xde] = 0x017d, [0xdf] = 0x00df,
+ [0xe0] = 0x00e0, [0xe1] = 0x00e1, [0xe2] = 0x00e2, [0xe3] = 0x00e3,
+ [0xe4] = 0x00e4, [0xe5] = 0x00e5, [0xe6] = 0x00e6, [0xe7] = 0x00e7,
+ [0xe8] = 0x00e8, [0xe9] = 0x00e9, [0xea] = 0x00ea, [0xeb] = 0x00eb,
+ [0xec] = 0x00ec, [0xed] = 0x00ed, [0xee] = 0x00ee, [0xef] = 0x00ef,
+ [0xf0] = 0x0161, [0xf1] = 0x00f1, [0xf2] = 0x00f2, [0xf3] = 0x00f3,
+ [0xf4] = 0x00f4, [0xf5] = 0x00f5, [0xf6] = 0x00f6, [0xf7] = 0x00f7,
+ [0xf8] = 0x00f8, [0xf9] = 0x00f9, [0xfa] = 0x00fa, [0xfb] = 0x00fb,
+ [0xfc] = 0x00fc, [0xfd] = 0x00fd, [0xfe] = 0x017e, [0xff] = 0x00ff
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ff, idx: 0 },
+ { start: 0x0160, end: 0x0161, idx: -96 },
+ { start: 0x017d, end: 0x017e, idx: -123 },
+ { start: 0x2017, end: 0x2017, idx: -7955 },
+ { start: 0x2022, end: 0x2022, idx: -7965 },
+ { start: 0x203c, end: 0x203e, idx: -7990 },
+ { start: 0x20ac, end: 0x20ac, idx: -8099 },
+ { start: 0x2190, end: 0x2195, idx: -8326 },
+ { start: 0x21a8, end: 0x21a8, idx: -8344 },
+ { start: 0x221f, end: 0x221f, idx: -8462 },
+ { start: 0x2264, end: 0x2265, idx: -8530 },
+ { start: 0x2500, end: 0x2502, idx: -9196 },
+ { start: 0x250c, end: 0x251c, idx: -9205 },
+ { start: 0x2524, end: 0x2524, idx: -9212 },
+ { start: 0x252c, end: 0x252c, idx: -9219 },
+ { start: 0x2534, end: 0x2534, idx: -9226 },
+ { start: 0x253c, end: 0x253c, idx: -9233 },
+ { start: 0x2550, end: 0x256c, idx: -9252 },
+ { start: 0x2580, end: 0x2588, idx: -9271 },
+ { start: 0x2591, end: 0x2593, idx: -9279 },
+ { start: 0x25a0, end: 0x25a0, idx: -9291 },
+ { start: 0x25ac, end: 0x25b2, idx: -9302 },
+ { start: 0x25ba, end: 0x25bc, idx: -9309 },
+ { start: 0x25c4, end: 0x25c4, idx: -9316 },
+ { start: 0x25cb, end: 0x25cb, idx: -9322 },
+ { start: 0x25d8, end: 0x25d9, idx: -9334 },
+ { start: 0x263a, end: 0x2642, idx: -9430 },
+ { start: 0x2660, end: 0x266c, idx: -9459 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
+ '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
+ '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
+ '\xa0', '\xa1', '\xa2', '\xa3', '\x00', '\xa5', '\xa6', '\xa7',
+ '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf',
+ '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7',
+ '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf',
+ '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf',
+ '\x00', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7',
+ '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\x00', '\xdf',
+ '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7',
+ '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef',
+ '\x00', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\x00', '\xff',
+ '\xd0', '\xf0', '\xde', '\xfe', '\x97', '\x07', '\x13', '\x00',
+ '\xaf', '\xa4', '\x1b', '\x18', '\x1a', '\x19', '\x1d', '\x12',
+ '\x17', '\x1c', '\x9f', '\x8e', '\x94', '\x00', '\x83', '\x86',
+ '\x00', '\x00', '\x00', '\x8f', '\x00', '\x00', '\x00', '\x90',
+ '\x00', '\x00', '\x00', '\x85', '\x00', '\x00', '\x00', '\x93',
+ '\x84', '\x92', '\x91', '\x95', '\x9d', '\x8a', '\x00', '\x00',
+ '\x99', '\x00', '\x00', '\x8b', '\x00', '\x00', '\x98', '\x00',
+ '\x00', '\x8c', '\x00', '\x00', '\x9c', '\x00', '\x00', '\x89',
+ '\x00', '\x00', '\x9b', '\x00', '\x00', '\x9a', '\x00', '\x00',
+ '\x9e', '\x8d', '\x00', '\x00', '\x00', '\x88', '\x00', '\x00',
+ '\x00', '\x87', '\x80', '\x81', '\x82', '\x96', '\x16', '\x00',
+ '\x00', '\x00', '\x00', '\x00', '\x1e', '\x10', '\x00', '\x1f',
+ '\x11', '\x09', '\x08', '\x0a', '\x01', '\x02', '\x0f', '\x00',
+ '\x00', '\x00', '\x0c', '\x00', '\x0b', '\x06', '\x00', '\x00',
+ '\x05', '\x00', '\x03', '\x04', '\x00', '\x00', '\x00', '\x0d',
+ '\x00', '\x0e'
+};
diff --git a/iconvdata/ibm9030.c b/iconvdata/ibm9030.c
new file mode 100644
index 0000000000..f2fd93ea4b
--- /dev/null
+++ b/iconvdata/ibm9030.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM9030.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm9030.h>
+
+#define CHARSET_NAME "IBM9030//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm9030.h b/iconvdata/ibm9030.h
new file mode 100644
index 0000000000..8c1b10b2d5
--- /dev/null
+++ b/iconvdata/ibm9030.h
@@ -0,0 +1,131 @@
+/* Tables for conversion from and to IBM9030.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+ [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+ [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+ [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+ [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+ [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+ [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+ [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+ [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+ [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0e01, [0x43] = 0x0e02,
+ [0x44] = 0x0e03, [0x45] = 0x0e04, [0x46] = 0x0e05, [0x47] = 0x0e06,
+ [0x48] = 0x0e07, [0x49] = 0x005b, [0x4a] = 0x00a2, [0x4b] = 0x002e,
+ [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+ [0x50] = 0x0026, [0x51] = 0x0e48, [0x52] = 0x0e08, [0x53] = 0x0e09,
+ [0x54] = 0x0e0a, [0x55] = 0x0e0b, [0x56] = 0x0e0c, [0x57] = 0x0e0d,
+ [0x58] = 0x0e0e, [0x59] = 0x005d, [0x5a] = 0x0021, [0x5b] = 0x0024,
+ [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00ac,
+ [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0e0f, [0x63] = 0x0e10,
+ [0x64] = 0x0e11, [0x65] = 0x0e12, [0x66] = 0x0e13, [0x67] = 0x0e14,
+ [0x68] = 0x0e15, [0x69] = 0x005e, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+ [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+ [0x70] = 0x0e3f, [0x71] = 0x0e4e, [0x72] = 0x0e16, [0x73] = 0x0e17,
+ [0x74] = 0x0e18, [0x75] = 0x0e19, [0x76] = 0x0e1a, [0x77] = 0x0e1b,
+ [0x78] = 0x0e1c, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+ [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+ [0x80] = 0x0e4f, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+ [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+ [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x0e1d, [0x8b] = 0x0e1e,
+ [0x8c] = 0x0e1f, [0x8d] = 0x0e20, [0x8e] = 0x0e21, [0x8f] = 0x0e22,
+ [0x90] = 0x0e5a, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+ [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+ [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x0e23, [0x9b] = 0x0e24,
+ [0x9c] = 0x0e25, [0x9d] = 0x0e26, [0x9e] = 0x0e27, [0x9f] = 0x0e28,
+ [0xa0] = 0x0e5b, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+ [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+ [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x0e29, [0xab] = 0x0e2a,
+ [0xac] = 0x0e2b, [0xad] = 0x0e2c, [0xae] = 0x0e2d, [0xaf] = 0x0e2e,
+ [0xb0] = 0x0e50, [0xb1] = 0x0e51, [0xb2] = 0x0e52, [0xb3] = 0x0e53,
+ [0xb4] = 0x0e54, [0xb5] = 0x0e55, [0xb6] = 0x0e56, [0xb7] = 0x0e57,
+ [0xb8] = 0x0e58, [0xb9] = 0x0e59, [0xba] = 0x0e2f, [0xbb] = 0x0e30,
+ [0xbc] = 0x0e31, [0xbd] = 0x0e32, [0xbe] = 0x0e33, [0xbf] = 0x0e34,
+ [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+ [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+ [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x0e49, [0xcb] = 0x0e35,
+ [0xcc] = 0x0e36, [0xcd] = 0x0e37, [0xce] = 0x0e38, [0xcf] = 0x0e39,
+ [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+ [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+ [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x0e3a, [0xdb] = 0x0e40,
+ [0xdc] = 0x0e41, [0xdd] = 0x0e42, [0xde] = 0x0e43, [0xdf] = 0x0e44,
+ [0xe0] = 0x005c, [0xe1] = 0x0e4a, [0xe2] = 0x0053, [0xe3] = 0x0054,
+ [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+ [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x0e45, [0xeb] = 0x0e46,
+ [0xec] = 0x0e47, [0xed] = 0x0e48, [0xee] = 0x0e49, [0xef] = 0x0e4a,
+ [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+ [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+ [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x0e4b, [0xfb] = 0x0e4c,
+ [0xfc] = 0x0e4d, [0xfd] = 0x0e4b, [0xfe] = 0x0e4c, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00ac, idx: 0 },
+ { start: 0x0e01, end: 0x0e5b, idx: -3412 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+ '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+ '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x40', '\x5a', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+ '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+ '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+ '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+ '\xe7', '\xe8', '\xe9', '\x49', '\xe0', '\x59', '\x69', '\x6d',
+ '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+ '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+ '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xa1', '\x07',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+ '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+ '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+ '\x41', '\x00', '\x4a', '\x00', '\x00', '\x00', '\x6a', '\x00',
+ '\x00', '\x00', '\x00', '\x00', '\x5f', '\x42', '\x43', '\x44',
+ '\x45', '\x46', '\x47', '\x48', '\x52', '\x53', '\x54', '\x55',
+ '\x56', '\x57', '\x58', '\x62', '\x63', '\x64', '\x65', '\x66',
+ '\x67', '\x68', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', '\x9a',
+ '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', '\xaa', '\xab', '\xac',
+ '\xad', '\xae', '\xaf', '\xba', '\xbb', '\xbc', '\xbd', '\xbe',
+ '\xbf', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', '\xda', '\x00',
+ '\x00', '\x00', '\x00', '\x70', '\xdb', '\xdc', '\xdd', '\xde',
+ '\xdf', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef', '\xfa',
+ '\xfb', '\xfc', '\x71', '\x80', '\xb0', '\xb1', '\xb2', '\xb3',
+ '\xb4', '\xb5', '\xb6', '\xb7', '\xb8', '\xb9', '\x90', '\xa0'
+};
diff --git a/iconvdata/ibm9066.c b/iconvdata/ibm9066.c
new file mode 100644
index 0000000000..dd14e36f78
--- /dev/null
+++ b/iconvdata/ibm9066.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM9066.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm9066.h>
+
+#define CHARSET_NAME "IBM9066//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm9066.h b/iconvdata/ibm9066.h
new file mode 100644
index 0000000000..b1f2604826
--- /dev/null
+++ b/iconvdata/ibm9066.h
@@ -0,0 +1,120 @@
+/* Tables for conversion from and to IBM9066.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001c, [0x1b] = 0x001b,
+ [0x1c] = 0x007f, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x001a,
+ [0xa0] = 0x0e48, [0xa1] = 0x0e01, [0xa2] = 0x0e02, [0xa3] = 0x0e03,
+ [0xa4] = 0x0e04, [0xa5] = 0x0e05, [0xa6] = 0x0e06, [0xa7] = 0x0e07,
+ [0xa8] = 0x0e08, [0xa9] = 0x0e09, [0xaa] = 0x0e0a, [0xab] = 0x0e0b,
+ [0xac] = 0x0e0c, [0xad] = 0x0e0d, [0xae] = 0x0e0e, [0xaf] = 0x0e0f,
+ [0xb0] = 0x0e10, [0xb1] = 0x0e11, [0xb2] = 0x0e12, [0xb3] = 0x0e13,
+ [0xb4] = 0x0e14, [0xb5] = 0x0e15, [0xb6] = 0x0e16, [0xb7] = 0x0e17,
+ [0xb8] = 0x0e18, [0xb9] = 0x0e19, [0xba] = 0x0e1a, [0xbb] = 0x0e1b,
+ [0xbc] = 0x0e1c, [0xbd] = 0x0e1d, [0xbe] = 0x0e1e, [0xbf] = 0x0e1f,
+ [0xc0] = 0x0e20, [0xc1] = 0x0e21, [0xc2] = 0x0e22, [0xc3] = 0x0e23,
+ [0xc4] = 0x0e24, [0xc5] = 0x0e25, [0xc6] = 0x0e26, [0xc7] = 0x0e27,
+ [0xc8] = 0x0e28, [0xc9] = 0x0e29, [0xca] = 0x0e2a, [0xcb] = 0x0e2b,
+ [0xcc] = 0x0e2c, [0xcd] = 0x0e2d, [0xce] = 0x0e2e, [0xcf] = 0x0e2f,
+ [0xd0] = 0x0e30, [0xd1] = 0x0e31, [0xd2] = 0x0e32, [0xd3] = 0x0e33,
+ [0xd4] = 0x0e34, [0xd5] = 0x0e35, [0xd6] = 0x0e36, [0xd7] = 0x0e37,
+ [0xd8] = 0x0e38, [0xd9] = 0x0e39, [0xda] = 0x0e3a, [0xdb] = 0x0e49,
+ [0xdc] = 0x0e4a, [0xdd] = 0x0e4b, [0xde] = 0x0e4c, [0xdf] = 0x0e3f,
+ [0xe0] = 0x0e40, [0xe1] = 0x0e41, [0xe2] = 0x0e42, [0xe3] = 0x0e43,
+ [0xe4] = 0x0e44, [0xe5] = 0x0e45, [0xe6] = 0x0e46, [0xe7] = 0x0e47,
+ [0xe8] = 0x0e48, [0xe9] = 0x0e49, [0xea] = 0x0e4a, [0xeb] = 0x0e4b,
+ [0xec] = 0x0e4c, [0xed] = 0x0e4d, [0xee] = 0x0e4e, [0xef] = 0x0e4f,
+ [0xf0] = 0x0e50, [0xf1] = 0x0e51, [0xf2] = 0x0e52, [0xf3] = 0x0e53,
+ [0xf4] = 0x0e54, [0xf5] = 0x0e55, [0xf6] = 0x0e56, [0xf7] = 0x0e57,
+ [0xf8] = 0x0e58, [0xf9] = 0x0e59, [0xfa] = 0x0e5a, [0xfb] = 0x0e5b,
+ [0xfc] = 0x00a2, [0xfd] = 0x00ac, [0xfe] = 0x00a6, [0xff] = 0x00a0
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x007f, idx: 0 },
+ { start: 0x00a0, end: 0x00ac, idx: -32 },
+ { start: 0x0e01, end: 0x0e5b, idx: -3444 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x7f', '\x1b', '\x1a', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x1c',
+ '\xff', '\x00', '\xfc', '\x00', '\x00', '\x00', '\xfe', '\x00',
+ '\x00', '\x00', '\x00', '\x00', '\xfd', '\xa1', '\xa2', '\xa3',
+ '\xa4', '\xa5', '\xa6', '\xa7', '\xa8', '\xa9', '\xaa', '\xab',
+ '\xac', '\xad', '\xae', '\xaf', '\xb0', '\xb1', '\xb2', '\xb3',
+ '\xb4', '\xb5', '\xb6', '\xb7', '\xb8', '\xb9', '\xba', '\xbb',
+ '\xbc', '\xbd', '\xbe', '\xbf', '\xc0', '\xc1', '\xc2', '\xc3',
+ '\xc4', '\xc5', '\xc6', '\xc7', '\xc8', '\xc9', '\xca', '\xcb',
+ '\xcc', '\xcd', '\xce', '\xcf', '\xd0', '\xd1', '\xd2', '\xd3',
+ '\xd4', '\xd5', '\xd6', '\xd7', '\xd8', '\xd9', '\xda', '\x00',
+ '\x00', '\x00', '\x00', '\xdf', '\xe0', '\xe1', '\xe2', '\xe3',
+ '\xe4', '\xe5', '\xe6', '\xe7', '\xe8', '\xe9', '\xea', '\xeb',
+ '\xec', '\xed', '\xee', '\xef', '\xf0', '\xf1', '\xf2', '\xf3',
+ '\xf4', '\xf5', '\xf6', '\xf7', '\xf8', '\xf9', '\xfa', '\xfb'
+};
diff --git a/sysdeps/powerpc/nofpu/fegetround.c b/iconvdata/ibm921.c
index 0d01e4411f..5fb925ac94 100644
--- a/sysdeps/powerpc/nofpu/fegetround.c
+++ b/iconvdata/ibm921.c
@@ -1,7 +1,7 @@
-/* Return current rounding mode (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
+/* Conversion from and to IBM921.
+ Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,12 +18,12 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include "soft-fp.h"
-#include "soft-supp.h"
+#include <stdint.h>
-#undef fegetround
-int
-fegetround (void)
-{
- return __sim_round_mode;
-}
+/* Get the conversion table. */
+#define TABLES <ibm921.h>
+
+#define CHARSET_NAME "IBM921//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm921.h b/iconvdata/ibm921.h
new file mode 100644
index 0000000000..7fbdf0fb86
--- /dev/null
+++ b/iconvdata/ibm921.h
@@ -0,0 +1,148 @@
+/* Tables for conversion from and to IBM921.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f,
+ [0x80] = 0x0080, [0x81] = 0x0081, [0x82] = 0x0082, [0x83] = 0x0083,
+ [0x84] = 0x0084, [0x85] = 0x0085, [0x86] = 0x0086, [0x87] = 0x0087,
+ [0x88] = 0x0088, [0x89] = 0x0089, [0x8a] = 0x008a, [0x8b] = 0x008b,
+ [0x8c] = 0x008c, [0x8d] = 0x008d, [0x8e] = 0x008e, [0x8f] = 0x008f,
+ [0x90] = 0x0090, [0x91] = 0x0091, [0x92] = 0x0092, [0x93] = 0x0093,
+ [0x94] = 0x0094, [0x95] = 0x0095, [0x96] = 0x0096, [0x97] = 0x0097,
+ [0x98] = 0x0098, [0x99] = 0x0099, [0x9a] = 0x009a, [0x9b] = 0x009b,
+ [0x9c] = 0x009c, [0x9d] = 0x009d, [0x9e] = 0x009e, [0x9f] = 0x009f,
+ [0xa0] = 0x00a0, [0xa1] = 0x201d, [0xa2] = 0x00a2, [0xa3] = 0x00a3,
+ [0xa4] = 0x00a4, [0xa5] = 0x201e, [0xa6] = 0x00a6, [0xa7] = 0x00a7,
+ [0xa8] = 0x00d8, [0xa9] = 0x00a9, [0xaa] = 0x0156, [0xab] = 0x00ab,
+ [0xac] = 0x00ac, [0xad] = 0x00ad, [0xae] = 0x00ae, [0xaf] = 0x00c6,
+ [0xb0] = 0x00b0, [0xb1] = 0x00b1, [0xb2] = 0x00b2, [0xb3] = 0x00b3,
+ [0xb4] = 0x201c, [0xb5] = 0x00b5, [0xb6] = 0x00b6, [0xb7] = 0x00b7,
+ [0xb8] = 0x00f8, [0xb9] = 0x00b9, [0xba] = 0x0157, [0xbb] = 0x00bb,
+ [0xbc] = 0x00bc, [0xbd] = 0x00bd, [0xbe] = 0x00be, [0xbf] = 0x00e6,
+ [0xc0] = 0x0104, [0xc1] = 0x012e, [0xc2] = 0x0100, [0xc3] = 0x0106,
+ [0xc4] = 0x00c4, [0xc5] = 0x00c5, [0xc6] = 0x0118, [0xc7] = 0x0112,
+ [0xc8] = 0x010c, [0xc9] = 0x00c9, [0xca] = 0x0179, [0xcb] = 0x0116,
+ [0xcc] = 0x0122, [0xcd] = 0x0136, [0xce] = 0x012a, [0xcf] = 0x013b,
+ [0xd0] = 0x0160, [0xd1] = 0x0143, [0xd2] = 0x0145, [0xd3] = 0x00d3,
+ [0xd4] = 0x014c, [0xd5] = 0x00d5, [0xd6] = 0x00d6, [0xd7] = 0x00d7,
+ [0xd8] = 0x0172, [0xd9] = 0x0141, [0xda] = 0x015a, [0xdb] = 0x016a,
+ [0xdc] = 0x00dc, [0xdd] = 0x017b, [0xde] = 0x017d, [0xdf] = 0x00df,
+ [0xe0] = 0x0105, [0xe1] = 0x012f, [0xe2] = 0x0101, [0xe3] = 0x0107,
+ [0xe4] = 0x00e4, [0xe5] = 0x00e5, [0xe6] = 0x0119, [0xe7] = 0x0113,
+ [0xe8] = 0x010d, [0xe9] = 0x00e9, [0xea] = 0x017a, [0xeb] = 0x0117,
+ [0xec] = 0x0123, [0xed] = 0x0137, [0xee] = 0x012b, [0xef] = 0x013c,
+ [0xf0] = 0x0161, [0xf1] = 0x0144, [0xf2] = 0x0146, [0xf3] = 0x00f3,
+ [0xf4] = 0x014d, [0xf5] = 0x00f5, [0xf6] = 0x00f6, [0xf7] = 0x00f7,
+ [0xf8] = 0x0173, [0xf9] = 0x0142, [0xfa] = 0x015b, [0xfb] = 0x016b,
+ [0xfc] = 0x00fc, [0xfd] = 0x017c, [0xfe] = 0x017e, [0xff] = 0x2019
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x00c9, idx: 0 },
+ { start: 0x00d3, end: 0x00e9, idx: -9 },
+ { start: 0x00f3, end: 0x0119, idx: -18 },
+ { start: 0x0122, end: 0x0123, idx: -26 },
+ { start: 0x012a, end: 0x012f, idx: -32 },
+ { start: 0x0136, end: 0x014d, idx: -38 },
+ { start: 0x0156, end: 0x0161, idx: -46 },
+ { start: 0x016a, end: 0x016b, idx: -54 },
+ { start: 0x0172, end: 0x017e, idx: -60 },
+ { start: 0x2019, end: 0x201e, idx: -7894 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
+ '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
+ '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
+ '\xa0', '\x00', '\xa2', '\xa3', '\xa4', '\x00', '\xa6', '\xa7',
+ '\x00', '\xa9', '\x00', '\xab', '\xac', '\xad', '\xae', '\x00',
+ '\xb0', '\xb1', '\xb2', '\xb3', '\x00', '\xb5', '\xb6', '\xb7',
+ '\x00', '\xb9', '\x00', '\xbb', '\xbc', '\xbd', '\xbe', '\x00',
+ '\x00', '\x00', '\x00', '\x00', '\xc4', '\xc5', '\xaf', '\x00',
+ '\x00', '\xc9', '\xd3', '\x00', '\xd5', '\xd6', '\xd7', '\xa8',
+ '\x00', '\x00', '\x00', '\xdc', '\x00', '\x00', '\xdf', '\x00',
+ '\x00', '\x00', '\x00', '\xe4', '\xe5', '\xbf', '\x00', '\x00',
+ '\xe9', '\xf3', '\x00', '\xf5', '\xf6', '\xf7', '\xb8', '\x00',
+ '\x00', '\x00', '\xfc', '\x00', '\x00', '\x00', '\xc2', '\xe2',
+ '\x00', '\x00', '\xc0', '\xe0', '\xc3', '\xe3', '\x00', '\x00',
+ '\x00', '\x00', '\xc8', '\xe8', '\x00', '\x00', '\x00', '\x00',
+ '\xc7', '\xe7', '\x00', '\x00', '\xcb', '\xeb', '\xc6', '\xe6',
+ '\xcc', '\xec', '\xce', '\xee', '\x00', '\x00', '\xc1', '\xe1',
+ '\xcd', '\xed', '\x00', '\x00', '\x00', '\xcf', '\xef', '\x00',
+ '\x00', '\x00', '\x00', '\xd9', '\xf9', '\xd1', '\xf1', '\xd2',
+ '\xf2', '\x00', '\x00', '\x00', '\x00', '\x00', '\xd4', '\xf4',
+ '\xaa', '\xba', '\x00', '\x00', '\xda', '\xfa', '\x00', '\x00',
+ '\x00', '\x00', '\xd0', '\xf0', '\xdb', '\xfb', '\xd8', '\xf8',
+ '\x00', '\x00', '\x00', '\x00', '\x00', '\xca', '\xea', '\xdd',
+ '\xfd', '\xde', '\xfe', '\xff', '\x00', '\x00', '\xb4', '\xa1',
+ '\xa5'
+};
diff --git a/iconvdata/ibm9448.c b/iconvdata/ibm9448.c
new file mode 100644
index 0000000000..d3694cae74
--- /dev/null
+++ b/iconvdata/ibm9448.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM9448.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, 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 <ibm9448.h>
+
+#define CHARSET_NAME "IBM9448//"
+#define HAS_HOLES 0 /* All 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm9448.h b/iconvdata/ibm9448.h
new file mode 100644
index 0000000000..ffedf3ecc6
--- /dev/null
+++ b/iconvdata/ibm9448.h
@@ -0,0 +1,191 @@
+/* Tables for conversion from and to IBM9448.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Masahide Washizawa <washi@jp.ibm.com>, 2005.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+static const uint32_t to_ucs4[256] =
+{
+ [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+ [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007,
+ [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b,
+ [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+ [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+ [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017,
+ [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b,
+ [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+ [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023,
+ [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027,
+ [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b,
+ [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f,
+ [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033,
+ [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037,
+ [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b,
+ [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f,
+ [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043,
+ [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047,
+ [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b,
+ [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f,
+ [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053,
+ [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057,
+ [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b,
+ [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f,
+ [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063,
+ [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067,
+ [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b,
+ [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f,
+ [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073,
+ [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077,
+ [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b,
+ [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f,
+ [0x80] = 0x20ac, [0x81] = 0x067e, [0x82] = 0x201a, [0x83] = 0x0192,
+ [0x84] = 0x201e, [0x85] = 0x2026, [0x86] = 0x2020, [0x87] = 0x2021,
+ [0x88] = 0x02c6, [0x89] = 0x2030, [0x8a] = 0x0679, [0x8b] = 0x2039,
+ [0x8c] = 0x0152, [0x8d] = 0x0686, [0x8e] = 0x0698, [0x8f] = 0x0688,
+ [0x90] = 0x06af, [0x91] = 0x2018, [0x92] = 0x2019, [0x93] = 0x201c,
+ [0x94] = 0x201d, [0x95] = 0x2022, [0x96] = 0x2013, [0x97] = 0x2014,
+ [0x98] = 0x06a9, [0x99] = 0x2122, [0x9a] = 0x0691, [0x9b] = 0x203a,
+ [0x9c] = 0x0153, [0x9d] = 0x200c, [0x9e] = 0x200d, [0x9f] = 0x06ba,
+ [0xa0] = 0x00a0, [0xa1] = 0x060c, [0xa2] = 0x00a2, [0xa3] = 0x00a3,
+ [0xa4] = 0x00a4, [0xa5] = 0x00a5, [0xa6] = 0x00a6, [0xa7] = 0x00a7,
+ [0xa8] = 0x00a8, [0xa9] = 0x00a9, [0xaa] = 0x06be, [0xab] = 0x00ab,
+ [0xac] = 0x00ac, [0xad] = 0x00ad, [0xae] = 0x00ae, [0xaf] = 0x00af,
+ [0xb0] = 0x00b0, [0xb1] = 0x00b1, [0xb2] = 0x00b2, [0xb3] = 0x00b3,
+ [0xb4] = 0x00b4, [0xb5] = 0x00b5, [0xb6] = 0x00b6, [0xb7] = 0x00b7,
+ [0xb8] = 0x00b8, [0xb9] = 0x00b9, [0xba] = 0x061b, [0xbb] = 0x00bb,
+ [0xbc] = 0x00bc, [0xbd] = 0x00bd, [0xbe] = 0x00be, [0xbf] = 0x061f,
+ [0xc0] = 0x06c1, [0xc1] = 0x0621, [0xc2] = 0x0622, [0xc3] = 0x0623,
+ [0xc4] = 0x0624, [0xc5] = 0x0625, [0xc6] = 0x0626, [0xc7] = 0x0627,
+ [0xc8] = 0x0628, [0xc9] = 0x0629, [0xca] = 0x062a, [0xcb] = 0x062b,
+ [0xcc] = 0x062c, [0xcd] = 0x062d, [0xce] = 0x062e, [0xcf] = 0x062f,
+ [0xd0] = 0x0630, [0xd1] = 0x0631, [0xd2] = 0x0632, [0xd3] = 0x0633,
+ [0xd4] = 0x0634, [0xd5] = 0x0635, [0xd6] = 0x0636, [0xd7] = 0x00d7,
+ [0xd8] = 0x0637, [0xd9] = 0x0638, [0xda] = 0x0639, [0xdb] = 0x063a,
+ [0xdc] = 0x0640, [0xdd] = 0x0641, [0xde] = 0x0642, [0xdf] = 0x0643,
+ [0xe0] = 0x00e0, [0xe1] = 0x0644, [0xe2] = 0x00e2, [0xe3] = 0x0645,
+ [0xe4] = 0x0646, [0xe5] = 0x0647, [0xe6] = 0x0648, [0xe7] = 0x00e7,
+ [0xe8] = 0x00e8, [0xe9] = 0x00e9, [0xea] = 0x00ea, [0xeb] = 0x00eb,
+ [0xec] = 0x0649, [0xed] = 0x064a, [0xee] = 0x00ee, [0xef] = 0x00ef,
+ [0xf0] = 0x064b, [0xf1] = 0x064c, [0xf2] = 0x064d, [0xf3] = 0x064e,
+ [0xf4] = 0x00f4, [0xf5] = 0x064f, [0xf6] = 0x0650, [0xf7] = 0x00f7,
+ [0xf8] = 0x0651, [0xf9] = 0x00f9, [0xfa] = 0x0652, [0xfb] = 0x00fb,
+ [0xfc] = 0x00fc, [0xfd] = 0x200e, [0xfe] = 0x200f, [0xff] = 0x06d2
+};
+
+static const struct gap from_idx[] =
+{
+ { start: 0x0000, end: 0x007f, idx: 0 },
+ { start: 0x00a0, end: 0x00be, idx: -32 },
+ { start: 0x00d7, end: 0x00d7, idx: -56 },
+ { start: 0x00e0, end: 0x00fc, idx: -64 },
+ { start: 0x0152, end: 0x0153, idx: -149 },
+ { start: 0x0191, end: 0x0192, idx: -210 },
+ { start: 0x02c6, end: 0x02cb, idx: -517 },
+ { start: 0x060c, end: 0x060c, idx: -1349 },
+ { start: 0x061b, end: 0x0652, idx: -1363 },
+ { start: 0x0660, end: 0x066c, idx: -1376 },
+ { start: 0x0679, end: 0x067e, idx: -1388 },
+ { start: 0x0686, end: 0x0688, idx: -1395 },
+ { start: 0x0691, end: 0x0691, idx: -1403 },
+ { start: 0x0698, end: 0x0698, idx: -1409 },
+ { start: 0x06a9, end: 0x06af, idx: -1425 },
+ { start: 0x06ba, end: 0x06c1, idx: -1435 },
+ { start: 0x06cc, end: 0x06d2, idx: -1445 },
+ { start: 0x06f0, end: 0x06f9, idx: -1474 },
+ { start: 0x200c, end: 0x2026, idx: -7892 },
+ { start: 0x2030, end: 0x2030, idx: -7901 },
+ { start: 0x2039, end: 0x203e, idx: -7909 },
+ { start: 0x20ac, end: 0x20ac, idx: -8018 },
+ { start: 0x2122, end: 0x2122, idx: -8135 },
+ { start: 0xfb56, end: 0xfb59, idx: -63994 },
+ { start: 0xfb66, end: 0xfb69, idx: -64006 },
+ { start: 0xfb7a, end: 0xfb7d, idx: -64022 },
+ { start: 0xfb88, end: 0xfb95, idx: -64032 },
+ { start: 0xfb9e, end: 0xfb9f, idx: -64040 },
+ { start: 0xfba6, end: 0xfbaf, idx: -64046 },
+ { start: 0xfe70, end: 0xfef4, idx: -64750 },
+ { start: 0xffff, end: 0xffff, idx: 0 }
+};
+
+static const char from_ucs4[] =
+{
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\xa0', '\x00', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7',
+ '\xa8', '\xa9', '\x00', '\xab', '\xac', '\xad', '\xae', '\xaf',
+ '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7',
+ '\xb8', '\xb9', '\x00', '\xbb', '\xbc', '\xbd', '\xbe', '\xd7',
+ '\xe0', '\x00', '\xe2', '\x00', '\x00', '\x00', '\x00', '\xe7',
+ '\xe8', '\xe9', '\xea', '\xeb', '\x00', '\x00', '\xee', '\xef',
+ '\x00', '\x00', '\x00', '\x00', '\xf4', '\x00', '\x00', '\xf7',
+ '\x00', '\xf9', '\x00', '\xfb', '\xfc', '\x8c', '\x9c', '\x46',
+ '\x83', '\x88', '\x00', '\x00', '\x00', '\x00', '\x60', '\xa1',
+ '\xba', '\x00', '\x00', '\x00', '\xbf', '\x00', '\xc1', '\xc2',
+ '\xc3', '\xc4', '\xc5', '\xc6', '\xc7', '\xc8', '\xc9', '\xca',
+ '\xcb', '\xcc', '\xcd', '\xce', '\xcf', '\xd0', '\xd1', '\xd2',
+ '\xd3', '\xd4', '\xd5', '\xd6', '\xd8', '\xd9', '\xda', '\xdb',
+ '\x00', '\x00', '\x00', '\x00', '\x00', '\xdc', '\xdd', '\xde',
+ '\xdf', '\xe1', '\xe3', '\xe4', '\xe5', '\xe6', '\xec', '\xed',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf5', '\xf6', '\xf8', '\xfa',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x00', '\x2c', '\x2e', '\x8a', '\x00', '\x00',
+ '\x00', '\x00', '\x81', '\x8d', '\x00', '\x8f', '\x9a', '\x8e',
+ '\x98', '\x00', '\x00', '\x00', '\x00', '\x00', '\x90', '\x9f',
+ '\x00', '\x00', '\x00', '\xaa', '\x00', '\x00', '\xc0', '\xed',
+ '\x00', '\x00', '\x00', '\x00', '\x00', '\xff', '\x30', '\x31',
+ '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39',
+ '\x9d', '\x9e', '\xfd', '\xfe', '\x00', '\x00', '\x00', '\x96',
+ '\x97', '\x00', '\x00', '\x00', '\x91', '\x92', '\x82', '\x00',
+ '\x93', '\x94', '\x84', '\x00', '\x86', '\x87', '\x95', '\x00',
+ '\x00', '\x00', '\x85', '\x89', '\x8b', '\x9b', '\x00', '\x00',
+ '\x00', '\xaf', '\x80', '\x99', '\x81', '\x81', '\x81', '\x81',
+ '\x8a', '\x8a', '\x8a', '\x8a', '\x8d', '\x8d', '\x8d', '\x8d',
+ '\x8f', '\x8f', '\x8e', '\x8e', '\x9a', '\x9a', '\x98', '\x98',
+ '\x98', '\x98', '\x90', '\x90', '\x90', '\x90', '\x9f', '\x9f',
+ '\xc0', '\xc0', '\xc0', '\xc0', '\xaa', '\xaa', '\xaa', '\xaa',
+ '\xff', '\xff', '\xf0', '\xf0', '\xf1', '\x20', '\xf2', '\x00',
+ '\xf3', '\xf3', '\xf5', '\xf5', '\xf6', '\xf6', '\xf8', '\xf8',
+ '\xfa', '\xfa', '\xc1', '\xc2', '\xc2', '\xc3', '\xc3', '\xc4',
+ '\xc4', '\xc5', '\xc5', '\xc6', '\xc6', '\xc6', '\xc6', '\xc7',
+ '\xc7', '\xc8', '\xc8', '\xc8', '\xc8', '\xc9', '\xc9', '\xca',
+ '\xca', '\xca', '\xca', '\xcb', '\xcb', '\xcb', '\xcb', '\xcc',
+ '\xcc', '\xcc', '\xcc', '\xcd', '\xcd', '\xcd', '\xcd', '\xce',
+ '\xce', '\xce', '\xce', '\xcf', '\xcf', '\xd0', '\xd0', '\xd1',
+ '\xd1', '\xd2', '\xd2', '\xd3', '\xd3', '\xd3', '\xd3', '\xd4',
+ '\xd4', '\xd4', '\xd4', '\xd5', '\xd5', '\xd5', '\xd5', '\xd6',
+ '\xd6', '\xd6', '\xd6', '\xd8', '\xd8', '\xd8', '\xd8', '\xd9',
+ '\xd9', '\xd9', '\xd9', '\xda', '\xda', '\xda', '\xda', '\xdb',
+ '\xdb', '\xdb', '\xdb', '\xdd', '\xdd', '\xdd', '\xdd', '\xde',
+ '\xde', '\xde', '\xde', '\xdf', '\xdf', '\xdf', '\xdf', '\xe1',
+ '\xe1', '\xe1', '\xe1', '\xe3', '\xe3', '\xe3', '\xe3', '\xe4',
+ '\xe4', '\xe4', '\xe4', '\xe5', '\xe5', '\xe5', '\xe5', '\xe6',
+ '\xe6', '\xec', '\xec', '\xed', '\xed', '\xed', '\xed'
+};
diff --git a/iconvdata/jis0208.c b/iconvdata/jis0208.c
index ef7aeb175a..16823f22d5 100644
--- a/iconvdata/jis0208.c
+++ b/iconvdata/jis0208.c
@@ -1,5 +1,5 @@
/* Mapping tables for JIS0208 handling.
- Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -1783,12 +1783,20 @@ const uint16_t __jis0208_to_ucs[0x1e80] =
};
-const char __jisx0208_from_ucs4_lat1[256][2] =
+const char __jisx0208_from_ucs4_lat1[JIS0208_LAT1_MAX + 1
+ - JIS0208_LAT1_MIN][2] =
{
- [0x005C] = "\x21\x40", [0x00A2] = "\x21\x71", [0x00A3] = "\x21\x72",
- [0x00A7] = "\x21\x78", [0x00A8] = "\x21\x2f", [0x00AC] = "\x22\x4c",
- [0x00B0] = "\x21\x6B", [0x00B1] = "\x21\x5e", [0x00B4] = "\x21\x2d",
- [0x00B6] = "\x22\x79", [0x00D7] = "\x21\x5f", [0x00F7] = "\x21\x60"
+ [0x00A2 - JIS0208_LAT1_MIN] = "\x21\x71",
+ [0x00A3 - JIS0208_LAT1_MIN] = "\x21\x72",
+ [0x00A7 - JIS0208_LAT1_MIN] = "\x21\x78",
+ [0x00A8 - JIS0208_LAT1_MIN] = "\x21\x2f",
+ [0x00AC - JIS0208_LAT1_MIN] = "\x22\x4c",
+ [0x00B0 - JIS0208_LAT1_MIN] = "\x21\x6B",
+ [0x00B1 - JIS0208_LAT1_MIN] = "\x21\x5e",
+ [0x00B4 - JIS0208_LAT1_MIN] = "\x21\x2d",
+ [0x00B6 - JIS0208_LAT1_MIN] = "\x22\x79",
+ [0x00D7 - JIS0208_LAT1_MIN] = "\x21\x5f",
+ [0x00F7 - JIS0208_LAT1_MIN] = "\x21\x60"
};
diff --git a/iconvdata/jis0208.h b/iconvdata/jis0208.h
index 8255bafc62..329e30f9b2 100644
--- a/iconvdata/jis0208.h
+++ b/iconvdata/jis0208.h
@@ -36,7 +36,10 @@ struct jisx0208_ucs_idx
/* Conversion table. */
extern const uint16_t __jis0208_to_ucs[];
-extern const char __jisx0208_from_ucs4_lat1[256][2];
+#define JIS0208_LAT1_MIN 0xa2
+#define JIS0208_LAT1_MAX 0xf7
+extern const char __jisx0208_from_ucs4_lat1[JIS0208_LAT1_MAX + 1
+ - JIS0208_LAT1_MIN][2];
extern const char __jisx0208_from_ucs4_greek[0xc1][2];
extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[];
extern const char __jisx0208_from_ucs_tab[][2];
@@ -80,8 +83,8 @@ ucs4_to_jisx0208 (uint32_t wch, char *s, size_t avail)
if (avail < 2)
return 0;
- if (ch < 0x100)
- cp = __jisx0208_from_ucs4_lat1[ch];
+ if (ch >= JIS0208_LAT1_MIN && ch <= JIS0208_LAT1_MAX)
+ cp = __jisx0208_from_ucs4_lat1[ch - JIS0208_LAT1_MIN];
else if (ch >= 0x391 && ch <= 0x451)
cp = __jisx0208_from_ucs4_greek[ch - 0x391];
else
diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh
index 8cceef8880..91216447ba 100755
--- a/iconvdata/run-iconv-test.sh
+++ b/iconvdata/run-iconv-test.sh
@@ -1,6 +1,6 @@
#! /bin/sh -f
# Run available iconv(1) tests.
-# Copyright (C) 1998-2002 Free Software Foundation, Inc.
+# Copyright (C) 1998-2002, 2005 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
#
@@ -128,7 +128,7 @@ while read from to subset targets; do
done
fi
- if test "$subset" != Y; then
+ if test "$subset" == N; then
echo $ac_n " suntzu: ASCII -> $to -> ASCII $ac_c"
$PROG -f ASCII -t $to testdata/suntzus |
$PROG -f $to -t ASCII > $temp1 ||
diff --git a/iconvdata/testdata/IBM1008 b/iconvdata/testdata/IBM1008
new file mode 100644
index 0000000000..11cb306daa
--- /dev/null
+++ b/iconvdata/testdata/IBM1008
Binary files differ
diff --git a/iconvdata/testdata/IBM1008..UTF8 b/iconvdata/testdata/IBM1008..UTF8
new file mode 100644
index 0000000000..625f280e61
--- /dev/null
+++ b/iconvdata/testdata/IBM1008..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1097 b/iconvdata/testdata/IBM1097
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1097
Binary files differ
diff --git a/iconvdata/testdata/IBM1097..UTF8 b/iconvdata/testdata/IBM1097..UTF8
new file mode 100644
index 0000000000..66ef4b6f92
--- /dev/null
+++ b/iconvdata/testdata/IBM1097..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1112 b/iconvdata/testdata/IBM1112
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1112
Binary files differ
diff --git a/iconvdata/testdata/IBM1112..UTF8 b/iconvdata/testdata/IBM1112..UTF8
new file mode 100644
index 0000000000..5c09c29789
--- /dev/null
+++ b/iconvdata/testdata/IBM1112..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1123 b/iconvdata/testdata/IBM1123
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1123
Binary files differ
diff --git a/iconvdata/testdata/IBM1123..UTF8 b/iconvdata/testdata/IBM1123..UTF8
new file mode 100644
index 0000000000..f29be512b5
--- /dev/null
+++ b/iconvdata/testdata/IBM1123..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1130 b/iconvdata/testdata/IBM1130
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1130
Binary files differ
diff --git a/iconvdata/testdata/IBM1130..UTF8 b/iconvdata/testdata/IBM1130..UTF8
new file mode 100644
index 0000000000..33aed2e084
--- /dev/null
+++ b/iconvdata/testdata/IBM1130..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1140 b/iconvdata/testdata/IBM1140
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1140
Binary files differ
diff --git a/iconvdata/testdata/IBM1140..UTF8 b/iconvdata/testdata/IBM1140..UTF8
new file mode 100644
index 0000000000..0890f06b2a
--- /dev/null
+++ b/iconvdata/testdata/IBM1140..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1141 b/iconvdata/testdata/IBM1141
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1141
Binary files differ
diff --git a/iconvdata/testdata/IBM1141..UTF8 b/iconvdata/testdata/IBM1141..UTF8
new file mode 100644
index 0000000000..fdda8257c8
--- /dev/null
+++ b/iconvdata/testdata/IBM1141..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1142 b/iconvdata/testdata/IBM1142
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1142
Binary files differ
diff --git a/iconvdata/testdata/IBM1142..UTF8 b/iconvdata/testdata/IBM1142..UTF8
new file mode 100644
index 0000000000..d1e853b26e
--- /dev/null
+++ b/iconvdata/testdata/IBM1142..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1143 b/iconvdata/testdata/IBM1143
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1143
Binary files differ
diff --git a/iconvdata/testdata/IBM1143..UTF8 b/iconvdata/testdata/IBM1143..UTF8
new file mode 100644
index 0000000000..3023e60181
--- /dev/null
+++ b/iconvdata/testdata/IBM1143..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1144 b/iconvdata/testdata/IBM1144
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1144
Binary files differ
diff --git a/iconvdata/testdata/IBM1144..UTF8 b/iconvdata/testdata/IBM1144..UTF8
new file mode 100644
index 0000000000..c9d8e96f18
--- /dev/null
+++ b/iconvdata/testdata/IBM1144..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1145 b/iconvdata/testdata/IBM1145
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1145
Binary files differ
diff --git a/iconvdata/testdata/IBM1145..UTF8 b/iconvdata/testdata/IBM1145..UTF8
new file mode 100644
index 0000000000..b99321e3bb
--- /dev/null
+++ b/iconvdata/testdata/IBM1145..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1146 b/iconvdata/testdata/IBM1146
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1146
Binary files differ
diff --git a/iconvdata/testdata/IBM1146..UTF8 b/iconvdata/testdata/IBM1146..UTF8
new file mode 100644
index 0000000000..6c9181ce85
--- /dev/null
+++ b/iconvdata/testdata/IBM1146..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1147 b/iconvdata/testdata/IBM1147
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1147
Binary files differ
diff --git a/iconvdata/testdata/IBM1147..UTF8 b/iconvdata/testdata/IBM1147..UTF8
new file mode 100644
index 0000000000..5d42f287e4
--- /dev/null
+++ b/iconvdata/testdata/IBM1147..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1148 b/iconvdata/testdata/IBM1148
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1148
Binary files differ
diff --git a/iconvdata/testdata/IBM1148..UTF8 b/iconvdata/testdata/IBM1148..UTF8
new file mode 100644
index 0000000000..2d6e0fb4bd
--- /dev/null
+++ b/iconvdata/testdata/IBM1148..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1149 b/iconvdata/testdata/IBM1149
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1149
Binary files differ
diff --git a/iconvdata/testdata/IBM1149..UTF8 b/iconvdata/testdata/IBM1149..UTF8
new file mode 100644
index 0000000000..2bfeb6d827
--- /dev/null
+++ b/iconvdata/testdata/IBM1149..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1166 b/iconvdata/testdata/IBM1166
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1166
Binary files differ
diff --git a/iconvdata/testdata/IBM1166..UTF8 b/iconvdata/testdata/IBM1166..UTF8
new file mode 100644
index 0000000000..4f90aaa8e2
--- /dev/null
+++ b/iconvdata/testdata/IBM1166..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM1167 b/iconvdata/testdata/IBM1167
new file mode 100644
index 0000000000..897a3c116b
--- /dev/null
+++ b/iconvdata/testdata/IBM1167
Binary files differ
diff --git a/iconvdata/testdata/IBM1167..UTF8 b/iconvdata/testdata/IBM1167..UTF8
new file mode 100644
index 0000000000..61446b0ac5
--- /dev/null
+++ b/iconvdata/testdata/IBM1167..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM12712 b/iconvdata/testdata/IBM12712
new file mode 100644
index 0000000000..ddfe4a9259
--- /dev/null
+++ b/iconvdata/testdata/IBM12712
Binary files differ
diff --git a/iconvdata/testdata/IBM12712..UTF8 b/iconvdata/testdata/IBM12712..UTF8
new file mode 100644
index 0000000000..b541c1257d
--- /dev/null
+++ b/iconvdata/testdata/IBM12712..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM16804 b/iconvdata/testdata/IBM16804
new file mode 100644
index 0000000000..25864af202
--- /dev/null
+++ b/iconvdata/testdata/IBM16804
Binary files differ
diff --git a/iconvdata/testdata/IBM16804..UTF8 b/iconvdata/testdata/IBM16804..UTF8
new file mode 100644
index 0000000000..4442243ca3
--- /dev/null
+++ b/iconvdata/testdata/IBM16804..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM4517 b/iconvdata/testdata/IBM4517
new file mode 100644
index 0000000000..ba54f83823
--- /dev/null
+++ b/iconvdata/testdata/IBM4517
Binary files differ
diff --git a/iconvdata/testdata/IBM4517..UTF8 b/iconvdata/testdata/IBM4517..UTF8
new file mode 100644
index 0000000000..86c4a1ca4f
--- /dev/null
+++ b/iconvdata/testdata/IBM4517..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM4899 b/iconvdata/testdata/IBM4899
new file mode 100644
index 0000000000..5e0b080367
--- /dev/null
+++ b/iconvdata/testdata/IBM4899
Binary files differ
diff --git a/iconvdata/testdata/IBM4899..UTF8 b/iconvdata/testdata/IBM4899..UTF8
new file mode 100644
index 0000000000..9e9966ba23
--- /dev/null
+++ b/iconvdata/testdata/IBM4899..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM4909 b/iconvdata/testdata/IBM4909
new file mode 100644
index 0000000000..3492eb6132
--- /dev/null
+++ b/iconvdata/testdata/IBM4909
Binary files differ
diff --git a/iconvdata/testdata/IBM4909..UTF8 b/iconvdata/testdata/IBM4909..UTF8
new file mode 100644
index 0000000000..7b8c9c96f7
--- /dev/null
+++ b/iconvdata/testdata/IBM4909..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM4971 b/iconvdata/testdata/IBM4971
new file mode 100644
index 0000000000..96693046d6
--- /dev/null
+++ b/iconvdata/testdata/IBM4971
Binary files differ
diff --git a/iconvdata/testdata/IBM4971..UTF8 b/iconvdata/testdata/IBM4971..UTF8
new file mode 100644
index 0000000000..6b1833ccbe
--- /dev/null
+++ b/iconvdata/testdata/IBM4971..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM5347 b/iconvdata/testdata/IBM5347
new file mode 100644
index 0000000000..897a3c116b
--- /dev/null
+++ b/iconvdata/testdata/IBM5347
Binary files differ
diff --git a/iconvdata/testdata/IBM5347..UTF8 b/iconvdata/testdata/IBM5347..UTF8
new file mode 100644
index 0000000000..d494150731
--- /dev/null
+++ b/iconvdata/testdata/IBM5347..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM803 b/iconvdata/testdata/IBM803
new file mode 100644
index 0000000000..02aa2d57af
--- /dev/null
+++ b/iconvdata/testdata/IBM803
Binary files differ
diff --git a/iconvdata/testdata/IBM803..UTF8 b/iconvdata/testdata/IBM803..UTF8
new file mode 100644
index 0000000000..de338b4511
--- /dev/null
+++ b/iconvdata/testdata/IBM803..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM901 b/iconvdata/testdata/IBM901
new file mode 100644
index 0000000000..897a3c116b
--- /dev/null
+++ b/iconvdata/testdata/IBM901
Binary files differ
diff --git a/iconvdata/testdata/IBM901..UTF8 b/iconvdata/testdata/IBM901..UTF8
new file mode 100644
index 0000000000..c64a4a2bee
--- /dev/null
+++ b/iconvdata/testdata/IBM901..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM902 b/iconvdata/testdata/IBM902
new file mode 100644
index 0000000000..897a3c116b
--- /dev/null
+++ b/iconvdata/testdata/IBM902
Binary files differ
diff --git a/iconvdata/testdata/IBM902..UTF8 b/iconvdata/testdata/IBM902..UTF8
new file mode 100644
index 0000000000..a43cadf9ca
--- /dev/null
+++ b/iconvdata/testdata/IBM902..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM9030 b/iconvdata/testdata/IBM9030
new file mode 100644
index 0000000000..e5e254dc6d
--- /dev/null
+++ b/iconvdata/testdata/IBM9030
Binary files differ
diff --git a/iconvdata/testdata/IBM9030..UTF8 b/iconvdata/testdata/IBM9030..UTF8
new file mode 100644
index 0000000000..4acc340989
--- /dev/null
+++ b/iconvdata/testdata/IBM9030..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM9066 b/iconvdata/testdata/IBM9066
new file mode 100644
index 0000000000..9787fee085
--- /dev/null
+++ b/iconvdata/testdata/IBM9066
Binary files differ
diff --git a/iconvdata/testdata/IBM9066..UTF8 b/iconvdata/testdata/IBM9066..UTF8
new file mode 100644
index 0000000000..b07de63305
--- /dev/null
+++ b/iconvdata/testdata/IBM9066..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM921 b/iconvdata/testdata/IBM921
new file mode 100644
index 0000000000..897a3c116b
--- /dev/null
+++ b/iconvdata/testdata/IBM921
Binary files differ
diff --git a/iconvdata/testdata/IBM921..UTF8 b/iconvdata/testdata/IBM921..UTF8
new file mode 100644
index 0000000000..135fc3e859
--- /dev/null
+++ b/iconvdata/testdata/IBM921..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM9448 b/iconvdata/testdata/IBM9448
new file mode 100644
index 0000000000..42e142e87f
--- /dev/null
+++ b/iconvdata/testdata/IBM9448
Binary files differ
diff --git a/iconvdata/testdata/IBM9448..UTF8 b/iconvdata/testdata/IBM9448..UTF8
new file mode 100644
index 0000000000..22bb688808
--- /dev/null
+++ b/iconvdata/testdata/IBM9448..UTF8
Binary files differ
diff --git a/include/dirent.h b/include/dirent.h
index f09a88f21c..b040a042d3 100644
--- a/include/dirent.h
+++ b/include/dirent.h
@@ -1,6 +1,7 @@
#ifndef _DIRENT_H
# include <dirstream.h>
# include <dirent/dirent.h>
+# include <sys/stat.h>
/* Now define the internal interfaces. */
extern DIR *__opendir (__const char *__name);
@@ -23,4 +24,5 @@ extern int __alphasort64 (const void *a, const void *b)
__attribute_pure__;
extern int __versionsort64 (const void *a, const void *b)
__attribute_pure__;
+extern DIR *__alloc_dir (int fd, struct stat64 *statp) internal_function;
#endif
diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c
index 4dbccd94ea..97b2b809f0 100644
--- a/inet/getnetgrent_r.c
+++ b/inet/getnetgrent_r.c
@@ -409,9 +409,6 @@ innetgr (const char *netgroup, const char *host, const char *user,
}
}
- if (result != 0)
- break;
-
/* If we found one service which does know the given
netgroup we don't try further. */
status = NSS_STATUS_RETURN;
@@ -422,6 +419,9 @@ innetgr (const char *netgroup, const char *host, const char *user,
if (endfct != NULL)
(*endfct) (&entry);
+ if (result != 0)
+ break;
+
/* Look for the next service. */
no_more = __nss_next (&entry.nip, "setnetgrent",
&setfct.ptr, status, 0);
@@ -444,6 +444,6 @@ innetgr (const char *netgroup, const char *host, const char *user,
/* Free the memory. */
free_memory (&entry);
- return result;
+ return result == 1;
}
libc_hidden_def (innetgr)
diff --git a/libio/fileops.c b/libio/fileops.c
index 3ad9b74011..74d5cd0dbc 100644
--- a/libio/fileops.c
+++ b/libio/fileops.c
@@ -1281,7 +1281,7 @@ _IO_new_file_xsputn (f, data, n)
register const char *s = (const char *) data;
_IO_size_t to_do = n;
int must_flush = 0;
- _IO_size_t count;
+ _IO_size_t count = 0;
if (n <= 0)
return 0;
@@ -1290,7 +1290,6 @@ _IO_new_file_xsputn (f, data, n)
(or the filebuf is unbuffered), use sys_write directly. */
/* First figure out how much space is available in the buffer. */
- count = f->_IO_write_end - f->_IO_write_ptr; /* Space available. */
if ((f->_flags & _IO_LINE_BUF) && (f->_flags & _IO_CURRENTLY_PUTTING))
{
count = f->_IO_buf_end - f->_IO_write_ptr;
@@ -1308,6 +1307,9 @@ _IO_new_file_xsputn (f, data, n)
}
}
}
+ else if (f->_IO_write_end > f->_IO_write_ptr)
+ count = f->_IO_write_end - f->_IO_write_ptr; /* Space available. */
+
/* Then fill the buffer. */
if (count > 0)
{
diff --git a/libio/fmemopen.c b/libio/fmemopen.c
index 7c8769a130..b847f62c9a 100644
--- a/libio/fmemopen.c
+++ b/libio/fmemopen.c
@@ -127,7 +127,7 @@ fmemopen_write (void *cookie, const char *b, size_t s)
if ((size_t) (c->pos + addnullc) == c->size)
{
__set_errno (ENOSPC);
- return -1;
+ return 0;
}
s = c->size - c->pos - addnullc;
}
diff --git a/libio/iofclose.c b/libio/iofclose.c
index a372ae2b24..aa2ba40064 100644
--- a/libio/iofclose.c
+++ b/libio/iofclose.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1995,1997-2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1995,1997-2004,2005 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
@@ -62,8 +62,8 @@ _IO_new_fclose (fp)
status = INTUSE(_IO_file_close_it) (fp);
else
status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
- _IO_FINISH (fp);
_IO_release_lock (fp);
+ _IO_FINISH (fp);
if (fp->_mode > 0)
{
#if _LIBC
diff --git a/libio/iofgets.c b/libio/iofgets.c
index 879cc975a3..601b1746a1 100644
--- a/libio/iofgets.c
+++ b/libio/iofgets.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2002, 2003
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2002, 2003, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -41,6 +41,14 @@ _IO_fgets (buf, n, fp)
CHECK_FILE (fp, NULL);
if (n <= 0)
return NULL;
+ if (__builtin_expect (n == 1, 0))
+ {
+ /* Another irregular case: since we have to store a NUL byte and
+ there is only room for exactly one byte, we don't have to
+ read anything. */
+ buf[0] = '\0';
+ return buf;
+ }
_IO_acquire_lock (fp);
/* This is very tricky since a file descriptor may be in the
non-blocking mode. The error flag doesn't mean much in this
diff --git a/libio/iofgets_u.c b/libio/iofgets_u.c
index ded2a7c83c..4fb5b1c0fd 100644
--- a/libio/iofgets_u.c
+++ b/libio/iofgets_u.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1995-1998,2002,2005 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
@@ -40,6 +40,14 @@ fgets_unlocked (buf, n, fp)
CHECK_FILE (fp, NULL);
if (n <= 0)
return NULL;
+ if (__builtin_expect (n == 1, 0))
+ {
+ /* Another irregular case: since we have to store a NUL byte and
+ there is only room for exactly one byte, we don't have to
+ read anything. */
+ buf[0] = '\0';
+ return buf;
+ }
/* This is very tricky since a file descriptor may be in the
non-blocking mode. The error flag doesn't mean much in this
case. We return an error only when there is a new error. */
diff --git a/libio/iofgetws.c b/libio/iofgetws.c
index 654c051a28..775391137a 100644
--- a/libio/iofgetws.c
+++ b/libio/iofgetws.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2001
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2001, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -41,6 +41,14 @@ fgetws (buf, n, fp)
CHECK_FILE (fp, NULL);
if (n <= 0)
return NULL;
+ if (__builtin_expect (n == 1, 0))
+ {
+ /* Another irregular case: since we have to store a NUL byte and
+ there is only room for exactly one byte, we don't have to
+ read anything. */
+ buf[0] = L'\0';
+ return buf;
+ }
_IO_acquire_lock (fp);
/* This is very tricky since a file descriptor may be in the
non-blocking mode. The error flag doesn't mean much in this
diff --git a/libio/iofgetws_u.c b/libio/iofgetws_u.c
index 1253564566..9fb8a5cac1 100644
--- a/libio/iofgetws_u.c
+++ b/libio/iofgetws_u.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2005 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
@@ -40,6 +40,14 @@ fgetws_unlocked (buf, n, fp)
CHECK_FILE (fp, NULL);
if (n <= 0)
return NULL;
+ if (__builtin_expect (n == 1, 0))
+ {
+ /* Another irregular case: since we have to store a NUL byte and
+ there is only room for exactly one byte, we don't have to
+ read anything. */
+ buf[0] = L'\0';
+ return buf;
+ }
/* This is very tricky since a file descriptor may be in the
non-blocking mode. The error flag doesn't mean much in this
case. We return an error only when there is a new error. */
diff --git a/libio/iofopncook.c b/libio/iofopncook.c
index 9c5503d1f2..976ff5093a 100644
--- a/libio/iofopncook.c
+++ b/libio/iofopncook.c
@@ -64,9 +64,16 @@ _IO_cookie_write (fp, buf, size)
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
if (cfile->__io_functions.write == NULL)
- return -1;
+ {
+ fp->_flags |= _IO_ERR_SEEN;
+ return 0;
+ }
+
+ _IO_ssize_t n = cfile->__io_functions.write (cfile->__cookie, buf, size);
+ if (n < size)
+ fp->_flags |= _IO_ERR_SEEN;
- return cfile->__io_functions.write (cfile->__cookie, buf, size);
+ return n;
}
static _IO_off64_t
diff --git a/libio/iogetline.c b/libio/iogetline.c
index eca38cf773..022a444f77 100644
--- a/libio/iogetline.c
+++ b/libio/iogetline.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1997,1998,2000,2001,2002,2005
+ 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
@@ -73,7 +74,8 @@ _IO_getline_info (fp, buf, n, delim, extract_delim, eof)
int c = __uflow (fp);
if (c == EOF)
{
- if (eof) *eof = c;
+ if (eof)
+ *eof = c;
break;
}
if (c == delim)
@@ -89,31 +91,31 @@ _IO_getline_info (fp, buf, n, delim, extract_delim, eof)
*ptr++ = c;
n--;
}
- else
- {
- char *t;
- if ((_IO_size_t) len >= n)
- len = n;
- t = (char *) memchr ((void *) fp->_IO_read_ptr, delim, len);
- if (t != NULL)
- {
- _IO_size_t old_len = ptr-buf;
- len = t - fp->_IO_read_ptr;
- if (extract_delim >= 0)
- {
- ++t;
- if (extract_delim > 0)
- ++len;
- }
- memcpy ((void *) ptr, (void *) fp->_IO_read_ptr, len);
- fp->_IO_read_ptr = t;
- return old_len + len;
- }
- memcpy ((void *) ptr, (void *) fp->_IO_read_ptr, len);
- fp->_IO_read_ptr += len;
- ptr += len;
- n -= len;
- }
+ else
+ {
+ char *t;
+ if ((_IO_size_t) len >= n)
+ len = n;
+ t = (char *) memchr ((void *) fp->_IO_read_ptr, delim, len);
+ if (t != NULL)
+ {
+ _IO_size_t old_len = ptr-buf;
+ len = t - fp->_IO_read_ptr;
+ if (extract_delim >= 0)
+ {
+ ++t;
+ if (extract_delim > 0)
+ ++len;
+ }
+ memcpy ((void *) ptr, (void *) fp->_IO_read_ptr, len);
+ fp->_IO_read_ptr = t;
+ return old_len + len;
+ }
+ memcpy ((void *) ptr, (void *) fp->_IO_read_ptr, len);
+ fp->_IO_read_ptr += len;
+ ptr += len;
+ n -= len;
+ }
}
return ptr - buf;
}
diff --git a/libio/oldfileops.c b/libio/oldfileops.c
index 2dd618215b..cd54ea5811 100644
--- a/libio/oldfileops.c
+++ b/libio/oldfileops.c
@@ -695,7 +695,7 @@ _IO_old_file_xsputn (f, data, n)
register const char *s = (char *) data;
_IO_size_t to_do = n;
int must_flush = 0;
- _IO_size_t count;
+ _IO_size_t count = 0;
if (n <= 0)
return 0;
@@ -704,7 +704,6 @@ _IO_old_file_xsputn (f, data, n)
(or the filebuf is unbuffered), use sys_write directly. */
/* First figure out how much space is available in the buffer. */
- count = f->_IO_write_end - f->_IO_write_ptr; /* Space available. */
if ((f->_flags & _IO_LINE_BUF) && (f->_flags & _IO_CURRENTLY_PUTTING))
{
count = f->_IO_buf_end - f->_IO_write_ptr;
@@ -722,6 +721,9 @@ _IO_old_file_xsputn (f, data, n)
}
}
}
+ else if (f->_IO_write_end > f->_IO_write_ptr)
+ count = f->_IO_write_end - f->_IO_write_ptr; /* Space available. */
+
/* Then fill the buffer. */
if (count > 0)
{
diff --git a/libio/oldiofclose.c b/libio/oldiofclose.c
index 8dd321b054..62c3154118 100644
--- a/libio/oldiofclose.c
+++ b/libio/oldiofclose.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1997-2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1995,1997-2002,2004,2005 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
@@ -58,8 +58,8 @@ _IO_old_fclose (fp)
status = _IO_old_file_close_it (fp);
else
status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
- _IO_FINISH (fp);
_IO_release_lock (fp);
+ _IO_FINISH (fp);
if (_IO_have_backup (fp))
INTUSE(_IO_free_backup_area) (fp);
if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)
diff --git a/locale/iso-4217.def b/locale/iso-4217.def
index b7c05a351d..fff5e40584 100644
--- a/locale/iso-4217.def
+++ b/locale/iso-4217.def
@@ -109,7 +109,7 @@ DEFINE_INT_CURR("LVL") /* Latvia Lat */
DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */
DEFINE_INT_CURR("MAD") /* Moroccan Dirham */
DEFINE_INT_CURR("MDL") /* Moldova Lei */
-DEFINE_INT_CURR("MGF") /* Madagasy Franc */
+DEFINE_INT_CURR("MGA") /* Madagasy Ariary */
DEFINE_INT_CURR("MKD") /* Macedonia Denar */
DEFINE_INT_CURR("MMK") /* Myanmar Kyat */
DEFINE_INT_CURR("MNT") /* Mongolia Tugrik */
@@ -164,7 +164,7 @@ DEFINE_INT_CURR("TJR") /* Tajikistani Ruble */
DEFINE_INT_CURR("TMM") /* Turkmenistan Manet */
DEFINE_INT_CURR("TND") /* Tunisian Dinar */
DEFINE_INT_CURR("TOP") /* Tonga Pa'Anga */
-DEFINE_INT_CURR("TRL") /* Turkish Lira */
+DEFINE_INT_CURR("TRY") /* New Turkish Lira */
DEFINE_INT_CURR("TTD") /* Trinidad and Tobago */
DEFINE_INT_CURR("TVD") /* Tuvalu Dollars */
DEFINE_INT_CURR("TWD") /* Taiwan, Province of China Dollar */
diff --git a/locale/iso-639.def b/locale/iso-639.def
index 3805b8ef53..0507ba5c91 100644
--- a/locale/iso-639.def
+++ b/locale/iso-639.def
@@ -12,7 +12,7 @@ DEFINE_LANGUAGE_CODE ("Abkhazian", ab, abk, abk)
DEFINE_LANGUAGE_CODE3 ("Achinese", ace, ace)
DEFINE_LANGUAGE_CODE3 ("Acoli", ach, ach)
DEFINE_LANGUAGE_CODE3 ("Adangme", ada, ada)
-DEFINE_LANGUAGE_CODE3 ("Adygei", ady, ady)
+DEFINE_LANGUAGE_CODE3 ("Adyghe; Adygei", ady, ady)
DEFINE_LANGUAGE_CODE ("Afar", aa, aar, aar)
DEFINE_LANGUAGE_CODE3 ("Afrihili", afh, afh)
DEFINE_LANGUAGE_CODE ("Afrikaans", af, afr, afr)
@@ -21,12 +21,12 @@ DEFINE_LANGUAGE_CODE ("Akan", ak, aka, aka)
DEFINE_LANGUAGE_CODE3 ("Akkadian", akk, akk)
DEFINE_LANGUAGE_CODE ("Albanian", sq, sqi, alb)
DEFINE_LANGUAGE_CODE3 ("Aleut", ale, ale)
-DEFINE_LANGUAGE_CODE3 ("Alonquian languages", alg, alg)
+DEFINE_LANGUAGE_CODE3 ("Algonquian languages", alg, alg)
DEFINE_LANGUAGE_CODE3 ("Altaic (Other)", tut, tut)
DEFINE_LANGUAGE_CODE ("Amharic", am, amh, amh)
-DEFINE_LANGUAGE_CODE3 ("Apache language", apa, apa)
+DEFINE_LANGUAGE_CODE3 ("Apache languages", apa, apa)
DEFINE_LANGUAGE_CODE ("Arabic", ar, ara, ara)
-DEFINE_LANGUAGE_CODE ("Argonese", an, arg, arg)
+DEFINE_LANGUAGE_CODE ("Aragonese", an, arg, arg)
DEFINE_LANGUAGE_CODE3 ("Aramaic", arc, arc)
DEFINE_LANGUAGE_CODE3 ("Arapaho", arp, arp)
DEFINE_LANGUAGE_CODE3 ("Araucanian", arn, arn)
@@ -64,7 +64,7 @@ DEFINE_LANGUAGE_CODE ("Bihari", bh, bih, bih)
DEFINE_LANGUAGE_CODE3 ("Bikol", bik, bik)
DEFINE_LANGUAGE_CODE3 ("Bini", bin, bin)
DEFINE_LANGUAGE_CODE ("Bislama", bi, bis, bis)
-DEFINE_LANGUAGE_CODE3 ("Blin", byn, byn)
+DEFINE_LANGUAGE_CODE3 ("Blin; Bilin", byn, byn)
DEFINE_LANGUAGE_CODE ("Bosnian", bs, bos, bos)
DEFINE_LANGUAGE_CODE3 ("Braj", bra, bra)
DEFINE_LANGUAGE_CODE ("Breton", br, bre, bre)
@@ -74,33 +74,34 @@ DEFINE_LANGUAGE_CODE3 ("Buriat", bua, bua)
DEFINE_LANGUAGE_CODE ("Burmese", my, mya, bur)
DEFINE_LANGUAGE_CODE3 ("Caddo", cad, cad)
DEFINE_LANGUAGE_CODE3 ("Carib", car, car)
-DEFINE_LANGUAGE_CODE ("Catalan", ca, cat, cat)
+DEFINE_LANGUAGE_CODE ("Catalan; Valencian", ca, cat, cat)
DEFINE_LANGUAGE_CODE3 ("Caucasian (Other)", cau, cau)
DEFINE_LANGUAGE_CODE3 ("Cebuano", ceb, ceb)
DEFINE_LANGUAGE_CODE3 ("Celtic (Other)", cel, cel)
DEFINE_LANGUAGE_CODE3 ("Central American Indian (Other)", cai, cai)
DEFINE_LANGUAGE_CODE3 ("Chagatai", chg, chg)
-DEFINE_LANGUAGE_CODE3 ("Canmic languages", cmc, cmc)
+DEFINE_LANGUAGE_CODE3 ("Chamic languages", cmc, cmc)
DEFINE_LANGUAGE_CODE ("Chamorro", ch, cha, cha)
DEFINE_LANGUAGE_CODE ("Chechen", ce, che, che)
DEFINE_LANGUAGE_CODE3 ("Cherokee", chr, chr)
-DEFINE_LANGUAGE_CODE ("Chewa; Chechewa; Nyanja", ny, nya, nya)
DEFINE_LANGUAGE_CODE3 ("Cheyenne", chy, chy)
DEFINE_LANGUAGE_CODE3 ("Chibcha", chb, chb)
+DEFINE_LANGUAGE_CODE ("Chichewa; Chewa; Nyanja", ny, nya, nya)
DEFINE_LANGUAGE_CODE ("Chinese", zh, zho, chi)
DEFINE_LANGUAGE_CODE3 ("Chinook jargon", chn, chn)
DEFINE_LANGUAGE_CODE3 ("Chipewyan", chp, chp)
DEFINE_LANGUAGE_CODE3 ("Choctaw", cho, cho)
-DEFINE_LANGUAGE_CODE ("Church Slavic", cu, chu, chu)
+DEFINE_LANGUAGE_CODE ("Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic", cu, chu, chu)
DEFINE_LANGUAGE_CODE3 ("Chuukese", chk, chk)
DEFINE_LANGUAGE_CODE ("Chuvash", cv, chv, chv)
+DEFINE_LANGUAGE_CODE3 ("Classical Newari; Old Newari; Classical Nepal Bhasa", nwc, nwc)
DEFINE_LANGUAGE_CODE3 ("Coptic", cop, cop)
DEFINE_LANGUAGE_CODE ("Cornish", kw, cor, cor)
DEFINE_LANGUAGE_CODE ("Corsican", co, cos, cos)
-DEFINE_LANGUAGE_CODE ("Cree", cr, cre, cre)
DEFINE_LANGUAGE_CODE3 ("Creek", mus, mus)
+DEFINE_LANGUAGE_CODE ("Cree", cr, cre, cre)
DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins (Other)", crp, crp)
-DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, English-based (Other)", cpe, cpe)
+DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, English based (Other)", cpe, cpe)
DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, French-based (Other)", cpf, cpf)
DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, Portuguese-based (Other)", cpp, cpp)
DEFINE_LANGUAGE_CODE3 ("Crimean Tatar; Crimean Turkish", crh, crh)
@@ -114,21 +115,21 @@ DEFINE_LANGUAGE_CODE3 ("Dayak", day, day)
DEFINE_LANGUAGE_CODE3 ("Delaware", del, del)
DEFINE_LANGUAGE_CODE3 ("Dinka", din, din)
DEFINE_LANGUAGE_CODE ("Divehi", dv, div, div)
-DEFINE_LANGUAGE_CODE3 ("Dogri", doi, doi)
DEFINE_LANGUAGE_CODE3 ("Dogrib", dgr, dgr)
+DEFINE_LANGUAGE_CODE3 ("Dogri", doi, doi)
DEFINE_LANGUAGE_CODE3 ("Dravidian (Other)", dra, dra)
DEFINE_LANGUAGE_CODE3 ("Duala", dua, dua)
+DEFINE_LANGUAGE_CODE3 ("Dutch, Middle (ca.1050-1350)", dum, dum)
DEFINE_LANGUAGE_CODE ("Dutch; Flemish", nl, nld, dut)
-DEFINE_LANGUAGE_CODE3 ("Dutch, Middle", dum, dum)
DEFINE_LANGUAGE_CODE3 ("Dyula", dyu, dyu)
DEFINE_LANGUAGE_CODE ("Dzongkha", dz, dzo, dzo)
DEFINE_LANGUAGE_CODE3 ("Efik", efi, efi)
DEFINE_LANGUAGE_CODE3 ("Egyptian (Ancient)", egy, egy)
DEFINE_LANGUAGE_CODE3 ("Ekajuk", eka, eka)
DEFINE_LANGUAGE_CODE3 ("Elamite", elx, elx)
+DEFINE_LANGUAGE_CODE3 ("English, Middle (1100-1500)", enm, enm)
+DEFINE_LANGUAGE_CODE3 ("English, Old (ca.450-1100)", ang, ang)
DEFINE_LANGUAGE_CODE ("English", en, eng, eng)
-DEFINE_LANGUAGE_CODE3 ("English, Middle", enm, enm)
-DEFINE_LANGUAGE_CODE3 ("English, Old", ang, ang)
DEFINE_LANGUAGE_CODE3 ("Erzya", myv, myv)
DEFINE_LANGUAGE_CODE ("Esperanto", eo, epo, epo)
DEFINE_LANGUAGE_CODE ("Estonian", et, est, est)
@@ -138,36 +139,35 @@ DEFINE_LANGUAGE_CODE3 ("Fang", fan, fan)
DEFINE_LANGUAGE_CODE3 ("Fanti", fat, fat)
DEFINE_LANGUAGE_CODE ("Faroese", fo, fao, fao)
DEFINE_LANGUAGE_CODE ("Fijian", fj, fij, fij)
+DEFINE_LANGUAGE_CODE3 ("Filipino; Pilipino", fil, fil)
DEFINE_LANGUAGE_CODE ("Finnish", fi, fin, fin)
DEFINE_LANGUAGE_CODE3 ("Finno-Ugrian (Other)", fiu, fiu)
DEFINE_LANGUAGE_CODE3 ("Fon", fon, fon)
+DEFINE_LANGUAGE_CODE3 ("French, Middle (ca.1400-1800)", frm, frm)
+DEFINE_LANGUAGE_CODE3 ("French, Old (842-ca.1400)", fro, fro)
DEFINE_LANGUAGE_CODE ("French", fr, fra, fre)
-DEFINE_LANGUAGE_CODE3 ("French, Middle", frm, frm)
-DEFINE_LANGUAGE_CODE3 ("French, Old", fro, fro)
DEFINE_LANGUAGE_CODE ("Frisian", fy, fry, fry)
DEFINE_LANGUAGE_CODE3 ("Friulian", fur, fur)
DEFINE_LANGUAGE_CODE ("Fulah", ff, ful, ful)
-DEFINE_LANGUAGE_CODE3 ("Ga", gaa, gaa)
-DEFINE_LANGUAGE_CODE ("Gaelic (Scots)", gd, gla, gla)
+DEFINE_LANGUAGE_CODE ("Gaelic; Scottish Gaelic", gd, gla, gla)
DEFINE_LANGUAGE_CODE ("Gallegan", gl, glg, glg)
DEFINE_LANGUAGE_CODE ("Ganda", lg, lug, lug)
DEFINE_LANGUAGE_CODE3 ("Gayo", gay, gay)
+DEFINE_LANGUAGE_CODE3 ("Ga", gaa, gaa)
DEFINE_LANGUAGE_CODE3 ("Gbaya", gba, gba)
DEFINE_LANGUAGE_CODE3 ("Geez", gez, gez)
DEFINE_LANGUAGE_CODE ("Georgian", ka, kat, geo)
-DEFINE_LANGUAGE_CODE ("German", de, deu, ger)
-DEFINE_LANGUAGE_CODE3 ("German, Low; Saxon, Low", nds, nds)
-DEFINE_LANGUAGE_CODE3 ("German, Middle High", gmh, gmh)
-DEFINE_LANGUAGE_CODE3 ("German, Old High", goh, goh)
+DEFINE_LANGUAGE_CODE3 ("German, Middle High (ca.1050-1500)", gmh, gmh)
+DEFINE_LANGUAGE_CODE3 ("German, Old High (ca.750-1050)", goh, goh)
DEFINE_LANGUAGE_CODE3 ("Germanic (Other)", gem, gem)
-DEFINE_LANGUAGE_CODE ("Gikuyu; Kikuyu", ki, kik, kik)
+DEFINE_LANGUAGE_CODE ("German", de, deu, ger)
DEFINE_LANGUAGE_CODE3 ("Gilbertese", gil, gil)
DEFINE_LANGUAGE_CODE3 ("Gondi", gon, gon)
DEFINE_LANGUAGE_CODE3 ("Gorontalo", gor, gor)
DEFINE_LANGUAGE_CODE3 ("Gothic", got, got)
DEFINE_LANGUAGE_CODE3 ("Grebo", grb, grb)
-DEFINE_LANGUAGE_CODE3 ("Greek, Ancient", grc, grc)
-DEFINE_LANGUAGE_CODE ("Greek, Modern", el, gre, ell)
+DEFINE_LANGUAGE_CODE3 ("Greek, Ancient (to 1453)", grc, grc)
+DEFINE_LANGUAGE_CODE ("Greek, Modern (1453-)", el, ell, gre)
DEFINE_LANGUAGE_CODE ("Guarani", gn, grn, grn)
DEFINE_LANGUAGE_CODE ("Gujarati", gu, guj, guj)
DEFINE_LANGUAGE_CODE3 ("Gwich´in", gwi, gwi)
@@ -196,29 +196,30 @@ DEFINE_LANGUAGE_CODE3 ("Indic (Other)", inc, inc)
DEFINE_LANGUAGE_CODE3 ("Indo-European (Other)", ine, ine)
DEFINE_LANGUAGE_CODE ("Indonesian", id, ind, ind)
DEFINE_LANGUAGE_CODE3 ("Ingush", inh, inh)
-DEFINE_LANGUAGE_CODE ("Interlingua", ia, ina, ina)
+DEFINE_LANGUAGE_CODE ("Interlingua (International Auxiliary Language Association)", ia, ina, ina)
DEFINE_LANGUAGE_CODE ("Interlingue", ie, ile, ile)
DEFINE_LANGUAGE_CODE ("Inuktitut", iu, iku, iku)
DEFINE_LANGUAGE_CODE ("Inupiaq", ik, ipk, ipk)
DEFINE_LANGUAGE_CODE3 ("Iranian (Other)", ira, ira)
+DEFINE_LANGUAGE_CODE3 ("Irish, Middle (900-1200)", mga, mga)
+DEFINE_LANGUAGE_CODE3 ("Irish, Old (to 900)", sga, sga)
DEFINE_LANGUAGE_CODE ("Irish", ga, gle, gle)
-DEFINE_LANGUAGE_CODE3 ("Irish, Middle", mga, mga)
-DEFINE_LANGUAGE_CODE3 ("Irish, Old", sga, sga)
DEFINE_LANGUAGE_CODE3 ("Iroquoian languages", iro, iro)
DEFINE_LANGUAGE_CODE ("Italian", it, ita, ita)
DEFINE_LANGUAGE_CODE ("Japanese", ja, jpn, jpn)
-DEFINE_LANGUAGE_CODE ("Javanese", jv, jaw, jav)
+DEFINE_LANGUAGE_CODE ("Javanese", jv, jav, jav)
DEFINE_LANGUAGE_CODE3 ("Judeo-Arabic", jrb, jrb)
DEFINE_LANGUAGE_CODE3 ("Judeo-Persian", jpr, jpr)
DEFINE_LANGUAGE_CODE3 ("Kabardian", kbd, kbd)
DEFINE_LANGUAGE_CODE3 ("Kabyle", kab, kab)
DEFINE_LANGUAGE_CODE3 ("Kachin", kac, kac)
-DEFINE_LANGUAGE_CODE ("Kalaallisut (Greenlandic)", kl, kal, kal)
+DEFINE_LANGUAGE_CODE ("Kalaallisut; Greenlandic", kl, kal, kal)
+DEFINE_LANGUAGE_CODE3 ("Kalmyk", xal, xal)
DEFINE_LANGUAGE_CODE3 ("Kamba", kam, kam)
DEFINE_LANGUAGE_CODE ("Kannada", kn, kan, kan)
DEFINE_LANGUAGE_CODE ("Kanuri", kr, kau, kau)
-DEFINE_LANGUAGE_CODE3 ("Karachay-Balkar", krc, krc)
DEFINE_LANGUAGE_CODE3 ("Kara-Kalpak", kaa, kaa)
+DEFINE_LANGUAGE_CODE3 ("Karachay-Balkar", krc, krc)
DEFINE_LANGUAGE_CODE3 ("Karen", kar, kar)
DEFINE_LANGUAGE_CODE ("Kashmiri", ks, kas, kas)
DEFINE_LANGUAGE_CODE3 ("Kashubian", csb, csb)
@@ -228,10 +229,11 @@ DEFINE_LANGUAGE_CODE3 ("Khasi", kha, kha)
DEFINE_LANGUAGE_CODE ("Khmer", km, khm, khm)
DEFINE_LANGUAGE_CODE3 ("Khoisan (Other)", khi, khi)
DEFINE_LANGUAGE_CODE3 ("Khotanese", kho, kho)
-DEFINE_LANGUAGE_CODE ("Kikuyu", ki, kik, kik)
+DEFINE_LANGUAGE_CODE ("Kikuyu; Gikuyu", ki, kik, kik)
DEFINE_LANGUAGE_CODE3 ("Kimbundu", kmb, kmb)
DEFINE_LANGUAGE_CODE ("Kinyarwanda", rw, kin, kin)
DEFINE_LANGUAGE_CODE ("Kirghiz", ky, kir, kir)
+DEFINE_LANGUAGE_CODE3 ("Klingon; tlhIngan-Hol", tlh, tlh)
DEFINE_LANGUAGE_CODE ("Komi", kv, kom, kom)
DEFINE_LANGUAGE_CODE ("Kongo", kg, kon, kon)
DEFINE_LANGUAGE_CODE3 ("Konkani", kok, kok)
@@ -239,7 +241,7 @@ DEFINE_LANGUAGE_CODE ("Korean", ko, kor, kor)
DEFINE_LANGUAGE_CODE3 ("Kosraean", kos, kos)
DEFINE_LANGUAGE_CODE3 ("Kpelle", kpe, kpe)
DEFINE_LANGUAGE_CODE3 ("Kru", kro, kro)
-DEFINE_LANGUAGE_CODE ("Kuanyama", kj, kua, kua)
+DEFINE_LANGUAGE_CODE ("Kuanyama; Kwanyama", kj, kua, kua)
DEFINE_LANGUAGE_CODE3 ("Kumyk", kum, kum)
DEFINE_LANGUAGE_CODE ("Kurdish", ku, kur, kur)
DEFINE_LANGUAGE_CODE3 ("Kurukh", kru, kru)
@@ -250,11 +252,13 @@ DEFINE_LANGUAGE_CODE3 ("Lamba", lam, lam)
DEFINE_LANGUAGE_CODE ("Lao", lo, lao, lao)
DEFINE_LANGUAGE_CODE ("Latin", la, lat, lat)
DEFINE_LANGUAGE_CODE ("Latvian", lv, lav, lav)
-DEFINE_LANGUAGE_CODE ("Letzeburgesch", lb, ltz, ltz)
DEFINE_LANGUAGE_CODE3 ("Lezghian", lez, lez)
DEFINE_LANGUAGE_CODE ("Limburgan; Limburger; Limburgish", li, lim, lim)
DEFINE_LANGUAGE_CODE ("Lingala", ln, lin, lin)
DEFINE_LANGUAGE_CODE ("Lithuanian", lt, lit, lit)
+DEFINE_LANGUAGE_CODE3 ("Lojban", jbo, jbo)
+DEFINE_LANGUAGE_CODE3 ("Low German; Low Saxon; German, Low; Saxon, Low", nds, nds)
+DEFINE_LANGUAGE_CODE3 ("Lower Sorbian", dsb, dsb)
DEFINE_LANGUAGE_CODE3 ("Lozi", loz, loz)
DEFINE_LANGUAGE_CODE ("Luba-Katanga", lu, lub, lub)
DEFINE_LANGUAGE_CODE3 ("Luba-Lulua", lua, lua)
@@ -263,14 +267,15 @@ DEFINE_LANGUAGE_CODE3 ("Lule Sami", smj, smj)
DEFINE_LANGUAGE_CODE3 ("Lunda", lun, lun)
DEFINE_LANGUAGE_CODE3 ("Luo (Kenya and Tanzania)", luo, luo)
DEFINE_LANGUAGE_CODE3 ("Lushai", lus, lus)
+DEFINE_LANGUAGE_CODE ("Luxembourgish; Letzeburgesch", lb, ltz, ltz)
DEFINE_LANGUAGE_CODE ("Macedonian", mk, mkd, mac)
DEFINE_LANGUAGE_CODE3 ("Madurese", mad, mad)
DEFINE_LANGUAGE_CODE3 ("Magahi", mag, mag)
DEFINE_LANGUAGE_CODE3 ("Maithili", mai, mai)
DEFINE_LANGUAGE_CODE3 ("Makasar", mak, mak)
DEFINE_LANGUAGE_CODE ("Malagasy", mg, mlg, mlg)
-DEFINE_LANGUAGE_CODE ("Malay", ms, msa, may)
DEFINE_LANGUAGE_CODE ("Malayalam", ml, mal, mal)
+DEFINE_LANGUAGE_CODE ("Malay", ms, msa, may)
DEFINE_LANGUAGE_CODE ("Maltese", mt, mlt, mlt)
DEFINE_LANGUAGE_CODE3 ("Manchu", mnc, mnc)
DEFINE_LANGUAGE_CODE3 ("Mandar", mdr, mdr)
@@ -286,42 +291,46 @@ DEFINE_LANGUAGE_CODE3 ("Marwari", mwr, mwr)
DEFINE_LANGUAGE_CODE3 ("Masai", mas, mas)
DEFINE_LANGUAGE_CODE3 ("Mayan languages", myn, myn)
DEFINE_LANGUAGE_CODE3 ("Mende", men, men)
-DEFINE_LANGUAGE_CODE3 ("Micmac", mic, mic)
+DEFINE_LANGUAGE_CODE3 ("Mi'kmaq; Micmac", mic, mic)
DEFINE_LANGUAGE_CODE3 ("Minangkabau", min, min)
+DEFINE_LANGUAGE_CODE3 ("Mirandese", mwl, mwl)
DEFINE_LANGUAGE_CODE3 ("Miscellaneous languages", mis, mis)
DEFINE_LANGUAGE_CODE3 ("Mohawk", moh, moh)
DEFINE_LANGUAGE_CODE3 ("Moksha", mdf, mdf)
DEFINE_LANGUAGE_CODE ("Moldavian", mo, mol, mol)
DEFINE_LANGUAGE_CODE3 ("Mon-Khmer (Other)", mkh, mkh)
-DEFINE_LANGUAGE_CODE3 ("Mongo", lol, lol)
DEFINE_LANGUAGE_CODE ("Mongolian", mn, mon, mon)
+DEFINE_LANGUAGE_CODE3 ("Mongo", lol, lol)
DEFINE_LANGUAGE_CODE3 ("Mossi", mos, mos)
+DEFINE_LANGUAGE_CODE3 ("Multiple languages", mul, mul)
DEFINE_LANGUAGE_CODE3 ("Munda languages", mun, mun)
DEFINE_LANGUAGE_CODE3 ("Nahuatl", nah, nah)
DEFINE_LANGUAGE_CODE ("Nauru", na, nau, nau)
-DEFINE_LANGUAGE_CODE ("Navajo", nv, nav, nav)
-DEFINE_LANGUAGE_CODE ("Ndebele, North", nd, nde, nde)
-DEFINE_LANGUAGE_CODE ("Ndebele, South", nr, nbl, nbl)
+DEFINE_LANGUAGE_CODE ("Navajo; Navaho", nv, nav, nav)
+DEFINE_LANGUAGE_CODE ("Ndebele, North; North Ndebele", nd, nde, nde)
+DEFINE_LANGUAGE_CODE ("Ndebele, South; South Ndebele", nr, nbl, nbl)
DEFINE_LANGUAGE_CODE ("Ndonga", ng, ndo, ndo)
DEFINE_LANGUAGE_CODE3 ("Neapolitan", nap, nap)
+DEFINE_LANGUAGE_CODE3 ("Nepal Bhasa; Newari", new, new)
DEFINE_LANGUAGE_CODE ("Nepali", ne, nep, nep)
-DEFINE_LANGUAGE_CODE3 ("Newari", new, new)
DEFINE_LANGUAGE_CODE3 ("Nias", nia, nia)
DEFINE_LANGUAGE_CODE3 ("Niger-Kordofanian (Other)", nic, nic)
DEFINE_LANGUAGE_CODE3 ("Nilo-Saharan (Other)", ssa, ssa)
DEFINE_LANGUAGE_CODE3 ("Niuean", niu, niu)
DEFINE_LANGUAGE_CODE3 ("Nogai", nog, nog)
DEFINE_LANGUAGE_CODE3 ("Norse, Old", non, non)
-DEFINE_LANGUAGE_CODE3 ("North American Indian (Other)", nai, nai)
+DEFINE_LANGUAGE_CODE3 ("North American Indian", nai, nai)
DEFINE_LANGUAGE_CODE ("Northern Sami", se, sme, sme)
-DEFINE_LANGUAGE_CODE ("Norwegian", no, nor, nor)
+DEFINE_LANGUAGE_CODE3 ("Northern Sotho; Pedi; Sepedi", nso, nso)
DEFINE_LANGUAGE_CODE ("Norwegian Bokmål", nb, nob, nob)
DEFINE_LANGUAGE_CODE ("Norwegian Nynorsk", nn, nno, nno)
+DEFINE_LANGUAGE_CODE ("Norwegian", no, nor, nor)
DEFINE_LANGUAGE_CODE3 ("Nubian languages", nub, nub)
DEFINE_LANGUAGE_CODE3 ("Nyamwezi", nym, nym)
DEFINE_LANGUAGE_CODE3 ("Nyankole", nyn, nyn)
DEFINE_LANGUAGE_CODE3 ("Nyoro", nyo, nyo)
DEFINE_LANGUAGE_CODE3 ("Nzima", nzi, nzi)
+DEFINE_LANGUAGE_CODE ("Occitan (post 1500); Provençal", oc, oci, oci)
DEFINE_LANGUAGE_CODE ("Ojibwa", oj, oji, oji)
DEFINE_LANGUAGE_CODE ("Oriya", or, ori, ori)
DEFINE_LANGUAGE_CODE ("Oromo", om, orm, orm)
@@ -333,18 +342,17 @@ DEFINE_LANGUAGE_CODE3 ("Palauan", pau, pau)
DEFINE_LANGUAGE_CODE ("Pali", pi, pli, pli)
DEFINE_LANGUAGE_CODE3 ("Pampanga", pam, pam)
DEFINE_LANGUAGE_CODE3 ("Pangasinan", pag, pag)
-DEFINE_LANGUAGE_CODE ("Panjabi", pa, pan, pan)
+DEFINE_LANGUAGE_CODE ("Panjabi; Punjabi", pa, pan, pan)
DEFINE_LANGUAGE_CODE3 ("Papiamento", pap, pap)
DEFINE_LANGUAGE_CODE3 ("Papuan (Other)", paa, paa)
+DEFINE_LANGUAGE_CODE3 ("Persian, Old (ca.600-400 B.C.)", peo, peo)
DEFINE_LANGUAGE_CODE ("Persian", fa, fas, per)
-DEFINE_LANGUAGE_CODE3 ("Persian, Old (ca.600-400 B.C.E.)", peo, peo)
DEFINE_LANGUAGE_CODE3 ("Philippine (Other)", phi, phi)
DEFINE_LANGUAGE_CODE3 ("Phoenician", phn, phn)
DEFINE_LANGUAGE_CODE3 ("Pohnpeian", pon, pon)
DEFINE_LANGUAGE_CODE ("Polish", pl, pol, pol)
DEFINE_LANGUAGE_CODE ("Portuguese", pt, por, por)
-DEFINE_LANGUAGE_CODE3 ("Prakrit", pra, pra)
-DEFINE_LANGUAGE_CODE ("Provençal; Occitan (post 1500)", oc, oci, oci)
+DEFINE_LANGUAGE_CODE3 ("Prakrit languages", pra, pra)
DEFINE_LANGUAGE_CODE3 ("Provençal, Old (to 1500)", pro, pro)
DEFINE_LANGUAGE_CODE ("Pushto", ps, pus, pus)
DEFINE_LANGUAGE_CODE ("Quechua", qu, que, que)
@@ -375,10 +383,12 @@ DEFINE_LANGUAGE_CODE3 ("Serer", srr, srr)
DEFINE_LANGUAGE_CODE3 ("Shan", shn, shn)
DEFINE_LANGUAGE_CODE ("Shona", sn, sna, sna)
DEFINE_LANGUAGE_CODE ("Sichuan Yi", ii, iii, iii)
+DEFINE_LANGUAGE_CODE3 ("Sicilian", scn, scn)
DEFINE_LANGUAGE_CODE3 ("Sidamo", sid, sid)
+DEFINE_LANGUAGE_CODE3 ("Sign Languages", sgn, sgn)
DEFINE_LANGUAGE_CODE3 ("Siksika", bla, bla)
DEFINE_LANGUAGE_CODE ("Sindhi", sd, snd, snd)
-DEFINE_LANGUAGE_CODE ("Sinhalese", si, sin, sin)
+DEFINE_LANGUAGE_CODE ("Sinhala; Sinhalese", si, sin, sin)
DEFINE_LANGUAGE_CODE3 ("Sino-Tibetan (Other)", sit, sit)
DEFINE_LANGUAGE_CODE3 ("Siouan languages", sio, sio)
DEFINE_LANGUAGE_CODE3 ("Skolt Sami", sms, sms)
@@ -391,11 +401,10 @@ DEFINE_LANGUAGE_CODE ("Somali", so, som, som)
DEFINE_LANGUAGE_CODE3 ("Songhai", son, son)
DEFINE_LANGUAGE_CODE3 ("Soninke", snk, snk)
DEFINE_LANGUAGE_CODE3 ("Sorbian languages", wen, wen)
-DEFINE_LANGUAGE_CODE3 ("Sotho, Northern", nso, nso)
DEFINE_LANGUAGE_CODE ("Sotho, Southern", st, sot, sot)
DEFINE_LANGUAGE_CODE3 ("South American Indian (Other)", sai, sai)
DEFINE_LANGUAGE_CODE3 ("Southern Sami", sma, sma)
-DEFINE_LANGUAGE_CODE ("Spanish", es, spa, spa)
+DEFINE_LANGUAGE_CODE ("Spanish; Castilian", es, spa, spa)
DEFINE_LANGUAGE_CODE3 ("Sukuma", suk, suk)
DEFINE_LANGUAGE_CODE3 ("Sumerian", sux, sux)
DEFINE_LANGUAGE_CODE ("Sundanese", su, sun, sun)
@@ -430,21 +439,23 @@ DEFINE_LANGUAGE_CODE ("Tsonga", ts, tso, tso)
DEFINE_LANGUAGE_CODE ("Tswana", tn, tsn, tsn)
DEFINE_LANGUAGE_CODE3 ("Tumbuka", tum, tum)
DEFINE_LANGUAGE_CODE3 ("Tupi languages", tup, tup)
-DEFINE_LANGUAGE_CODE ("Turkish", tr, tur, tur)
DEFINE_LANGUAGE_CODE3 ("Turkish, Ottoman (1500-1928)", ota, ota)
+DEFINE_LANGUAGE_CODE ("Turkish", tr, tur, tur)
DEFINE_LANGUAGE_CODE ("Turkmen", tk, tuk, tuk)
DEFINE_LANGUAGE_CODE3 ("Tuvalu", tvl, tvl)
DEFINE_LANGUAGE_CODE3 ("Tuvinian", tyv, tyv)
DEFINE_LANGUAGE_CODE ("Twi", tw, twi, twi)
DEFINE_LANGUAGE_CODE3 ("Udmurt", udm, udm)
DEFINE_LANGUAGE_CODE3 ("Ugaritic", uga, uga)
-DEFINE_LANGUAGE_CODE ("Uighur", ug, uig, uig)
+DEFINE_LANGUAGE_CODE ("Uighur; Uyghur", ug, uig, uig)
DEFINE_LANGUAGE_CODE ("Ukrainian", uk, ukr, ukr)
DEFINE_LANGUAGE_CODE3 ("Umbundu", umb, umb)
+DEFINE_LANGUAGE_CODE3 ("Undetermined", und, und)
+DEFINE_LANGUAGE_CODE3 ("Upper Sorbian", hsb, hsb)
DEFINE_LANGUAGE_CODE ("Urdu", ur, urd, urd)
DEFINE_LANGUAGE_CODE ("Uzbek", uz, uzb, uzb)
DEFINE_LANGUAGE_CODE3 ("Vai", vai, vai)
-DEFINE_LANGUAGE_CODE3 ("Venda", ven, ven)
+DEFINE_LANGUAGE_CODE ("Venda", ve, ven, ven)
DEFINE_LANGUAGE_CODE ("Vietnamese", vi, vie, vie)
DEFINE_LANGUAGE_CODE ("Volapük", vo, vol, vol)
DEFINE_LANGUAGE_CODE3 ("Votic", vot, vot)
@@ -465,6 +476,6 @@ DEFINE_LANGUAGE_CODE3 ("Yupik languages", ypk, ypk)
DEFINE_LANGUAGE_CODE3 ("Zande", znd, znd)
DEFINE_LANGUAGE_CODE3 ("Zapotec", zap, zap)
DEFINE_LANGUAGE_CODE3 ("Zenaga", zen, zen)
-DEFINE_LANGUAGE_CODE ("Zhuang", za, zha, zha)
+DEFINE_LANGUAGE_CODE ("Zhuang; Chuang", za, zha, zha)
DEFINE_LANGUAGE_CODE ("Zulu", zu, zul, zul)
DEFINE_LANGUAGE_CODE3 ("Zuni", zun, zun)
diff --git a/locale/programs/ld-address.c b/locale/programs/ld-address.c
index 079aa0094d..5a7d821de6 100644
--- a/locale/programs/ld-address.c
+++ b/locale/programs/ld-address.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -224,17 +224,24 @@ No definition for %s category found"), "LC_ADDRESS"));
if (address->lang_ab == NULL)
{
- if (verbose && ! nothing)
+ if (iso639[cnt].ab[0] != '\0' && verbose && ! nothing)
WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_ADDRESS", "lang_ab"));
address->lang_ab = "";
}
else if (address->lang_ab[0] == '\0')
{
- if (verbose)
+ if (iso639[cnt].ab[0] != '\0' && verbose)
WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' must not be empty"),
"LC_ADDRESS", "lang_ab"));
}
+ else if (iso639[cnt].ab[0] == '\0')
+ {
+ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' must not be defined"),
+ "LC_ADDRESS", "lang_ab"));
+
+ address->lang_ab = "";
+ }
else
{
if (cnt == sizeof (iso639) / sizeof (iso639[0]))
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index c456ec6ed5..5c6f3e6b82 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,95 @@
+2005-09-29 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/en_US: Fix postal_fmt.
+ * locales/es_US: Update LC_ADDRESS info from en_US.
+ Reported by FrankTang@gmail.com.
+
+2005-09-25 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #811]
+ * locales/zh_CN: Fix date_fmt information.
+
+ * SUPPORTED (SUPPORTED-LOCALES): Add km_KH.
+
+ [BZ #826]
+ * locales/km_KH: New file.
+
+ * Makefile (LOCALES): Add zh_TW.EUC-TW.
+
+2005-09-24 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #668]
+ * locales/yi_US: Spelling fixes.
+
+ [BZ #667]
+ * locales/wa_BE: Fixed weekday names to match new orthographic rules.
+
+ [BZ #666]
+ * locales/tg_TJ: Correct yesexpr.
+
+ [BZ #665]
+ * locales/sq_AL: Add language specific collation.
+
+ [BZ #663]
+ * locales/bs_BA: Don't comment out reorder-after. Fix tel_int_fmt.
+
+ [BZ #662]
+ * locales/az_AZ: Fix the day and month names. Add transliteration
+ for schwa character.
+
+ [BZ #657]
+ * locales/bn_BD: Some corrections.
+ Patch by Jamil Ahmed <jamil@bengalinux.org>.
+
+ [BZ #588]
+ * locales/el_GR: Change to use 12h time format.
+ Patch by Konstantinos Margaritis <markos@debian.org>.
+
+ * SUPPORTED (SUPPORTED-LOCALES): Add hsb_DE and hsb_DE.UTF-8.
+
+ [BZ #566]
+ * locales/hsb_DE: New file.
+
+ [BZ #527]
+ * locales/sid_ET: Remove incorrect lang_ab definition.
+
+ [BZ #525]
+ * locales/ru_RU: Use nominative instead of genitive in mon data to
+ align with other locales with the same issue.
+
+ * SUPPORTED (SUPPORTED-LOCALES): Add ky_KG.
+
+ [BZ #520]
+ * locales/ky_KG: New file.
+
+ [BZ #495]
+ * locales/st_ZA: Updates and corrections.
+ Patch by Dwayne Bailey <dwayne@translate.org.za>.
+
+ [BZ #493]
+ * locales/xh_ZA: Updates and corrections.
+ Patch by Dwayne Bailey <dwayne@translate.org.za>.
+
+ [BZ #488]
+ * locales/zu_ZA: Updates and corrections.
+ Patch by Dwayne Bailey <dwayne@translate.org.za>.
+
+ [BZ #484]
+ * locales/af_ZA: Updates and corrections.
+ Patch by Dwayne Bailey <dwayne@translate.org.za>.
+
+ * SUPPORTED (SUPPORTED-LOCALES): Add be_BY@latin.
+
+ [BZ #1347]
+ * locales/be_BY@latin: New file.
+
+2005-09-23 Ulrich Drepper <drepper@redhat.com>
+
+ * SUPPORTED (SUPPORTED-LOCALES): Add mg_MG and mg_MG.UTF-8.
+
+ [BZ #704]
+ * locales/mg_MG: New file.
+
2005-07-26 Ulrich Drepper <drepper@redhat.com>
* locales/hu_HU: Better collation.
diff --git a/localedata/Makefile b/localedata/Makefile
index 5c314f9121..ed76a897d0 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1996-2002, 2003, 2005 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
@@ -132,7 +132,7 @@ LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \
en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \
hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \
vi_VN.TCVN5712-1 nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 \
- tr_TR.UTF-8 cs_CZ.UTF-8
+ tr_TR.UTF-8 cs_CZ.UTF-8 zh_TW.EUC-TW
LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g')
CHARMAPS := $(shell echo "$(LOCALES)" | \
sed -e 's/[^ .]*[.]\([^ ]*\)/\1/g' -e s/SJIS/SHIFT_JIS/g)
diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED
index 5f8acd14c1..d3fcf74e82 100644
--- a/localedata/SUPPORTED
+++ b/localedata/SUPPORTED
@@ -49,6 +49,7 @@ ar_YE/ISO-8859-6 \
az_AZ.UTF-8/UTF-8 \
be_BY.UTF-8/UTF-8 \
be_BY/CP1251 \
+be_BY@latin/UTF-8 \
bg_BG.UTF-8/UTF-8 \
bg_BG/CP1251 \
bn_BD/UTF-8 \
@@ -201,6 +202,8 @@ he_IL/ISO-8859-8 \
hi_IN/UTF-8 \
hr_HR.UTF-8/UTF-8 \
hr_HR/ISO-8859-2 \
+hsb_DE/ISO-8859-2 \
+hsb_DE.UTF-8/UTF-8 \
hu_HU.UTF-8/UTF-8 \
hu_HU/ISO-8859-2 \
id_ID.UTF-8/UTF-8 \
@@ -222,11 +225,13 @@ kk_KZ.UTF-8/UTF-8 \
kk_KZ/PT154 \
kl_GL.UTF-8/UTF-8 \
kl_GL/ISO-8859-1 \
+km_KH/UTF-8 \
kn_IN/UTF-8 \
ko_KR.EUC-KR/EUC-KR \
ko_KR.UTF-8/UTF-8 \
kw_GB.UTF-8/UTF-8 \
kw_GB/ISO-8859-1 \
+ky_KG/UTF-8 \
lg_UG.UTF-8/UTF-8 \
lg_UG/ISO-8859-10 \
lo_LA/UTF-8 \
@@ -234,6 +239,8 @@ lt_LT.UTF-8/UTF-8 \
lt_LT/ISO-8859-13 \
lv_LV.UTF-8/UTF-8 \
lv_LV/ISO-8859-13 \
+mg_MG.UTF-8/UTF-8 \
+mg_MG/ISO-8859-15 \
mi_NZ.UTF-8/UTF-8 \
mi_NZ/ISO-8859-13 \
mk_MK.UTF-8/UTF-8 \
diff --git a/localedata/locales/af_ZA b/localedata/locales/af_ZA
index b5699bc77b..ca1fdfb36f 100644
--- a/localedata/locales/af_ZA
+++ b/localedata/locales/af_ZA
@@ -1,33 +1,45 @@
escape_char /
comment_char %
-% Afrikaans language locale for South Africa
-% Source: RAP
-% Email: schalkc@ntaba.co.za
-% Tel: +27 12 3293397
-% Fax: +27 12 3293397
-% Language: af
-% Territory: ZA
-% Revision: 0.2
-% Date: 1999-09-28
-% Users: general
-% Repertoiremap: mnemonic.ds
-% Charset: ISO-8859-1
-% Distribution and use is free, also
-% for commercial purposes.
+% ChangeLog
+% 1.2 (2004-10-28):
+% 2004-10-28 Dwayne Bailey <dwayne@translate.org.za>
+% - Corrected country_name should be "Suid-Afrika"
+% 2004-10-27 Dwayne Bailey <dwayne@translate.org.za>
+% - Change decimal and thousand separator to match common convention of
+% [comma]==thousand, [point]==decimal. Thus copy en_ZA
+% - Add country_post, lang_lib
+% - abmon March: Mar -> Mrt
+% - name_* corrected all capitalisation
+% - Add Translate.org.za to clarify "source"
+% - Update all contact details
+% - Change yesexpr to also accept yY
+% - Update yes/noexpr to remove .*
+% 2004-03-30 Dwayne Bailey <dwayne@translate.org.za>
+% - Added name_miss
+% 1.1 (2003-04-23):
+% 2003-04-23 Dwayne Bailey <dwayne@translate.org.za>
+% - Added LC_MEASUREMENT to LC_IDENTIFICATION
+% - PAPER, TELEPHONE and MEASUREMENT copy en_ZA
+% - Added "^" to yesexpr and noexpr ie "^[nN].*"
+% - Change maintainer to Zuza Software Foundation
+% - Add all missing items in LC_ADDRESS
+% - Add all name_* to LC_NAME
+% - Add various comments explaining items
+
LC_IDENTIFICATION
title "Afrikaans locale for South Africa"
-source "RAP"
-address ""
-contact ""
-email "bug-glibc-locales@gnu.org"
-tel ""
-fax ""
+source "Zuza Software Foundation (Translate.org.za)"
+address "Box 28364, Sunnyside, 0132, South Africa"
+contact "Dwayne Bailey"
+email "dwayne@translate.org.za"
+tel "+27 12 343 0389"
+fax "+27 12 343 0389"
language "Afrikaans"
territory "South Africa"
-revision "1.0"
-date "2000-06-29"
+revision "1.2"
+date "2004-10-28"
%
category "af_ZA:2000";LC_IDENTIFICATION
category "af_ZA:2000";LC_CTYPE
@@ -35,11 +47,12 @@ category "af_ZA:2000";LC_COLLATE
category "af_ZA:2000";LC_TIME
category "af_ZA:2000";LC_NUMERIC
category "af_ZA:2000";LC_MONETARY
-category "af_ZA:2000";LC_MESSAGES
-category "af_ZA:2000";LC_PAPER
+category "af_ZA:2003";LC_MESSAGES
+category "af_ZA:2003";LC_PAPER
category "af_ZA:2000";LC_NAME
-category "af_ZA:2000";LC_ADDRESS
-category "af_ZA:2000";LC_TELEPHONE
+category "af_ZA:2003";LC_ADDRESS
+category "af_ZA:2003";LC_TELEPHONE
+category "af_ZA:2003";LC_MEASUREMENT
END LC_IDENTIFICATION
@@ -48,39 +61,27 @@ copy "i18n"
END LC_CTYPE
LC_COLLATE
-copy "en_DK"
+copy "iso14651_t1"
END LC_COLLATE
-
LC_MONETARY
-int_curr_symbol "<U005A><U0041><U0052><U0020>"
-currency_symbol "<U0052>"
-mon_decimal_point "<U002C>"
-mon_thousands_sep "<U002E>"
-mon_grouping 3;3
-positive_sign ""
-negative_sign "<U002D>"
-int_frac_digits 2
-frac_digits 2
-p_cs_precedes 1
-p_sep_by_space 0
-n_cs_precedes 1
-n_sep_by_space 0
-p_sign_posn 1
-n_sign_posn 1
+copy "en_ZA"
END LC_MONETARY
LC_NUMERIC
-decimal_point "<U002C>"
-thousands_sep "<U002E>"
-grouping 3;3
+copy "en_ZA"
END LC_NUMERIC
LC_TIME
+% abday - The abbreviations for the week days:
+% - So, Ma, Di, Wo, Do, Vr, Sa
abday "<U0053><U006F>";"<U004D><U0061>";/
"<U0044><U0069>";"<U0057><U006F>";/
"<U0044><U006F>";"<U0056><U0072>";/
"<U0053><U0061>"
+
+% day - The full names of the week days:
+% Sondag, Maandag, Dinsdag, Woensdag, Donderdag, Vrydag, Saterdag
day "<U0053><U006F><U006E><U0064><U0061><U0067>";/
"<U004D><U0061><U0061><U006E><U0064><U0061><U0067>";/
"<U0044><U0069><U006E><U0073><U0064><U0061><U0067>";/
@@ -88,12 +89,19 @@ day "<U0053><U006F><U006E><U0064><U0061><U0067>";/
"<U0044><U006F><U006E><U0064><U0065><U0072><U0064><U0061><U0067>";/
"<U0056><U0072><U0079><U0064><U0061><U0067>";/
"<U0053><U0061><U0074><U0065><U0072><U0064><U0061><U0067>"
+
+% abmon - The abbreviations for the months
+% - Jan, Feb, Mrt, Apr, Mei, Jun, Jul, Aug, Sep, Okt, Nov, Des
abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
- "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
+ "<U004D><U0072><U0074>";"<U0041><U0070><U0072>";/
"<U004D><U0065><U0069>";"<U004A><U0075><U006E>";/
"<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
"<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
"<U004E><U006F><U0076>";"<U0044><U0065><U0073>"
+
+% mon - The full names of the months -
+% Januarie, Februarie, Maart, April, Mei, Junie
+% Julie, Augustus, September, Oktober, November, Desember
mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0069><U0065>";/
"<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0069><U0065>";/
"<U004D><U0061><U0061><U0072><U0074>";/
@@ -106,50 +114,170 @@ mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0069><U0065>";/
"<U004F><U006B><U0074><U006F><U0062><U0065><U0072>";/
"<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
"<U0044><U0065><U0073><U0065><U006D><U0062><U0065><U0072>"
+
+% Abbreviated date and time representation to be referenced by the "%c" field descriptor -
+%
+% "%a" (short weekday name),
+% "%d" (day of month as a decimal number),
+% "%b" (short month name),
+% "%Y" (year with century as a decimal number),
+% "%T" (24-hour clock time in format HH:MM:SS),
+% "%Z" (Time zone name)
d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
+
+% Date representation to be referenced by the "%x" field descriptor -
+% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
+d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
+
+% Time representation to be referenced by the "%X" field descriptor -
+% "%T" (24-hour clock time in format HH:MM:SS)
t_fmt "<U0025><U0054>"
+
+% Define representation of ante meridian and post maritime strings -
+% The "" mean 'default to "AM" and "PM".
am_pm "<U0056><U004D>";"<U004E><U004D>"
+
+% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r"
+% The "" means that this format is not supported.
t_fmt_ampm ""
+
+% Date representation not described in ISO/IEC 14652. Comes out as -
+% "%a %b %e %H:%M:%S %Z %Y" which is default "date" command output
+%
+% %a - abbreviated weekday name,
+% %b - abbreviated month name,
+% %e - day of month as a decimal number with leading space (1 to 31),
+% %H - hour (24-hour clock) as a decimal number (00 to 23),
+% %M - minute as a decimal number (00 to 59),
+% %S - seconds as a decimal number (00 to 59),
+% %Z - time-zone name,
+% %Y - year with century as a decimal number,e.g. 2001.
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
END LC_TIME
LC_MESSAGES
-yesexpr "<U005E><U005B><U006A><U004A><U005D><U002E><U002A>"
-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+% The affirmative response -
+% "^[jJyY]"
+yesexpr "<U005E><U005B><U006A><U004A><U0079><U0059><U005D>"
+
+% The negative response -
+% "^[nN]"
+noexpr "<U005E><U005B><U006E><U004E><U005D>"
END LC_MESSAGES
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+copy "en_ZA"
END LC_PAPER
LC_TELEPHONE
-tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
-<U006C>"
-int_prefix "<U0032><U0037>"
+copy "en_ZA"
END LC_TELEPHONE
LC_MEASUREMENT
-% FIXME
-measurement 1
+copy "en_ZA"
END LC_MEASUREMENT
LC_NAME
+% Format for addressing a person.
+% "%d%t%g%t%m%t%f"
+%
+% "Salutation",
+% "Empty string, or <Space>",
+% "First given name",
+% "Empty string, or <Space>",
+% "Middle names",
+% "Empty string, or <Space>",
+% "Clan names"
name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
<U0025><U006D><U0025><U0074><U0025><U0066>"
+
+% General salutation for any sex
+% (no term)
+name_gen ""
+
+% Salutation for unmarried females
+% "mej"
+name_miss "<U006D><U0065><U006A>"
+
+% Salutation for males
+% "mnr"
+name_mr "<U006D><U006E><U0072>"
+
+% Salutation for married females
+% "mev"
+name_mrs "<U006D><U0065><U0076>"
+
+% Salutation valid for all females
+% "me"
+name_ms "<U006D><U0065>"
END LC_NAME
LC_ADDRESS
+% Representation of postal addresses (minus the addressee's name) in South
+% Africa. (Ignored for now)
+% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives -
+%
+% "firm name",
+% "end of line",
+% "C/O address",
+% "end of line",
+% "department name",
+% "Building name",
+% "end of line",
+% "street or block name",
+% "space",
+% "house number or designation",
+% "space",
+% "floor number",
+% "space",
+% "room number, door designation",
+% "end of line",
+% "postal code",
+% "space",
+% "town, city",
+% "end of line",
+% "country designation for the <country_post> keyword",
+% "end of line
postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
<U004E><U0025><U0063><U0025><U004E>"
+
+% Country name in Afrikaans - "Suid-Afrika"
+country_name "<U0053><U0075><U0069><U0064><U002D>/
+<U0041><U0066><U0072><U0069><U006B><U0061>"
+
+% Language name in Afrikaans - "Afrikaans"
+lang_name "<U0041><U0066><U0072><U0069><U006B><U0061><U0061><U006E><U0073>"
+
+% CEPT MAILCODES are suggested
+% Alternatively use the code found on your countries postal item tracking number
+% "ZA"
+country_post "<U005A><U0041>"
+
+% UN Geneve 1949:68 Distinguishing signs of vehicles in international traffic
+% http://www.unece.org/trans/conventn/disting-signs-5-2001.pdf
+% "ZA"
+country_car "<U005A><U0041>"
+
+% ISO 2108
+% http://www.isbn-international.org/html/prefix/prefa.htm
+country_isbn 0
+
+% ISO 639 language abbreviations:
+% 639-1 2 letter, 639-2 3 letter terminology
+% http://www.loc.gov/standards/iso639-2/englangn.html
+% "af", "afr", "afr"
+lang_ab "<U0061><U0066>"
+lang_term "<U0061><U0066><U0072>"
+lang_lib "<U0061><U0066><U0072>"
+
+% ISO 3166 country number and 2 and 3 letter abbreviations
+% http://www.unicode.org/onlinedat/countries.html
+% "ZA", "ZAF"
country_ab2 "<U005A><U0041>"
country_ab3 "<U005A><U0041><U0046>"
country_num 710
diff --git a/localedata/locales/az_AZ b/localedata/locales/az_AZ
index 231ab49166..98404a6e46 100644
--- a/localedata/locales/az_AZ
+++ b/localedata/locales/az_AZ
@@ -2,16 +2,16 @@ comment_char %
escape_char /
%
% Azeri Language Locale for Azerbaijan (latin)
-% Source:
+% Source:
% Contact: Pablo Saratxaga
% Email: <pablo@mandrakesoft.com>
% Language: az
% Territory: AZ
-% Revision: 0.4
-% Date: 2001-01-26
+% Revision: 0.6
+% Date: 2003-12-06
% Application: general
% Users: general
-% Charset: ISO-8859-9E
+% Charset: UTF-8
% Distribution and use is free, also
% for commercial purposes.
@@ -44,11 +44,11 @@ END LC_IDENTIFICATION
%
% TODO: check LC_COLLATE
-% TODO: fix LC_TIME, LC_MONETARY
+% TODO: fix LC_MONETARY
LC_COLLATE
-% The new (1991) latin azeri alphabet is:
-% <a>, <b>, <c>, <c,>, <d>, <e>, <sw>, <f>, <g>, <g(>, <h>, <x>,
+% The new (1991) latin azeri alphabet is:
+% <a>, <b>, <c>, <c,>, <d>, <e>, <sw>, <f>, <g>, <g(>, <h>, <x>,
% <i> (dotless i), <i.> (i with dot), <j>, <k>, <q>, <l>, <m>, <n>, <o>,
% <o:>, <p>, <r>, <s>, <s,>, <t>, <u>, <u:>, <v>, <y>, <z>
%
@@ -189,6 +189,15 @@ END LC_COLLATE
LC_CTYPE
%copy "i18n"
copy "tr_TR"
+translit_start
+include "translit_combining";""
+
+% schwa -> a:
+<U0259> "<U00E4>"
+<U018F> "<U00C4>"
+
+translit_end
+
END LC_CTYPE
LC_MESSAGES
@@ -225,19 +234,19 @@ END LC_NUMERIC
LC_TIME
day "<U0062><U0061><U007A><U0061><U0072><U0020><U0067><U00FC><U006E><U00FC>";/
- "<U0062><U0069><U0072><U0069><U006E><U0063><U0069><U0020><U0067><U00FC><U006E>";/
- "<U0069><U006B><U0069><U006E><U0063><U0069><U0020><U0067><U00FC><U006E>";/
- "<U00FC><U00E7><U00FC><U006E><U0063><U00FC><U0020><U0067><U00FC><U006E>";/
- "<U0064><U00F6><U0072><U0064><U00FC><U006E><U0063><U00FC><U0020><U0067><U00FC><U006E>";/
- "<U0062><U0065><U015F><U0069><U006E><U0063><U0069><U0020><U0067><U00FC><U006E>";/
- "<U0061><U006C><U0074><U0131><U006E><U0063><U0131><U0020><U0067><U00FC><U006E>"
+ "<U0062><U0061><U007A><U0061><U0072><U0020><U0065><U0072><U0074><U0259><U0073><U0069>";/
+ "<U00E7><U0259><U0072><U015F><U0259><U006E><U0062><U0259><U0020><U0061><U0078><U015F><U0061><U006D><U0131>";/
+ "<U00E7><U0259><U0072><U015F><U0259><U006E><U0062><U0259>";/
+ "<U0063><U00FC><U006D><U0259><U0020><U0061><U0078><U015F><U0061><U006D><U0131>";/
+ "<U0063><U00FC><U006D><U0259>";/
+ "<U015F><U0259><U006E><U0062><U0259>"
abday "<U0062><U0061><U007A>";/
- "<U0062><U0069><U0072>";/
- "<U0069><U006B><U0069>";/
- "<U00FC><U00E7><U00FC>";/
- "<U0064><U00F6><U0072>";/
- "<U0062><U0065><U015F>";/
- "<U0061><U006C><U0074>"
+ "<U0062><U0065><U0072>";/
+ "<U00E7><U0061><U0078>";/
+ "<U00E7><U0259><U0072>";/
+ "<U0063><U0061><U0078>";/
+ "<U0063><U00FC><U006D>";/
+ "<U015F><U006E><U0062>"
mon "<U0079><U0061><U006E><U0076><U0061><U0072>";/
"<U0066><U0065><U0076><U0072><U0061><U006C>";/
"<U006D><U0061><U0072><U0074>";/
diff --git a/localedata/locales/be_BY@latin b/localedata/locales/be_BY@latin
new file mode 100644
index 0000000000..6dbbfada8d
--- /dev/null
+++ b/localedata/locales/be_BY@latin
@@ -0,0 +1,147 @@
+comment_char %
+escape_char /
+%
+% Belarusian Language Latin-Script Locale for Belarus
+% Contact: Ihar Hrachyshka
+% Email: boox.svaboda2006@gmail.com
+% Language: be
+% Territory: BY
+% Revision: 1.0
+% Date: 2005-09-24
+% Application: general
+% Users: general
+% Repertoiremap: mnemonic.ds
+% Charset: UTF-8
+% Distribution and use is free, also
+% for commercial purposes.
+
+LC_IDENTIFICATION
+title "Belarusian Latin-Script locale for Belarus"
+source ""
+address ""
+contact ""
+email "bug-glibc-locales@gnu.org"
+tel ""
+fax ""
+language "Belarusian"
+territory "Belarus"
+revision "1.0"
+date "2005-09-15"
+%
+category "be_BY@latin:2000";LC_IDENTIFICATION
+category "be_BY@latin:2000";LC_CTYPE
+category "be_BY@latin:2000";LC_COLLATE
+category "be_BY@latin:2000";LC_TIME
+category "be_BY@latin:2000";LC_NUMERIC
+category "be_BY@latin:2000";LC_MONETARY
+category "be_BY@latin:2000";LC_MESSAGES
+category "be_BY@latin:2000";LC_PAPER
+category "be_BY@latin:2000";LC_NAME
+category "be_BY@latin:2000";LC_ADDRESS
+category "be_BY@latin:2000";LC_TELEPHONE
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "i18n"
+END LC_CTYPE
+
+LC_NUMERIC
+copy "be_BY"
+END LC_NUMERIC
+
+LC_MESSAGES
+yesexpr "<U005E><U005B><U0054><U0074><U0059><U0079><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U004E><U006E><U005D><U002E><U002A>"
+END LC_MESSAGES
+
+LC_TIME
+abday "<U004E><U0069><U0061>";/
+ "<U0050><U0061><U006E>";/
+ "<U0041><U016D><U0074>";/
+ "<U0053><U0069><U0065>";/
+ "<U010C><U0061><U0107>";/
+ "<U0050><U0069><U0061>";/
+ "<U0053><U0075><U0062>"
+day "<U004E><U0069><U0061><U0064><U007A><U0069><U0065><U006C><U0061>";/
+ "<U0050><U0061><U006E><U0069><U0061><U0064><U007A><U0069><U0065><U0142><U0061><U006B>";/
+ "<U0041><U016D><U0074><U006F><U0072><U0061><U006B>";/
+ "<U0053><U0069><U0065><U0072><U0061><U0064><U0061>";/
+ "<U010C><U0061><U0107><U0076><U0069><U0065><U0072>";/
+ "<U0050><U0069><U0061><U0074><U006E><U0069><U0063><U0061>";/
+ "<U0053><U0075><U0062><U006F><U0074><U0061>"
+abmon "<U0053><U0074><U0075>";/
+ "<U004C><U0075><U0074>";/
+ "<U0053><U0061><U006B>";/
+ "<U004B><U0072><U0061>";/
+ "<U0054><U0072><U0061>";/
+ "<U010C><U0065><U0072>";/
+ "<U004C><U0069><U0070>";/
+ "<U017D><U006E><U0069>";/
+ "<U0056><U0069><U0065>";/
+ "<U004B><U0061><U0073>";/
+ "<U004C><U0069><U0073>";/
+ "<U015A><U006E><U0069>"
+mon "<U0053><U0074><U0075><U0064><U007A><U0069><U0065><U0144>";/
+ "<U004C><U0075><U0074><U0079>";/
+ "<U0053><U0061><U006B><U0061><U0076><U0069><U006B>";/
+ "<U004B><U0072><U0061><U0073><U0061><U0076><U0069><U006B>";/
+ "<U0054><U0072><U0061><U0076><U0069><U0065><U0144>";/
+ "<U010C><U0065><U0072><U0076><U0069><U0065><U0144>";/
+ "<U004C><U0069><U0070><U0069><U0065><U0144>";/
+ "<U017D><U006E><U0069><U0076><U0069><U0065><U0144>";/
+ "<U0056><U0069><U0065><U0072><U0061><U0073><U0069><U0065><U0144>";/
+ "<U004B><U0061><U0073><U0074><U0072><U0079><U010D><U006E><U0069><U006B>";/
+ "<U004C><U0069><U0073><U0074><U0061><U0070><U0061><U0064>";/
+ "<U015A><U006E><U0069><U0065><U017E><U0061><U0144>"
+am_pm "";""
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U0025><U0054>"
+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
+t_fmt "<U0025><U0054>"
+t_fmt_ampm ""
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+LC_COLLATE
+copy "iso14651_t1"
+END LC_COLLATE
+
+LC_MONETARY
+int_curr_symbol "<U0042><U0059><U0052><U0020>"
+currency_symbol "<U0052><U0075><U0062>"
+mon_decimal_point "<U002E>"
+mon_thousands_sep "<U0020>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 0
+p_sep_by_space 1
+n_cs_precedes 0
+n_sep_by_space 1
+p_sign_posn 1
+n_sign_posn 1
+END LC_MONETARY
+
+LC_PAPER
+copy "be_BY"
+END LC_PAPER
+
+LC_NAME
+copy "be_BY"
+END LC_NAME
+
+LC_ADDRESS
+copy "be_BY"
+END LC_ADDRESS
+
+LC_TELEPHONE
+copy "be_BY"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+copy "be_BY"
+END LC_MEASUREMENT
diff --git a/localedata/locales/bn_BD b/localedata/locales/bn_BD
index 85641dc855..15d5920691 100644
--- a/localedata/locales/bn_BD
+++ b/localedata/locales/bn_BD
@@ -4,30 +4,30 @@ comment_char %
% This is the locale defination file for Bangladeshi Bengali
LC_IDENTIFICATION
-title "Bengali language locale for Bangladesh"
-source "Ankur Group, http://www.ankurbangla.org http://www.bengalinux.org"
-address "Dhaka, Bangladesh"
-contact "Taneem Ahmed, Jamil Ahmed"
-email "taneem@bengalinux.org, jamil@bengalinux.org"
-tel ""
-fax ""
-language "Bengali/Bangla"
-territory "Bangladesh"
-revision "0.2"
-date "2004-07-14"
-
-category "i18n:2001";LC_IDENTIFICATION
-category "i18n:2001";LC_COLLATE
-category "i18n:2001";LC_CTYPE
-category "i18n:2001";LC_MESSAGES
-category "i18n:2001";LC_MONETARY
-category "i18n:2001";LC_NUMERIC
-category "i18n:2001";LC_TIME
-category "i18n:2001";LC_PAPER
-category "i18n:2001";LC_MEASUREMENT
-category "i18n:2001";LC_TELEPHONE
-category "i18n:2001";LC_ADDRESS
-category "i18n:2001";LC_NAME
+title "Bengali/Bangla language locale for Bangladesh"
+source "Ankur Group, http://www.ankurbangla.org, http://www.bengalinux.org"
+address "Dhaka, Bangladesh"
+contact "Taneem Ahmed, Jamil Ahmed"
+email "taneem@bengalinux.org, jamil@bengalinux.org"
+tel ""
+fax ""
+language "Bengali/Bangla"
+territory "Bangladesh"
+revision "0.3"
+date "2005-01-18"
+
+category "bn_BD:2001";LC_IDENTIFICATION
+category "bn_BD:2001";LC_COLLATE
+category "bn_BD:2001";LC_CTYPE
+category "bn_BD:2001";LC_MESSAGES
+category "bn_BD:2001";LC_MONETARY
+category "bn_BD:2001";LC_NUMERIC
+category "bn_BD:2001";LC_TIME
+category "bn_BD:2001";LC_PAPER
+category "bn_BD:2001";LC_MEASUREMENT
+category "bn_BD:2001";LC_TELEPHONE
+category "bn_BD:2001";LC_ADDRESS
+category "bn_BD:2001";LC_NAME
END LC_IDENTIFICATION
@@ -41,13 +41,12 @@ copy "i18n"
END LC_CTYPE
LC_MONETARY
-%this is the rupee sign
+%this is the taka sign
currency_symbol "<U09F3>"
-%currency_symbol "<U099F><U09BE><U0995><U09BE>"
int_curr_symbol "<U0042><U0044><U0054><U0020>"
mon_decimal_point "<U002E>"
mon_thousands_sep "<U002C>"
-mon_grouping 3;3
+mon_grouping 3;2
positive_sign ""
negative_sign "<U002D>"
int_frac_digits 2
@@ -64,7 +63,7 @@ END LC_MONETARY
LC_NUMERIC
decimal_point "<U002E>"
thousands_sep "<U002C>"
-grouping 3;3
+grouping 3;2
END LC_NUMERIC
LC_TIME
@@ -72,7 +71,7 @@ abday "<U09B0><U09AC><U09BF>"; /
"<U09B8><U09CB><U09AE>";/
"<U09AE><U0999><U0997><U09B2>";/
"<U09AC><U09C1><U09A7>";/
- "<U09AC><U09C3><U09B9><U09B8><U09CD><U09AA><U09A4><U09BF>";/
+ "<U09AC><U09C3><U09B9><U0983>";/
"<U09B6><U09C1><U0995><U09CD><U09B0>";/
"<U09B6><U09A8><U09BF>"
@@ -84,34 +83,34 @@ day "<U09B0><U09AC><U09BF><U09AC><U09BE><U09B0>";/
"<U09B6><U09C1><U0995><U09CD><U09B0><U09AC><U09BE><U09B0>";/
"<U09B6><U09A8><U09BF><U09AC><U09BE><U09B0>"
-%jan feb mar apr may jun jul aug sep oct nov dec
-abmon "<U099C><U09BE><U09A8>";/
- "<U09AB><U09C7><U09AC>";/
- "<U09AE><U09BE><U09B0>";/
- "<U098F><U09AA><U09CD><U09B0>";/
+%janu febru march apri may jun jul aug septe octo nove dece
+abmon "<U099C><U09BE><U09A8><U09C1>";/
+ "<U09AB><U09C7><U09AC><U09CD><U09B0><U09C1>";/
+ "<U09AE><U09BE><U09B0><U09CD><U099A>";/
+ "<U098F><U09AA><U09CD><U09B0><U09BF>";/
"<U09AE><U09C7>";/
"<U099C><U09C1><U09A8>";/
"<U099C><U09C1><U09B2>";/
"<U0986><U0997>";/
- "<U09B8><U09C7><U09AA>";/
- "<U0985><U0995><U09CD><U099F><U09CB><U09AC><U09B0>";/
- "<U09A8><U09AD><U09C7><U09AE><U09CD><U09AC><U09B0>";/
- "<U09A1><U09BF><U09B8><U09C7><U09AE><U09CD><U09AC><U09B0>"
+ "<U09B8><U09C7><U09AA><U09CD><U099F><U09C7>";/
+ "<U0985><U0995><U09CD><U099F><U09CB>";/
+ "<U09A8><U09AD><U09C7>";/
+ "<U09A1><U09BF><U09B8><U09C7>"
-mon "<U099C><U09BE><U09A8><U09C1><U09DF><U09BE><U09B0><U09C0>";/
- "<U09AB><U09C7><U09AC><U09CD><U09B0><U09C1><U09DF><U09BE><U09B0><U09C0>";/
+mon "<U099C><U09BE><U09A8><U09C1><U09DF><U09BE><U09B0><U098F>";/
+ "<U09AB><U09C7><U09AC><U09CD><U09B0><U09C1><U09DF><U09BE><U09B0><U098F>";/
"<U09AE><U09BE><U09B0><U09CD><U099A>";/
"<U098F><U09AA><U09CD><U09B0><U09BF><U09B2>";/
"<U09AE><U09C7>";/
"<U099C><U09C1><U09A8>";/
"<U099C><U09C1><U09B2><U09BE><U0987>";/
"<U0986><U0997><U09B8><U09CD><U099F>";/
- "<U09B8><U09C7><U09AA><U09CD><U099F><U09C7><U09AE><U09CD><U09AC><U09BE><U09B0>";/
- "<U0985><U0995><U09CD><U099F><U09CB><U09AC><U09BE><U09B0>";/
- "<U09A8><U09AD><U09C7><U09AE><U09CD><U09AC><U09BE><U09B0>";/
- "<U09A1><U09BF><U09B8><U09C7><U09AE><U09CD><U09AC><U09BE><U09B0>"
+ "<U09B8><U09C7><U09AA><U09CD><U099F><U09C7><U09AE><U09CD><U09AC><U09B0>";/
+ "<U0985><U0995><U09CD><U099F><U09CB><U09AC><U09B0>";/
+ "<U09A8><U09AD><U09C7><U09AE><U09CD><U09AC><U09B0>";/
+ "<U09A1><U09BF><U09B8><U09C7><U09AE><U09CD><U09AC><U09B0>"
-am_pm "<U09b8><U0995><U09be><U09b2>";"<U09ac><U09bf><U0995><U09be><U09b2>"
+am_pm "<U09AA><U09C2><U09B0><U09CD><U09AC><U09BE><U09B9><U09CD><U09A3>";"<U0985><U09AA><U09B0><U09BE><U09B9><U09CD><U09A3>"
d_t_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0070><U0020><U0025><U005A>"
d_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059>"
t_fmt "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0020><U0025><U005A>"
@@ -122,7 +121,7 @@ LC_MESSAGES
yesexpr "<U005E><U005B><U09B9><U09CD><U09AF><U09BE><U0981><U005D>"
noexpr "<U005E><U005B><U09A8><U09BE><U005D>"
yesstr "<U09B9><U09CD><U09AF><U09BE><U0981>"
-nostr "<U09A8><U09BE>"
+nostr "<U09A8><U09BE>"
END LC_MESSAGES
% Metric Measurement system (ISO 1000)
@@ -144,31 +143,31 @@ int_prefix "<U0038><U0038>"
END LC_TELEPHONE
LC_NAME
-% [profession] Given_Name [middle_name] Family_Name
+% [profession] Given_Name [middle_name] Family_Name
name_fmt "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074><U0025><U006D><U0025><U0074><U0025><U0067>"
-name_gen ""
+name_gen ""
%jonab
name_mr "<U099c><U09a8><U09be><U09ac>"
-%jonaba
-name_mrs "<U099c><U09a8><U09be><U09ac><U09be>"
-name_ms "<U099c><U09a8><U09be><U09ac><U09be>"
-name_miss "<U099c><U09a8><U09be><U09ac><U09be>"
+%begom
+name_mrs "<U09AC><U09C7><U0997><U09AE>"
+name_ms "<U09AC><U09C7><U0997><U09AE>"
+name_miss "<U09AC><U09C7><U0997><U09AE>"
END LC_NAME
LC_ADDRESS
-postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0066><U0025><U004E><U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0068><U0020><U0025><U0073><U0020><U0025><U0065><U0020><U0025><U0072><U0025><U004E><U0025><U0054><U0020><U0025><U007A><U0025><U004E><U0025><U0063><U0025><U004E>"
-country_name "<U09AC><U09BE><U0982><U09B2><U09BE><U09A6><U09C7><U09B6>"
+postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0066><U0025><U004E><U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0068><U0020><U0025><U0073><U0020><U0025><U0065><U0020><U0025><U0072><U0025><U004E><U0025><U0054><U0020><U0025><U007A><U0025><U004E><U0025><U0063><U0025><U004E>"
+country_name "<U09AC><U09BE><U0982><U09B2><U09BE><U09A6><U09C7><U09B6>"
country_ab2 "<U0042><U0044>"
country_ab3 "<U0042><U0047><U0044>"
lang_ab "<U0062><U006E>"
%lang_ab3_term "ben"
lang_name "<U09ac><U09be><U0982><U09b2><U09be>"
% todo
-%country_post ""
+%country_post ""
country_num 050
-%country_car ""
-%country_isbn ""
-%lang_term ""
-%lang_lib ""
+%country_car ""
+%country_isbn ""
+%lang_term ""
+%lang_lib ""
END LC_ADDRESS
diff --git a/localedata/locales/bs_BA b/localedata/locales/bs_BA
index 92cb2f9ab8..80cc49ffda 100644
--- a/localedata/locales/bs_BA
+++ b/localedata/locales/bs_BA
@@ -7,13 +7,16 @@ escape_char /
% Email: tvujec@carnet.hr
% Language: bs
% Territory: BA
-% Revision: 0.3
-% Date: 2001-01-29
+% Revision: 0.4
+% Date: 2004-01-09
% Application: general
% Users: general
% Charset: ISO-8859-2
% Distribution and use is free, also
% for commercial purposes.
+%
+% Revisions:
+% 2004-01-09 pablo@mandrakesoft.com: fixed LC_COLLATE
LC_IDENTIFICATION
title "Bosnian language locale for Bosnia and Herzegowina"
@@ -25,8 +28,8 @@ tel ""
fax ""
language "Bosnian"
territory "Bosnia and Herzegowina"
-revision "0.3"
-date "2001-01-29"
+revision "0.4"
+date "2004-01-09"
category bs_BA:2000;LC_IDENTIFICATION
category bs_BA:2000;LC_CTYPE
@@ -108,7 +111,7 @@ reorder-after <U0044>
<D-z<> <d-z-sh>;<PCT>;<CAP-MIN>;IGNORE
<U0110> <d//>;<PCT>;<CAP>;IGNORE
-%reorder-after <U006C>
+reorder-after <U006C>
<l-j> <l-j-sh>;<PCT>;<MIN>;IGNORE
<l-J> <l-j-sh>;<PCT>;<MIN-CAP>;IGNORE
reorder-after <U004C>
@@ -234,8 +237,9 @@ country_num 070
END LC_ADDRESS
LC_TELEPHONE
-% FIXME
-tel_int_fmt "???"
+% FIXME (tel_int-fmt copied from en_DK)
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+<U006C>"
int_prefix "<U0033><U0038><U0037>"
int_select "<U0030><U0030>"
END LC_TELEPHONE
diff --git a/localedata/locales/el_GR b/localedata/locales/el_GR
index 95278657a3..d729d43298 100644
--- a/localedata/locales/el_GR
+++ b/localedata/locales/el_GR
@@ -112,14 +112,29 @@ mon "<U0399><U03B1><U03BD><U03BF><U03C5><U03AC><U03C1><U03B9><U03BF><U03C2>"
"<U039F><U03BA><U03C4><U03CE><U03B2><U03C1><U03B9><U03BF><U03C2>";/
"<U039D><U03BF><U03AD><U03BC><U03B2><U03C1><U03B9><U03BF><U03C2>";/
"<U0394><U03B5><U03BA><U03AD><U03BC><U03B2><U03C1><U03B9><U03BF><U03C2>"
-d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+% Greece uses 12h time: http://publications.eu.int/code/el/el-4100800el.htm
+% Appropriate date and time representation (%c)
+% "%a %d %b %Y %r %Z"
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0072><U0020><U0025><U005A>"
+%
+% Appropriate date representation (%x)
+% "%d/%m/%Y"
d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
-t_fmt "<U0025><U0054>"
-am_pm "";""
-t_fmt_ampm ""
-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-<U0025><U005A><U0020><U0025><U0059>"
+%
+% Appropriate time representation (%X)
+% "%r"
+t_fmt "<U0025><U0072>"
+%
+% Strings for AM/PM
+%
+am_pm "<U03c0><U03bc>";"<U03bc><U03bc>"
+%
+% Appropriate AM/PM time representation (%r)
+% "%r"
+t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0070>"
+%
+% Appropriate date representation (date(1)) "%a %d %b %Y %r %Z"
+date_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0072><U0020><U0025><U005A>"
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/en_US b/localedata/locales/en_US
index 7aaa09953a..b2ad72d5ce 100644
--- a/localedata/locales/en_US
+++ b/localedata/locales/en_US
@@ -151,7 +151,7 @@ LC_ADDRESS
postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0066><U0025><U004E>/
<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0068>/
<U0020><U0025><U0073><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-<U004E><U0025><U0025><U0054><U0020><U0025><U007A><U0025>/
+<U004E><U0025><U0054><U002C><U0020><U0025><U0053><U0020><U0025><U007A><U0025>/
<U004E><U0025><U0063><U0025><U004E>"
country_name "<U0055><U0053><U0041>"
country_post "<U0055><U0053><U0041>"
diff --git a/localedata/locales/es_US b/localedata/locales/es_US
index 0b12c6e203..85e9d50ae8 100644
--- a/localedata/locales/es_US
+++ b/localedata/locales/es_US
@@ -2220,12 +2220,16 @@ name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
END LC_NAME
LC_ADDRESS
-postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
-<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0066><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0068>/
+<U0020><U0025><U0073><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U0054><U002C><U0020><U0025><U0053><U0020><U0025><U007A><U0025>/
<U004E><U0025><U0063><U0025><U004E>"
+country_name "<U0055><U0053><U0041>"
+country_post "<U0055><U0053><U0041>"
country_ab2 "<U0055><U0053>"
country_ab3 "<U0055><U0053><U0041>"
country_num 840
+country_car "<U0055><U0053><U0041>"
+country_isbn 0
END LC_ADDRESS
diff --git a/localedata/locales/hsb_DE b/localedata/locales/hsb_DE
new file mode 100644
index 0000000000..aba925475c
--- /dev/null
+++ b/localedata/locales/hsb_DE
@@ -0,0 +1,2216 @@
+comment_char %
+escape_char /
+%
+% Upper Sorbian Language Locale for Germany
+% by Andrzej Krzysztofowicz <ankry at mif pg gda pl>
+% Source: information from Michael Wolf <milupo at sorbzilla de>
+%
+% Distribution and use is free, also for commercial purposes.
+
+LC_IDENTIFICATION
+title "Upper Sorbian locale for Germany"
+source "Information from Michael Wolf"
+address ""
+contact "Andrzej Krzysztofowicz"
+email "ankry@mif.pg.gda.pl"
+tel ""
+fax ""
+language "Upper Sorbian"
+territory "Germany"
+revision "0.1"
+date "2004-09-09"
+%
+category "i18n:1997";LC_IDENTIFICATION
+category "i18n:1997";LC_CTYPE
+category "i18n:1997";LC_COLLATE
+category "i18n:1997";LC_TIME
+category "i18n:1997";LC_NUMERIC
+category "i18n:1997";LC_MONETARY
+category "i18n:1997";LC_MESSAGES
+category "i18n:1997";LC_PAPER
+category "i18n:1997";LC_NAME
+category "i18n:1997";LC_ADDRESS
+category "i18n:1997";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_COLLATE
+collating-element <D-Z'> from "<U0044><U0179>"
+collating-element <D-z'> from "<U0044><U017A>"
+collating-element <d-Z'> from "<U0064><U0179>"
+collating-element <d-z'> from "<U0064><U017A>"
+collating-element <C-H> from "<U0043><U0048>"
+collating-element <C-h> from "<U0043><U0068>"
+collating-element <c-H> from "<U0063><U0048>"
+collating-element <c-h> from "<U0063><U0068>"
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward/
+ ;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<SMALL>
+<SMALL-CAPITAL>
+<CAPITAL-SMALL>
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U010C> <U010C>;<NONE>;<CAPITAL>;IGNORE
+<U010D> <U010C>;<NONE>;<SMALL>;IGNORE
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<D-Z'> <D-Z'>;<NONE>;<CAPITAL>;IGNORE
+<D-z'> <D-Z'>;<NONE>;<CAPITAL-SMALL>;IGNORE
+<d-Z'> <D-Z'>;<NONE>;<SMALL-CAPITAL>;IGNORE
+<d-z'> <D-Z'>;<NONE>;<SMALL>;IGNORE
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U011A> <U011A>;<NONE>;<CAPITAL>;IGNORE
+<U011B> <U011A>;<NONE>;<SMALL>;IGNORE
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<C-H> <C-H>;<NONE>;<CAPITAL>;IGNORE
+<C-h> <C-H>;<NONE>;<CAPITAL-SMALL>;IGNORE
+<c-H> <C-H>;<NONE>;<SMALL-CAPITAL>;IGNORE
+<c-h> <C-H>;<NONE>;<SMALL>;IGNORE
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U0141> <U0141>;<NONE>;<CAPITAL>;IGNORE
+<U0142> <U0141>;<NONE>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U0143> <U0143>;<NONE>;<CAPITAL>;IGNORE
+<U0144> <U0143>;<NONE>;<SMALL>;IGNORE
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U00D3>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U00D3>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0158> <U0158>;<NONE>;<CAPITAL>;IGNORE
+<U0159> <U0158>;<NONE>;<SMALL>;IGNORE
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U0160> <U0160>;<NONE>;<CAPITAL>;IGNORE
+<U0161> <U0160>;<NONE>;<SMALL>;IGNORE
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U0106> <U0106>;<NONE>;<CAPITAL>;IGNORE
+<U0107> <U0106>;<NONE>;<SMALL>;IGNORE
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U017D> <U017D>;<NONE>;<CAPITAL>;IGNORE
+<U017E> <U017D>;<NONE>;<SMALL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
+END LC_COLLATE
+
+LC_CTYPE
+copy "i18n"
+END LC_CTYPE
+
+LC_MESSAGES
+yesexpr "<U005E><U005B><U0068><U0048><U0079><U0059><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+yesstr "<U0068><U0061><U006A>"
+nostr "<U006E><U011B>"
+END LC_MESSAGES
+
+LC_MONETARY
+copy "de_DE"
+END LC_MONETARY
+
+LC_NUMERIC
+copy "de_DE"
+END LC_NUMERIC
+
+LC_TIME
+abday "<U004E><U006A>";"<U0050><U00F3>";/
+ "<U0057><U0075>";"<U0053><U0072>";/
+ "<U0160><U0074>";"<U0050><U006A>";/
+ "<U0053><U006F>"
+day "<U004E><U006A><U0065><U0064><U017A><U0065><U006C><U0061>";/
+ "<U0050><U00F3><U006E><U0064><U017A><U0065><U006C><U0061>";/
+ "<U0057><U0075><U0074><U006F><U0072><U0061>";/
+ "<U0053><U0072><U006A><U0065><U0064><U0061>";/
+ "<U0160><U0074><U0076><U00F3><U0072><U0074><U006B>";/
+ "<U0050><U006A><U0061><U0074><U006B>";/
+ "<U0053><U006F><U0062><U006F><U0074><U0061>"
+abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
+ "<U004D><U011B><U0072>";"<U0041><U0070><U0072>";/
+ "<U004D><U0065><U006A>";"<U004A><U0075><U006E>";/
+ "<U004A><U0075><U006C>";"<U0041><U0077><U0067>";/
+ "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
+ "<U004E><U006F><U0077>";"<U0044><U0065><U0063>"
+mon "<U004A><U0061><U006E><U0075><U0061><U0072>";/
+ "<U0046><U0065><U0062><U0072><U0075><U0061><U0072>";/
+ "<U004D><U011B><U0072><U0063>";/
+ "<U0041><U0070><U0072><U0079><U006C>";/
+ "<U004D><U0065><U006A><U0061>";/
+ "<U004A><U0075><U006E><U0069><U006A>";/
+ "<U004A><U0075><U006C><U0069><U006A>";/
+ "<U0041><U0077><U0067><U0075><U0073><U0074>";/
+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
+ "<U004F><U006B><U0074><U006F><U0062><U0065><U0072>";/
+ "<U004E><U006F><U0077><U0065><U006D><U0062><U0065><U0072>";/
+ "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
+t_fmt "<U0025><U0054>"
+am_pm "";""
+t_fmt_ampm ""
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+LC_PAPER
+copy "de_DE"
+END LC_PAPER
+
+LC_TELEPHONE
+copy "de_DE"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+copy "de_DE"
+END LC_MEASUREMENT
+
+LC_NAME
+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+name_miss "<U006B><U006E><U006A><U0065><U017E><U006E><U0061>"
+name_mr "<U006B><U006E><U006A><U0065><U007A>"
+name_mrs "<U006B><U006E><U006A><U0065><U006E><U0069>"
+%name_ms ""
+END LC_NAME
+
+LC_ADDRESS
+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+country_name "<U004E><U011B><U006D><U0073><U006B><U0061>"
+country_post "<U0044>"
+country_ab2 "<U0044><U0045>"
+country_ab3 "<U0044><U0045><U0055>"
+country_num 276
+country_car "<U0044>"
+country_isbn 3
+lang_name "<U0048><U006F><U0072><U006E><U006A><U006F><U0073><U0065>/
+<U0072><U0062><U0161><U0107><U0069><U006E><U0061>"
+lang_ab ""
+lang_term "<U0068><U0073><U0062>"
+lang_lib "<U0068><U0073><U0062>"
+END LC_ADDRESS
diff --git a/localedata/locales/km_KH b/localedata/locales/km_KH
new file mode 100644
index 0000000000..07052af65f
--- /dev/null
+++ b/localedata/locales/km_KH
@@ -0,0 +1,1904 @@
+escape_char /
+comment_char %
+
+%
+% Khmer Language Locale for Cambodia
+%
+% Name: km_KH
+% Author: Jens Herden
+% Contact:
+% E-mail: jens@khmeros.info
+% Language: Khmer
+% Territory: Cambodia
+% Charset: UTF-8
+% Revision: 1.0
+% Date: 2005-03-15
+%
+
+%
+% Copyright (C) 2005 Open Forum of Cambodia (www.forum.org.kh)
+
+%
+% Permission is hereby granted, free of charge, to any person obtaining
+% a copy of this software and associated documentation files (the "Software"),
+% to deal in the Software without restriction, including without limitation
+% the rights to use, copy, modify, merge, publish, distribute, sublicense,
+% and/or sell copies of the Software, and to permit persons to whom the
+% Software is furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included
+% in all copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+% OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+% ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+% OTHER DEALINGS IN THE SOFTWARE.
+%
+%
+
+LC_IDENTIFICATION
+title "Khmer locale for Cambodia"
+source ""
+address ""
+contact "Jens Herden at: jens@khmeros.info"
+email "bug-glibc-locales@gnu.org"
+tel ""
+fax ""
+language "Khmer"
+territory "Cambodia"
+revision "1.0"
+date "2005-3-15"
+%
+category "km_KH:2000";LC_IDENTIFICATION
+category "km_KH:2000";LC_CTYPE
+category "km_KH:2000";LC_COLLATE
+category "km_KH:2000";LC_TIME
+category "km_KH:2000";LC_NUMERIC
+category "km_KH:2000";LC_MONETARY
+category "km_KH:2000";LC_MESSAGES
+category "km_KH:2000";LC_PAPER
+category "km_KH:2000";LC_NAME
+category "km_KH:2000";LC_ADDRESS
+category "km_KH:2000";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_CTYPE
+%copy "i18n"
+%translit_start
+%include "translit_combining";""
+%translit_end
+
+
+upper <U0041>;/
+ <U0042>;/
+ <U0043>;/
+ <U0044>;/
+ <U0045>;/
+ <U0046>;/
+ <U0047>;/
+ <U0048>;/
+ <U0049>;/
+ <U004A>;/
+ <U004B>;/
+ <U004C>;/
+ <U004D>;/
+ <U004E>;/
+ <U004F>;/
+ <U0050>;/
+ <U0051>;/
+ <U0052>;/
+ <U0053>;/
+ <U0054>;/
+ <U0055>;/
+ <U0056>;/
+ <U0057>;/
+ <U0058>;/
+ <U0059>;/
+ <U005A>
+
+lower <U0061>;/
+ <U0062>;/
+ <U0063>;/
+ <U0064>;/
+ <U0065>;/
+ <U0066>;/
+ <U0067>;/
+ <U0068>;/
+ <U0069>;/
+ <U006A>;/
+ <U006B>;/
+ <U006C>;/
+ <U006D>;/
+ <U006E>;/
+ <U006F>;/
+ <U0070>;/
+ <U0071>;/
+ <U0072>;/
+ <U0073>;/
+ <U0074>;/
+ <U0075>;/
+ <U0076>;/
+ <U0077>;/
+ <U0078>;/
+ <U0079>;/
+ <U007A>
+
+alpha <U0041>;/
+ <U0042>;/
+ <U0043>;/
+ <U0044>;/
+ <U0045>;/
+ <U0046>;/
+ <U0047>;/
+ <U0048>;/
+ <U0049>;/
+ <U004A>;/
+ <U004B>;/
+ <U004C>;/
+ <U004D>;/
+ <U004E>;/
+ <U004F>;/
+ <U0050>;/
+ <U0051>;/
+ <U0052>;/
+ <U0053>;/
+ <U0054>;/
+ <U0055>;/
+ <U0056>;/
+ <U0057>;/
+ <U0058>;/
+ <U0059>;/
+ <U005A>;/
+ <U0061>;/
+ <U0062>;/
+ <U0063>;/
+ <U0064>;/
+ <U0065>;/
+ <U0066>;/
+ <U0067>;/
+ <U0068>;/
+ <U0069>;/
+ <U006A>;/
+ <U006B>;/
+ <U006C>;/
+ <U006D>;/
+ <U006E>;/
+ <U006F>;/
+ <U0070>;/
+ <U0071>;/
+ <U0072>;/
+ <U0073>;/
+ <U0074>;/
+ <U0075>;/
+ <U0076>;/
+ <U0077>;/
+ <U0078>;/
+ <U0079>;/
+ <U007A>;/
+ <U1780>;/
+ <U1781>;/
+ <U1782>;/
+ <U1783>;/
+ <U1784>;/
+ <U1785>;/
+ <U1786>;/
+ <U1787>;/
+ <U1788>;/
+ <U1789>;/
+ <U178A>;/
+ <U178B>;/
+ <U178C>;/
+ <U178D>;/
+ <U178E>;/
+ <U178F>;/
+ <U1790>;/
+ <U1791>;/
+ <U1792>;/
+ <U1793>;/
+ <U1794>;/
+ <U1795>;/
+ <U1796>;/
+ <U1797>;/
+ <U1798>;/
+ <U1799>;/
+ <U179A>;/
+ <U179B>;/
+ <U179C>;/
+ <U179D>;/
+ <U179E>;/
+ <U179F>;/
+ <U17A0>;/
+ <U17A1>;/
+ <U17A2>;/
+ <U17A3>;/
+ <U17A4>;/
+ <U17A5>;/
+ <U17A6>;/
+ <U17A7>;/
+ <U17A8>;/
+ <U17A9>;/
+ <U17AA>;/
+ <U17AB>;/
+ <U17AC>;/
+ <U17AD>;/
+ <U17AE>;/
+ <U17AF>;/
+ <U17B0>;/
+ <U17B1>;/
+ <U17B2>;/
+ <U17B3>;/
+ <U17B6>;/
+ <U17B7>;/
+ <U17B8>;/
+ <U17B9>;/
+ <U17BA>;/
+ <U17BB>;/
+ <U17BC>;/
+ <U17BD>;/
+ <U17BE>;/
+ <U17BF>;/
+ <U17C0>;/
+ <U17C1>;/
+ <U17C2>;/
+ <U17C3>;/
+ <U17C4>;/
+ <U17C5>;/
+ <U17C6>;/
+ <U17C7>;/
+ <U17C8>;/
+ <U17D7>;/
+ <U17DC>
+
+space <U0009>;/
+ <U000A>;/
+ <U000B>;/
+ <U000C>;/
+ <U000D>;/
+ <U0020>
+
+cntrl <U0000>;/
+ <U0001>;/
+ <U0002>;/
+ <U0003>;/
+ <U0004>;/
+ <U0005>;/
+ <U0006>;/
+ <U0007>;/
+ <U0008>;/
+ <U0009>;/
+ <U000A>;/
+ <U000B>;/
+ <U000C>;/
+ <U000D>;/
+ <U000E>;/
+ <U000F>;/
+ <U0010>;/
+ <U0011>;/
+ <U0012>;/
+ <U0013>;/
+ <U0014>;/
+ <U0015>;/
+ <U0016>;/
+ <U0017>;/
+ <U0018>;/
+ <U0019>;/
+ <U001A>;/
+ <U001B>;/
+ <U001C>;/
+ <U001D>;/
+ <U001E>;/
+ <U001F>;/
+ <U007F>
+
+graph <U0021>;/
+ <U0022>;/
+ <U0023>;/
+ <U0024>;/
+ <U0025>;/
+ <U0026>;/
+ <U0027>;/
+ <U0028>;/
+ <U0029>;/
+ <U002A>;/
+ <U002B>;/
+ <U002C>;/
+ <U002D>;/
+ <U002E>;/
+ <U002F>;/
+ <U0030>;/
+ <U0031>;/
+ <U0032>;/
+ <U0033>;/
+ <U0034>;/
+ <U0035>;/
+ <U0036>;/
+ <U0037>;/
+ <U0038>;/
+ <U0039>;/
+ <U003A>;/
+ <U003B>;/
+ <U003C>;/
+ <U003D>;/
+ <U003E>;/
+ <U003F>;/
+ <U0040>;/
+ <U0041>;/
+ <U0042>;/
+ <U0043>;/
+ <U0044>;/
+ <U0045>;/
+ <U0046>;/
+ <U0047>;/
+ <U0048>;/
+ <U0049>;/
+ <U004A>;/
+ <U004B>;/
+ <U004C>;/
+ <U004D>;/
+ <U004E>;/
+ <U004F>;/
+ <U0050>;/
+ <U0051>;/
+ <U0052>;/
+ <U0053>;/
+ <U0054>;/
+ <U0055>;/
+ <U0056>;/
+ <U0057>;/
+ <U0058>;/
+ <U0059>;/
+ <U005A>;/
+ <U005B>;/
+ <U005C>;/
+ <U005D>;/
+ <U005E>;/
+ <U005F>;/
+ <U0060>;/
+ <U0061>;/
+ <U0062>;/
+ <U0063>;/
+ <U0064>;/
+ <U0065>;/
+ <U0066>;/
+ <U0067>;/
+ <U0068>;/
+ <U0069>;/
+ <U006A>;/
+ <U006B>;/
+ <U006C>;/
+ <U006D>;/
+ <U006E>;/
+ <U006F>;/
+ <U0070>;/
+ <U0071>;/
+ <U0072>;/
+ <U0073>;/
+ <U0074>;/
+ <U0075>;/
+ <U0076>;/
+ <U0077>;/
+ <U0078>;/
+ <U0079>;/
+ <U007A>;/
+ <U007B>;/
+ <U007C>;/
+ <U007D>;/
+ <U007E>;/
+ <U1780>;/
+ <U1781>;/
+ <U1782>;/
+ <U1783>;/
+ <U1784>;/
+ <U1785>;/
+ <U1786>;/
+ <U1787>;/
+ <U1788>;/
+ <U1789>;/
+ <U178A>;/
+ <U178B>;/
+ <U178C>;/
+ <U178D>;/
+ <U178E>;/
+ <U178F>;/
+ <U1790>;/
+ <U1791>;/
+ <U1792>;/
+ <U1793>;/
+ <U1794>;/
+ <U1795>;/
+ <U1796>;/
+ <U1797>;/
+ <U1798>;/
+ <U1799>;/
+ <U179A>;/
+ <U179B>;/
+ <U179C>;/
+ <U179D>;/
+ <U179E>;/
+ <U179F>;/
+ <U17A0>;/
+ <U17A1>;/
+ <U17A2>;/
+ <U17A3>;/
+ <U17A4>;/
+ <U17A5>;/
+ <U17A6>;/
+ <U17A7>;/
+ <U17A8>;/
+ <U17A9>;/
+ <U17AA>;/
+ <U17AB>;/
+ <U17AC>;/
+ <U17AD>;/
+ <U17AE>;/
+ <U17AF>;/
+ <U17B0>;/
+ <U17B1>;/
+ <U17B2>;/
+ <U17B3>;/
+ <U17B6>;/
+ <U17B7>;/
+ <U17B8>;/
+ <U17B9>;/
+ <U17BA>;/
+ <U17BB>;/
+ <U17BC>;/
+ <U17BD>;/
+ <U17BE>;/
+ <U17BF>;/
+ <U17C0>;/
+ <U17C1>;/
+ <U17C2>;/
+ <U17C3>;/
+ <U17C4>;/
+ <U17C5>;/
+ <U17C6>;/
+ <U17C7>;/
+ <U17C8>;/
+ <U17C9>;/
+ <U17CA>;/
+ <U17CB>;/
+ <U17CC>;/
+ <U17CD>;/
+ <U17CE>;/
+ <U17CF>;/
+ <U17D0>;/
+ <U17D1>;/
+ <U17D2>;/
+ <U17D3>;/
+ <U17D4>;/
+ <U17D5>;/
+ <U17D6>;/
+ <U17D7>;/
+ <U17D8>;/
+ <U17D9>;/
+ <U17DA>;/
+ <U17DB>;/
+ <U17DC>;/
+ <U17DD>;/
+ <U17E0>;/
+ <U17E1>;/
+ <U17E2>;/
+ <U17E3>;/
+ <U17E4>;/
+ <U17E5>;/
+ <U17E6>;/
+ <U17E7>;/
+ <U17E8>;/
+ <U17E9>;/
+ <U17F0>;/
+ <U17F1>;/
+ <U17F2>;/
+ <U17F3>;/
+ <U17F4>;/
+ <U17F5>;/
+ <U17F6>;/
+ <U17F7>;/
+ <U17F8>;/
+ <U17F9>;/
+ <U19E0>;/
+ <U19E1>;/
+ <U19E2>;/
+ <U19E3>;/
+ <U19E4>;/
+ <U19E5>;/
+ <U19E6>;/
+ <U19E7>;/
+ <U19E8>;/
+ <U19E9>;/
+ <U19EA>;/
+ <U19EB>;/
+ <U19EC>;/
+ <U19ED>;/
+ <U19EE>;/
+ <U19EF>;/
+ <U19F0>;/
+ <U19F1>;/
+ <U19F2>;/
+ <U19F3>;/
+ <U19F4>;/
+ <U19F5>;/
+ <U19F6>;/
+ <U19F7>;/
+ <U19F8>;/
+ <U19F9>;/
+ <U19FA>;/
+ <U19FB>;/
+ <U19FC>;/
+ <U19FD>;/
+ <U19FE>;/
+ <U19FF>
+
+print <U0020>;/
+ <U0021>;/
+ <U0022>;/
+ <U0023>;/
+ <U0024>;/
+ <U0025>;/
+ <U0026>;/
+ <U0027>;/
+ <U0028>;/
+ <U0029>;/
+ <U002A>;/
+ <U002B>;/
+ <U002C>;/
+ <U002D>;/
+ <U002E>;/
+ <U002F>;/
+ <U0030>;/
+ <U0031>;/
+ <U0032>;/
+ <U0033>;/
+ <U0034>;/
+ <U0035>;/
+ <U0036>;/
+ <U0037>;/
+ <U0038>;/
+ <U0039>;/
+ <U003A>;/
+ <U003B>;/
+ <U003C>;/
+ <U003D>;/
+ <U003E>;/
+ <U003F>;/
+ <U0040>;/
+ <U0041>;/
+ <U0042>;/
+ <U0043>;/
+ <U0044>;/
+ <U0045>;/
+ <U0046>;/
+ <U0047>;/
+ <U0048>;/
+ <U0049>;/
+ <U004A>;/
+ <U004B>;/
+ <U004C>;/
+ <U004D>;/
+ <U004E>;/
+ <U004F>;/
+ <U0050>;/
+ <U0051>;/
+ <U0052>;/
+ <U0053>;/
+ <U0054>;/
+ <U0055>;/
+ <U0056>;/
+ <U0057>;/
+ <U0058>;/
+ <U0059>;/
+ <U005A>;/
+ <U005B>;/
+ <U005C>;/
+ <U005D>;/
+ <U005E>;/
+ <U005F>;/
+ <U0060>;/
+ <U0061>;/
+ <U0062>;/
+ <U0063>;/
+ <U0064>;/
+ <U0065>;/
+ <U0066>;/
+ <U0067>;/
+ <U0068>;/
+ <U0069>;/
+ <U006A>;/
+ <U006B>;/
+ <U006C>;/
+ <U006D>;/
+ <U006E>;/
+ <U006F>;/
+ <U0070>;/
+ <U0071>;/
+ <U0072>;/
+ <U0073>;/
+ <U0074>;/
+ <U0075>;/
+ <U0076>;/
+ <U0077>;/
+ <U0078>;/
+ <U0079>;/
+ <U007A>;/
+ <U007B>;/
+ <U007C>;/
+ <U007D>;/
+ <U007E>;/
+ <U1780>;/
+ <U1781>;/
+ <U1782>;/
+ <U1783>;/
+ <U1784>;/
+ <U1785>;/
+ <U1786>;/
+ <U1787>;/
+ <U1788>;/
+ <U1789>;/
+ <U178A>;/
+ <U178B>;/
+ <U178C>;/
+ <U178D>;/
+ <U178E>;/
+ <U178F>;/
+ <U1790>;/
+ <U1791>;/
+ <U1792>;/
+ <U1793>;/
+ <U1794>;/
+ <U1795>;/
+ <U1796>;/
+ <U1797>;/
+ <U1798>;/
+ <U1799>;/
+ <U179A>;/
+ <U179B>;/
+ <U179C>;/
+ <U179D>;/
+ <U179E>;/
+ <U179F>;/
+ <U17A0>;/
+ <U17A1>;/
+ <U17A2>;/
+ <U17A3>;/
+ <U17A4>;/
+ <U17A5>;/
+ <U17A6>;/
+ <U17A7>;/
+ <U17A8>;/
+ <U17A9>;/
+ <U17AA>;/
+ <U17AB>;/
+ <U17AC>;/
+ <U17AD>;/
+ <U17AE>;/
+ <U17AF>;/
+ <U17B0>;/
+ <U17B1>;/
+ <U17B2>;/
+ <U17B3>;/
+ <U17B6>;/
+ <U17B7>;/
+ <U17B8>;/
+ <U17B9>;/
+ <U17BA>;/
+ <U17BB>;/
+ <U17BC>;/
+ <U17BD>;/
+ <U17BE>;/
+ <U17BF>;/
+ <U17C0>;/
+ <U17C1>;/
+ <U17C2>;/
+ <U17C3>;/
+ <U17C4>;/
+ <U17C5>;/
+ <U17C6>;/
+ <U17C7>;/
+ <U17C8>;/
+ <U17C9>;/
+ <U17CA>;/
+ <U17CB>;/
+ <U17CC>;/
+ <U17CD>;/
+ <U17CE>;/
+ <U17CF>;/
+ <U17D0>;/
+ <U17D1>;/
+ <U17D2>;/
+ <U17D3>;/
+ <U17D4>;/
+ <U17D5>;/
+ <U17D6>;/
+ <U17D7>;/
+ <U17D8>;/
+ <U17D9>;/
+ <U17DA>;/
+ <U17DB>;/
+ <U17DC>;/
+ <U17DD>;/
+ <U17E0>;/
+ <U17E1>;/
+ <U17E2>;/
+ <U17E3>;/
+ <U17E4>;/
+ <U17E5>;/
+ <U17E6>;/
+ <U17E7>;/
+ <U17E8>;/
+ <U17E9>;/
+ <U17F0>;/
+ <U17F1>;/
+ <U17F2>;/
+ <U17F3>;/
+ <U17F4>;/
+ <U17F5>;/
+ <U17F6>;/
+ <U17F7>;/
+ <U17F8>;/
+ <U17F9>;/
+ <U19E0>;/
+ <U19E1>;/
+ <U19E2>;/
+ <U19E3>;/
+ <U19E4>;/
+ <U19E5>;/
+ <U19E6>;/
+ <U19E7>;/
+ <U19E8>;/
+ <U19E9>;/
+ <U19EA>;/
+ <U19EB>;/
+ <U19EC>;/
+ <U19ED>;/
+ <U19EE>;/
+ <U19EF>;/
+ <U19F0>;/
+ <U19F1>;/
+ <U19F2>;/
+ <U19F3>;/
+ <U19F4>;/
+ <U19F5>;/
+ <U19F6>;/
+ <U19F7>;/
+ <U19F8>;/
+ <U19F9>;/
+ <U19FA>;/
+ <U19FB>;/
+ <U19FC>;/
+ <U19FD>;/
+ <U19FE>;/
+ <U19FF>
+
+punct <U0021>;/
+ <U0022>;/
+ <U0023>;/
+ <U0025>;/
+ <U0026>;/
+ <U0027>;/
+ <U0028>;/
+ <U0029>;/
+ <U002A>;/
+ <U002C>;/
+ <U002D>;/
+ <U002E>;/
+ <U002F>;/
+ <U003A>;/
+ <U003B>;/
+ <U003F>;/
+ <U0040>;/
+ <U005B>;/
+ <U005C>;/
+ <U005D>;/
+ <U005F>;/
+ <U007B>;/
+ <U007D>;/
+ <U17D4>;/
+ <U17D5>;/
+ <U17D6>;/
+ <U17D8>;/
+ <U17D9>;/
+ <U17DA>
+
+digit <U0030>;/
+ <U0031>;/
+ <U0032>;/
+ <U0033>;/
+ <U0034>;/
+ <U0035>;/
+ <U0036>;/
+ <U0037>;/
+ <U0038>;/
+ <U0039>
+
+xdigit <U0030>;/
+ <U0031>;/
+ <U0032>;/
+ <U0033>;/
+ <U0034>;/
+ <U0035>;/
+ <U0036>;/
+ <U0037>;/
+ <U0038>;/
+ <U0039>;/
+ <U0041>;/
+ <U0042>;/
+ <U0043>;/
+ <U0044>;/
+ <U0045>;/
+ <U0046>;/
+ <U0061>;/
+ <U0062>;/
+ <U0063>;/
+ <U0064>;/
+ <U0065>;/
+ <U0066>
+
+blank <U0009>;/
+ <U0020>
+
+toupper (<U0061>,<U0041>);/
+ (<U0062>,<U0042>);/
+ (<U0063>,<U0043>);/
+ (<U0064>,<U0044>);/
+ (<U0065>,<U0045>);/
+ (<U0066>,<U0046>);/
+ (<U0067>,<U0047>);/
+ (<U0068>,<U0048>);/
+ (<U0069>,<U0049>);/
+ (<U006A>,<U004A>);/
+ (<U006B>,<U004B>);/
+ (<U006C>,<U004C>);/
+ (<U006D>,<U004D>);/
+ (<U006E>,<U004E>);/
+ (<U006F>,<U004F>);/
+ (<U0070>,<U0050>);/
+ (<U0071>,<U0051>);/
+ (<U0072>,<U0052>);/
+ (<U0073>,<U0053>);/
+ (<U0074>,<U0054>);/
+ (<U0075>,<U0055>);/
+ (<U0076>,<U0056>);/
+ (<U0077>,<U0057>);/
+ (<U0078>,<U0058>);/
+ (<U0079>,<U0059>);/
+ (<U007A>,<U005A>)
+
+tolower (<U0041>,<U0061>);/
+ (<U0042>,<U0062>);/
+ (<U0043>,<U0063>);/
+ (<U0044>,<U0064>);/
+ (<U0045>,<U0065>);/
+ (<U0046>,<U0066>);/
+ (<U0047>,<U0067>);/
+ (<U0048>,<U0068>);/
+ (<U0049>,<U0069>);/
+ (<U004A>,<U006A>);/
+ (<U004B>,<U006B>);/
+ (<U004C>,<U006C>);/
+ (<U004D>,<U006D>);/
+ (<U004E>,<U006E>);/
+ (<U004F>,<U006F>);/
+ (<U0050>,<U0070>);/
+ (<U0051>,<U0071>);/
+ (<U0052>,<U0072>);/
+ (<U0053>,<U0073>);/
+ (<U0054>,<U0074>);/
+ (<U0055>,<U0075>);/
+ (<U0056>,<U0076>);/
+ (<U0057>,<U0077>);/
+ (<U0058>,<U0078>);/
+ (<U0059>,<U0079>);/
+ (<U005A>,<U007A>)
+
+END LC_CTYPE
+
+LC_COLLATE
+
+%
+
+collating-element <KHMER_LETTER_KA-KHMER_SIGN_ROBAT> from "<U1780><U17CC>"
+collating-element <KHMER_LETTER_KHA-KHMER_SIGN_ROBAT> from "<U1781><U17CC>"
+collating-element <KHMER_LETTER_KO-KHMER_SIGN_ROBAT> from "<U1782><U17CC>"
+collating-element <KHMER_LETTER_KHO-KHMER_SIGN_ROBAT> from "<U1783><U17CC>"
+collating-element <KHMER_LETTER_NGO-KHMER_SIGN_ROBAT> from "<U1784><U17CC>"
+collating-element <KHMER_LETTER_CA-KHMER_SIGN_ROBAT> from "<U1785><U17CC>"
+collating-element <KHMER_LETTER_CHA-KHMER_SIGN_ROBAT> from "<U1786><U17CC>"
+collating-element <KHMER_LETTER_CO-KHMER_SIGN_ROBAT> from "<U1787><U17CC>"
+collating-element <KHMER_LETTER_CHO-KHMER_SIGN_ROBAT> from "<U1788><U17CC>"
+collating-element <KHMER_LETTER_NYO-KHMER_SIGN_ROBAT> from "<U1789><U17CC>"
+collating-element <KHMER_LETTER_DA-KHMER_SIGN_ROBAT> from "<U178A><U17CC>"
+collating-element <KHMER_LETTER_TTHA-KHMER_SIGN_ROBAT> from "<U178B><U17CC>"
+collating-element <KHMER_LETTER_DO-KHMER_SIGN_ROBAT> from "<U178C><U17CC>"
+collating-element <KHMER_LETTER_TTHO-KHMER_SIGN_ROBAT> from "<U178D><U17CC>"
+collating-element <KHMER_LETTER_NNO-KHMER_SIGN_ROBAT> from "<U178E><U17CC>"
+collating-element <KHMER_LETTER_TA-KHMER_SIGN_ROBAT> from "<U178F><U17CC>"
+collating-element <KHMER_LETTER_THA-KHMER_SIGN_ROBAT> from "<U1790><U17CC>"
+collating-element <KHMER_LETTER_TO-KHMER_SIGN_ROBAT> from "<U1791><U17CC>"
+collating-element <KHMER_LETTER_THO-KHMER_SIGN_ROBAT> from "<U1792><U17CC>"
+collating-element <KHMER_LETTER_NO-KHMER_SIGN_ROBAT> from "<U1793><U17CC>"
+collating-element <KHMER_LETTER_BA-KHMER_SIGN_ROBAT> from "<U1794><U17CC>"
+collating-element <KHMER_LETTER_PHA-KHMER_SIGN_ROBAT> from "<U1795><U17CC>"
+collating-element <KHMER_LETTER_PO-KHMER_SIGN_ROBAT> from "<U1796><U17CC>"
+collating-element <KHMER_LETTER_PHO-KHMER_SIGN_ROBAT> from "<U1797><U17CC>"
+collating-element <KHMER_LETTER_MO-KHMER_SIGN_ROBAT> from "<U1798><U17CC>"
+collating-element <KHMER_LETTER_YO-KHMER_SIGN_ROBAT> from "<U1799><U17CC>"
+collating-element <KHMER_LETTER_RO-KHMER_SIGN_ROBAT> from "<U179A><U17CC>"
+collating-element <KHMER_INDEPENDENT_VOWEL_RY-KHMER_SIGN_ROBAT> from "<U17AB><U17CC>"
+collating-element <KHMER_INDEPENDENT_VOWEL_RYY-KHMER_SIGN_ROBAT> from "<U17AC><U17CC>"
+collating-element <KHMER_LETTER_LO-KHMER_SIGN_ROBAT> from "<U179B><U17CC>"
+collating-element <KHMER_INDEPENDENT_VOWEL_LY-KHMER_SIGN_ROBAT> from "<U17AD><U17CC>"
+collating-element <KHMER_INDEPENDENT_VOWEL_LYY-KHMER_SIGN_ROBAT> from "<U17AE><U17CC>"
+collating-element <KHMER_LETTER_VO-KHMER_SIGN_ROBAT> from "<U179C><U17CC>"
+collating-element <KHMER_LETTER_SHA-KHMER_SIGN_ROBAT> from "<U179D><U17CC>"
+collating-element <KHMER_LETTER_SSO-KHMER_SIGN_ROBAT> from "<U179E><U17CC>"
+collating-element <KHMER_LETTER_SA-KHMER_SIGN_ROBAT> from "<U179F><U17CC>"
+collating-element <KHMER_LETTER_HA-KHMER_SIGN_ROBAT> from "<U17A0><U17CC>"
+collating-element <KHMER_LETTER_LA-KHMER_SIGN_ROBAT> from "<U17A1><U17CC>"
+collating-element <KHMER_LETTER_QA-KHMER_SIGN_ROBAT> from "<U17A2><U17CC>"
+collating-element <KHMER_INDEPENDENT_VOWEL_QAQ-KHMER_SIGN_ROBAT> from "<U17A3><U17CC>"
+collating-element <KHMER_VOWEL_SIGN_U-KHMER_SIGN_NIKAHIT> from "<U17BB><U17C6>"
+collating-element <KHMER_VOWEL_SIGN_AA-KHMER_SIGN_NIKAHIT> from "<U17B6><U17C6>"
+
+
+% Define collation weights as symbols
+
+collating-symbol <X0001>
+collating-symbol <X0005>
+collating-symbol <X0006>
+collating-symbol <X0007>
+collating-symbol <X0008>
+collating-symbol <X0015>
+collating-symbol <X0019>
+collating-symbol <X0025>
+collating-symbol <X0087>
+collating-symbol <X0088>
+collating-symbol <X0089>
+collating-symbol <X008A>
+collating-symbol <X008B>
+collating-symbol <X008C>
+collating-symbol <X008D>
+collating-symbol <X008E>
+collating-symbol <X008F>
+collating-symbol <X0090>
+collating-symbol <X0091>
+collating-symbol <X0092>
+collating-symbol <X0093>
+collating-symbol <X0094>
+collating-symbol <X0095>
+collating-symbol <X0096>
+collating-symbol <X0097>
+collating-symbol <X0098>
+collating-symbol <X0099>
+collating-symbol <X009A>
+collating-symbol <X009B>
+collating-symbol <X009C>
+collating-symbol <X009D>
+collating-symbol <X009E>
+collating-symbol <X009F>
+collating-symbol <X00A0>
+collating-symbol <X00A1>
+collating-symbol <X00A2>
+collating-symbol <X00A3>
+collating-symbol <X00A4>
+collating-symbol <X00A5>
+collating-symbol <X00A6>
+collating-symbol <X00A7>
+collating-symbol <X00A8>
+collating-symbol <X00A9>
+collating-symbol <X00AA>
+collating-symbol <X00AB>
+collating-symbol <X00AC>
+collating-symbol <X00AD>
+collating-symbol <X00C0>
+collating-symbol <X00D6>
+collating-symbol <X00D7>
+collating-symbol <X00D8>
+collating-symbol <X00D9>
+collating-symbol <X00DA>
+collating-symbol <X00DB>
+collating-symbol <X00DC>
+collating-symbol <X00DD>
+collating-symbol <X00DE>
+collating-symbol <X00DF>
+collating-symbol <X00E2>
+collating-symbol <X0400>
+collating-symbol <X0500>
+collating-symbol <X0507>
+collating-symbol <X0509>
+collating-symbol <X050B>
+collating-symbol <X050D>
+collating-symbol <X050F>
+collating-symbol <X0600>
+collating-symbol <X0700>
+collating-symbol <X0764>
+collating-symbol <X076A>
+collating-symbol <X0782>
+collating-symbol <X078E>
+collating-symbol <X07AA>
+collating-symbol <X07C0>
+collating-symbol <X07C6>
+collating-symbol <X07EE>
+collating-symbol <X07F6>
+collating-symbol <X0800>
+collating-symbol <X080B>
+collating-symbol <X082E>
+collating-symbol <X083F>
+collating-symbol <X084D>
+collating-symbol <X0861>
+collating-symbol <X0863>
+collating-symbol <X0865>
+collating-symbol <X0867>
+collating-symbol <X0869>
+collating-symbol <X086B>
+collating-symbol <X08DF>
+collating-symbol <X08E1>
+collating-symbol <X08E9>
+collating-symbol <X08ED>
+collating-symbol <X08EF>
+collating-symbol <X08F5>
+collating-symbol <X08F7>
+collating-symbol <X0900>
+collating-symbol <X0A00>
+collating-symbol <X0A53>
+collating-symbol <X0A55>
+collating-symbol <X0A57>
+collating-symbol <X0A59>
+collating-symbol <X0A5B>
+collating-symbol <X0A5D>
+collating-symbol <X0A5F>
+collating-symbol <X0A61>
+collating-symbol <X0A63>
+collating-symbol <X0A65>
+collating-symbol <X0A67>
+collating-symbol <X0A69>
+collating-symbol <X0A6B>
+collating-symbol <X0A6D>
+collating-symbol <X0A6F>
+collating-symbol <X0A71>
+collating-symbol <X0A73>
+collating-symbol <X0A75>
+collating-symbol <X0A77>
+collating-symbol <X0A79>
+collating-symbol <X0A7B>
+collating-symbol <X0A7D>
+collating-symbol <X0A7F>
+collating-symbol <X0A81>
+collating-symbol <X0A83>
+collating-symbol <X0A85>
+collating-symbol <X0A87>
+collating-symbol <X0A89>
+collating-symbol <X0A8B>
+collating-symbol <X0A8D>
+collating-symbol <X0A8F>
+collating-symbol <X0A91>
+collating-symbol <X0B00>
+collating-symbol <X0BB3>
+collating-symbol <X0BBB>
+collating-symbol <X0BBD>
+collating-symbol <X0BBF>
+collating-symbol <X0BC3>
+collating-symbol <X0BC9>
+collating-symbol <X0C00>
+collating-symbol <X233C>
+collating-symbol <X234C>
+collating-symbol <X2370>
+collating-symbol <X2372>
+collating-symbol <X2374>
+collating-symbol <X2376>
+collating-symbol <X2378>
+collating-symbol <X237A>
+collating-symbol <X237C>
+collating-symbol <X237E>
+collating-symbol <X2380>
+collating-symbol <X2382>
+collating-symbol <X2600>
+collating-symbol <X2800>
+collating-symbol <X2A00>
+collating-symbol <X2C00>
+collating-symbol <X2E00>
+collating-symbol <X3000>
+collating-symbol <X3200>
+collating-symbol <X3400>
+collating-symbol <X3600>
+collating-symbol <X3800>
+collating-symbol <X3A00>
+collating-symbol <X3C00>
+collating-symbol <X3E00>
+collating-symbol <X4000>
+collating-symbol <X4200>
+collating-symbol <X4400>
+collating-symbol <X4600>
+collating-symbol <X4800>
+collating-symbol <X4A00>
+collating-symbol <X4C00>
+collating-symbol <X4E00>
+collating-symbol <X5000>
+collating-symbol <X5200>
+collating-symbol <X5400>
+collating-symbol <X5600>
+collating-symbol <X5800>
+collating-symbol <X7A20>
+collating-symbol <X7A22>
+collating-symbol <X7A24>
+collating-symbol <X7A26>
+collating-symbol <X7A28>
+collating-symbol <X7A2A>
+collating-symbol <X7A2C>
+collating-symbol <X7A2E>
+collating-symbol <X7A30>
+collating-symbol <X7A32>
+collating-symbol <X7A34>
+collating-symbol <X7A36>
+collating-symbol <X7A38>
+collating-symbol <X7A3A>
+collating-symbol <X7A3C>
+collating-symbol <X7A3E>
+collating-symbol <X7A40>
+collating-symbol <X7A42>
+collating-symbol <X7A44>
+collating-symbol <X7A46>
+collating-symbol <X7A48>
+collating-symbol <X7A4A>
+collating-symbol <X7A4C>
+collating-symbol <X7A4E>
+collating-symbol <X7A50>
+collating-symbol <X7A52>
+collating-symbol <X7A54>
+collating-symbol <X7A55>
+collating-symbol <X7A56>
+collating-symbol <X7A57>
+collating-symbol <X7A58>
+collating-symbol <X7A5A>
+collating-symbol <X7A5C>
+collating-symbol <X7A5E>
+collating-symbol <X7A60>
+collating-symbol <X7A62>
+collating-symbol <X7A64>
+collating-symbol <X7A8E>
+collating-symbol <X7A90>
+collating-symbol <X7A92>
+collating-symbol <X7A94>
+collating-symbol <X7A96>
+collating-symbol <X7A98>
+collating-symbol <X7A9A>
+collating-symbol <X7A9C>
+collating-symbol <X7A9E>
+collating-symbol <X7AA0>
+collating-symbol <X7AA2>
+collating-symbol <X7AA4>
+collating-symbol <X7AA6>
+collating-symbol <X7AA8>
+collating-symbol <X7AAA>
+collating-symbol <X7AAC>
+collating-symbol <X7AAD>
+collating-symbol <X7AAE>
+
+order_start forward;forward;forward;forward
+
+
+% collation weights in order
+
+<X0001>
+<X0005>
+<X0006>
+<X0007>
+<X0008>
+<X0015>
+<X0019>
+<X0025>
+<X0087>
+<X0088>
+<X0089>
+<X008A>
+<X008B>
+<X008C>
+<X008D>
+<X008E>
+<X008F>
+<X0090>
+<X0091>
+<X0092>
+<X0093>
+<X0094>
+<X0095>
+<X0096>
+<X0097>
+<X0098>
+<X0099>
+<X009A>
+<X009B>
+<X009C>
+<X009D>
+<X009E>
+<X009F>
+<X00A0>
+<X00A1>
+<X00A2>
+<X00A3>
+<X00A4>
+<X00A5>
+<X00A6>
+<X00A7>
+<X00A8>
+<X00A9>
+<X00AA>
+<X00AB>
+<X00AC>
+<X00AD>
+<X00C0>
+<X00D6>
+<X00D7>
+<X00D8>
+<X00D9>
+<X00DA>
+<X00DB>
+<X00DC>
+<X00DD>
+<X00DE>
+<X00DF>
+<X00E2>
+<X0400>
+<X0500>
+<X0507>
+<X0509>
+<X050B>
+<X050D>
+<X050F>
+<X0600>
+<X0700>
+<X0764>
+<X076A>
+<X0782>
+<X078E>
+<X07AA>
+<X07C0>
+<X07C6>
+<X07EE>
+<X07F6>
+<X0800>
+<X080B>
+<X082E>
+<X083F>
+<X084D>
+<X0861>
+<X0863>
+<X0865>
+<X0867>
+<X0869>
+<X086B>
+<X08DF>
+<X08E1>
+<X08E9>
+<X08ED>
+<X08EF>
+<X08F5>
+<X08F7>
+<X0900>
+<X0A00>
+<X0A53>
+<X0A55>
+<X0A57>
+<X0A59>
+<X0A5B>
+<X0A5D>
+<X0A5F>
+<X0A61>
+<X0A63>
+<X0A65>
+<X0A67>
+<X0A69>
+<X0A6B>
+<X0A6D>
+<X0A6F>
+<X0A71>
+<X0A73>
+<X0A75>
+<X0A77>
+<X0A79>
+<X0A7B>
+<X0A7D>
+<X0A7F>
+<X0A81>
+<X0A83>
+<X0A85>
+<X0A87>
+<X0A89>
+<X0A8B>
+<X0A8D>
+<X0A8F>
+<X0A91>
+<X0B00>
+<X0BB3>
+<X0BBB>
+<X0BBD>
+<X0BBF>
+<X0BC3>
+<X0BC9>
+<X0C00>
+<X233C>
+<X234C>
+<X2370>
+<X2372>
+<X2374>
+<X2376>
+<X2378>
+<X237A>
+<X237C>
+<X237E>
+<X2380>
+<X2382>
+<X2600>
+<X2800>
+<X2A00>
+<X2C00>
+<X2E00>
+<X3000>
+<X3200>
+<X3400>
+<X3600>
+<X3800>
+<X3A00>
+<X3C00>
+<X3E00>
+<X4000>
+<X4200>
+<X4400>
+<X4600>
+<X4800>
+<X4A00>
+<X4C00>
+<X4E00>
+<X5000>
+<X5200>
+<X5400>
+<X5600>
+<X5800>
+<X7A20>
+<X7A22>
+<X7A24>
+<X7A26>
+<X7A28>
+<X7A2A>
+<X7A2C>
+<X7A2E>
+<X7A30>
+<X7A32>
+<X7A34>
+<X7A36>
+<X7A38>
+<X7A3A>
+<X7A3C>
+<X7A3E>
+<X7A40>
+<X7A42>
+<X7A44>
+<X7A46>
+<X7A48>
+<X7A4A>
+<X7A4C>
+<X7A4E>
+<X7A50>
+<X7A52>
+<X7A54>
+<X7A55>
+<X7A56>
+<X7A57>
+<X7A58>
+<X7A5A>
+<X7A5C>
+<X7A5E>
+<X7A60>
+<X7A62>
+<X7A64>
+<X7A8E>
+<X7A90>
+<X7A92>
+<X7A94>
+<X7A96>
+<X7A98>
+<X7A9A>
+<X7A9C>
+<X7A9E>
+<X7AA0>
+<X7AA2>
+<X7AA4>
+<X7AA6>
+<X7AA8>
+<X7AAA>
+<X7AAC>
+<X7AAD>
+<X7AAE>
+
+% assignment of characters to weights
+
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U17B5> IGNORE;IGNORE;IGNORE;<U17B5>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U2401> IGNORE;IGNORE;IGNORE;<U2401>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U17B4> IGNORE;IGNORE;IGNORE;<U17B4>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U17CE> IGNORE;"<X00DA><X00D6>";"<X0005><X00C0>";IGNORE
+<U17CF> IGNORE;"<X00DA><X00D7>";"<X0005><X00C0>";IGNORE
+<U17D1> IGNORE;"<X00DA><X00D8>";"<X0005><X00C0>";IGNORE
+<U17D0> IGNORE;"<X00DA><X00D9>";"<X0005><X00C0>";IGNORE
+<U17C8> IGNORE;"<X00DA><X00DA>";"<X0005><X00C0>";IGNORE
+<U17DD> IGNORE;"<X00DA><X00DB>";"<X0005><X00C0>";IGNORE
+<U17CB> IGNORE;"<X00DA><X00DC>";"<X0005><X00C0>";IGNORE
+<U17C9> IGNORE;"<X00DA><X00DD>";"<X0005><X00C0>";IGNORE
+<U17CA> IGNORE;"<X00DA><X00DE>";"<X0005><X00C0>";IGNORE
+<U17CD> IGNORE;"<X00DA><X00DF>";"<X0005><X00C0>";IGNORE
+<U17CC> IGNORE;"<X00DB><X0019>";"<X0005><X00C0>";IGNORE
+<U0009> <X0507>;<X0005>;<X0005>;IGNORE
+<U000A> <X0509>;<X0005>;<X0005>;IGNORE
+<U000B> <X050B>;<X0005>;<X0005>;IGNORE
+<U000C> <X050D>;<X0005>;<X0005>;IGNORE
+<U000D> <X050F>;<X0005>;<X0005>;IGNORE
+<U0020> <X0600>;<X0005>;<X0005>;IGNORE
+<U0060> <X0764>;<X0005>;<X0005>;IGNORE
+<U005E> <X076A>;<X0005>;<X0005>;IGNORE
+<U005F> <X0782>;<X0005>;<X0005>;IGNORE
+<U002D> <X078E>;<X0005>;<X0005>;IGNORE
+<U002C> <X07AA>;<X0005>;<X0005>;IGNORE
+<U003B> <X07C0>;<X0005>;<X0005>;IGNORE
+<U003A> <X07C6>;<X0005>;<X0005>;IGNORE
+<U0021> <X07EE>;<X0005>;<X0005>;IGNORE
+<U003F> <X07F6>;<X0005>;<X0005>;IGNORE
+<U002E> <X080B>;<X0005>;<X0005>;IGNORE
+<U17D7> "<X082E><X0400>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17D3> "<X082E><X0500>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17D4> "<X082E><X0600>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17D5> "<X082E><X0700>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17D6> "<X082E><X0800>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17D8> "<X082E><X0900>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17D9> "<X082E><X0A00>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17DA> "<X082E><X0B00>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17DC> "<X082E><X0C00>";<X0005>;"<X0005><X00C0>";IGNORE
+<U0027> <X083F>;<X0005>;<X0005>;IGNORE
+<U0022> <X084D>;<X0005>;<X0005>;IGNORE
+<U0028> <X0861>;<X0005>;<X0005>;IGNORE
+<U0029> <X0863>;<X0005>;<X0005>;IGNORE
+<U005B> <X0865>;<X0005>;<X0005>;IGNORE
+<U005D> <X0867>;<X0005>;<X0005>;IGNORE
+<U007B> <X0869>;<X0005>;<X0005>;IGNORE
+<U007D> <X086B>;<X0005>;<X0005>;IGNORE
+<U0040> <X08DF>;<X0005>;<X0005>;IGNORE
+<U002A> <X08E1>;<X0005>;<X0005>;IGNORE
+<U002F> <X08E9>;<X0005>;<X0005>;IGNORE
+<U005C> <X08ED>;<X0005>;<X0005>;IGNORE
+<U0026> <X08EF>;<X0005>;<X0005>;IGNORE
+<U0023> <X08F5>;<X0005>;<X0005>;IGNORE
+<U0025> <X08F7>;<X0005>;<X0005>;IGNORE
+<U19E0> <X0A53>;<X0005>;<X0005>;IGNORE
+<U19E1> <X0A55>;<X0005>;<X0005>;IGNORE
+<U19E2> <X0A57>;<X0005>;<X0005>;IGNORE
+<U19E3> <X0A59>;<X0005>;<X0005>;IGNORE
+<U19E4> <X0A5B>;<X0005>;<X0005>;IGNORE
+<U19E5> <X0A5D>;<X0005>;<X0005>;IGNORE
+<U19E6> <X0A5F>;<X0005>;<X0005>;IGNORE
+<U19E7> <X0A61>;<X0005>;<X0005>;IGNORE
+<U19E8> <X0A63>;<X0005>;<X0005>;IGNORE
+<U19E9> <X0A65>;<X0005>;<X0005>;IGNORE
+<U19EA> <X0A67>;<X0005>;<X0005>;IGNORE
+<U19EB> <X0A69>;<X0005>;<X0005>;IGNORE
+<U19EC> <X0A6B>;<X0005>;<X0005>;IGNORE
+<U19ED> <X0A6D>;<X0005>;<X0005>;IGNORE
+<U19EE> <X0A6F>;<X0005>;<X0005>;IGNORE
+<U19EF> <X0A71>;<X0005>;<X0005>;IGNORE
+<U19F0> <X0A73>;<X0005>;<X0005>;IGNORE
+<U19F1> <X0A75>;<X0005>;<X0005>;IGNORE
+<U19F2> <X0A77>;<X0005>;<X0005>;IGNORE
+<U19F3> <X0A79>;<X0005>;<X0005>;IGNORE
+<U19F4> <X0A7B>;<X0005>;<X0005>;IGNORE
+<U19F5> <X0A7D>;<X0005>;<X0005>;IGNORE
+<U19F6> <X0A7F>;<X0005>;<X0005>;IGNORE
+<U19F7> <X0A81>;<X0005>;<X0005>;IGNORE
+<U19F8> <X0A83>;<X0005>;<X0005>;IGNORE
+<U19F9> <X0A85>;<X0005>;<X0005>;IGNORE
+<U19FA> <X0A87>;<X0005>;<X0005>;IGNORE
+<U19FB> <X0A89>;<X0005>;<X0005>;IGNORE
+<U19FC> <X0A8B>;<X0005>;<X0005>;IGNORE
+<U19FD> <X0A8D>;<X0005>;<X0005>;IGNORE
+<U19FE> <X0A8F>;<X0005>;<X0005>;IGNORE
+<U19FF> <X0A91>;<X0005>;<X0005>;IGNORE
+<U002B> <X0BB3>;<X0005>;<X0005>;IGNORE
+<U003C> <X0BBB>;<X0005>;<X0005>;IGNORE
+<U003D> <X0BBD>;<X0005>;<X0005>;IGNORE
+<U003E> <X0BBF>;<X0005>;<X0005>;IGNORE
+<U007C> <X0BC3>;<X0005>;<X0005>;IGNORE
+<U007E> <X0BC9>;<X0005>;<X0005>;IGNORE
+<U0024> <X233C>;<X0005>;<X0005>;IGNORE
+<U17DB> <X234C>;<X0005>;<X0005>;IGNORE
+<U0030> <X2370>;<X0005>;<X0005>;IGNORE
+<U17E0> <X2370>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F0> <X2370>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0031> <X2372>;<X0005>;<X0005>;IGNORE
+<U17E1> <X2372>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F1> <X2372>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0032> <X2374>;<X0005>;<X0005>;IGNORE
+<U17E2> <X2374>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F2> <X2374>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0033> <X2376>;<X0005>;<X0005>;IGNORE
+<U17E3> <X2376>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F3> <X2376>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0034> <X2378>;<X0005>;<X0005>;IGNORE
+<U17E4> <X2378>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F4> <X2378>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0035> <X237A>;<X0005>;<X0005>;IGNORE
+<U17E5> <X237A>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F5> <X237A>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0036> <X237C>;<X0005>;<X0005>;IGNORE
+<U17E6> <X237C>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F6> <X237C>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0037> <X237E>;<X0005>;<X0005>;IGNORE
+<U17E7> <X237E>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F7> <X237E>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0038> <X2380>;<X0005>;<X0005>;IGNORE
+<U17E8> <X2380>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F8> <X2380>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0039> <X2382>;<X0005>;<X0005>;IGNORE
+<U17E9> <X2382>;"<X0005><X00E2><X0015>";"<X0005><X0005><X00C0>";IGNORE
+<U17F9> <X2382>;"<X0005><X00E2><X0025>";"<X0005><X0005><X00C0>";IGNORE
+<U0061> <X2600>;<X0005>;<X0005>;IGNORE
+<U0041> <X2600>;<X0005>;<X008F>;IGNORE
+<U0062> <X2800>;<X0005>;<X0005>;IGNORE
+<U0042> <X2800>;<X0005>;<X008F>;IGNORE
+<U0063> <X2A00>;<X0005>;<X0005>;IGNORE
+<U0043> <X2A00>;<X0005>;<X008F>;IGNORE
+<U0064> <X2C00>;<X0005>;<X0005>;IGNORE
+<U0044> <X2C00>;<X0005>;<X008F>;IGNORE
+<U0065> <X2E00>;<X0005>;<X0005>;IGNORE
+<U0045> <X2E00>;<X0005>;<X008F>;IGNORE
+<U0066> <X3000>;<X0005>;<X0005>;IGNORE
+<U0046> <X3000>;<X0005>;<X008F>;IGNORE
+<U0067> <X3200>;<X0005>;<X0005>;IGNORE
+<U0047> <X3200>;<X0005>;<X008F>;IGNORE
+<U0068> <X3400>;<X0005>;<X0005>;IGNORE
+<U0048> <X3400>;<X0005>;<X008F>;IGNORE
+<U0069> <X3600>;<X0005>;<X0005>;IGNORE
+<U0049> <X3600>;<X0005>;<X008F>;IGNORE
+<U006A> <X3800>;<X0005>;<X0005>;IGNORE
+<U004A> <X3800>;<X0005>;<X008F>;IGNORE
+<U006B> <X3A00>;<X0005>;<X0005>;IGNORE
+<U004B> <X3A00>;<X0005>;<X008F>;IGNORE
+<U006C> <X3C00>;<X0005>;<X0005>;IGNORE
+<U004C> <X3C00>;<X0005>;<X008F>;IGNORE
+<U006D> <X3E00>;<X0005>;<X0005>;IGNORE
+<U004D> <X3E00>;<X0005>;<X008F>;IGNORE
+<U006E> <X4000>;<X0005>;<X0005>;IGNORE
+<U004E> <X4000>;<X0005>;<X008F>;IGNORE
+<U006F> <X4200>;<X0005>;<X0005>;IGNORE
+<U004F> <X4200>;<X0005>;<X008F>;IGNORE
+<U0070> <X4400>;<X0005>;<X0005>;IGNORE
+<U0050> <X4400>;<X0005>;<X008F>;IGNORE
+<U0071> <X4600>;<X0005>;<X0005>;IGNORE
+<U0051> <X4600>;<X0005>;<X008F>;IGNORE
+<U0072> <X4800>;<X0005>;<X0005>;IGNORE
+<U0052> <X4800>;<X0005>;<X008F>;IGNORE
+<U0073> <X4A00>;<X0005>;<X0005>;IGNORE
+<U0053> <X4A00>;<X0005>;<X008F>;IGNORE
+<U0074> <X4C00>;<X0005>;<X0005>;IGNORE
+<U0054> <X4C00>;<X0005>;<X008F>;IGNORE
+<U0075> <X4E00>;<X0005>;<X0005>;IGNORE
+<U0055> <X4E00>;<X0005>;<X008F>;IGNORE
+<U0076> <X5000>;<X0005>;<X0005>;IGNORE
+<U0056> <X5000>;<X0005>;<X008F>;IGNORE
+<U0077> <X5200>;<X0005>;<X0005>;IGNORE
+<U0057> <X5200>;<X0005>;<X008F>;IGNORE
+<U0078> <X5400>;<X0005>;<X0005>;IGNORE
+<U0058> <X5400>;<X0005>;<X008F>;IGNORE
+<U0079> <X5600>;<X0005>;<X0005>;IGNORE
+<U0059> <X5600>;<X0005>;<X008F>;IGNORE
+<U007A> <X5800>;<X0005>;<X0005>;IGNORE
+<U005A> <X5800>;<X0005>;<X008F>;IGNORE
+<U1780> <X7A20>;<X0005>;<X0005>;IGNORE
+<U1781> <X7A22>;<X0005>;<X0005>;IGNORE
+<U1782> <X7A24>;<X0005>;<X0005>;IGNORE
+<U1783> <X7A26>;<X0005>;<X0005>;IGNORE
+<U1784> <X7A28>;<X0005>;<X0005>;IGNORE
+<U1785> <X7A2A>;<X0005>;<X0005>;IGNORE
+<U1786> <X7A2C>;<X0005>;<X0005>;IGNORE
+<U1787> <X7A2E>;<X0005>;<X0005>;IGNORE
+<U1788> <X7A30>;<X0005>;<X0005>;IGNORE
+<U1789> <X7A32>;<X0005>;<X0005>;IGNORE
+<U178A> <X7A34>;<X0005>;<X0005>;IGNORE
+<U178B> <X7A36>;<X0005>;<X0005>;IGNORE
+<U178C> <X7A38>;<X0005>;<X0005>;IGNORE
+<U178D> <X7A3A>;<X0005>;<X0005>;IGNORE
+<U178E> <X7A3C>;<X0005>;<X0005>;IGNORE
+<U178F> <X7A3E>;<X0005>;<X0005>;IGNORE
+<U1790> <X7A40>;<X0005>;<X0005>;IGNORE
+<U1791> <X7A42>;<X0005>;<X0005>;IGNORE
+<U1792> <X7A44>;<X0005>;<X0005>;IGNORE
+<U1793> <X7A46>;<X0005>;<X0005>;IGNORE
+<U1794> <X7A48>;<X0005>;<X0005>;IGNORE
+<U1795> <X7A4A>;<X0005>;<X0005>;IGNORE
+<U1796> <X7A4C>;<X0005>;<X0005>;IGNORE
+<U1797> <X7A4E>;<X0005>;<X0005>;IGNORE
+<U1798> <X7A50>;<X0005>;<X0005>;IGNORE
+<U1799> <X7A52>;<X0005>;<X0005>;IGNORE
+<U179A> <X7A54>;<X0005>;<X0005>;IGNORE
+<KHMER_LETTER_KA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A20>";"<X00AD><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_KHA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A22>";"<X00AC><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_KO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A24>";"<X00AB><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_KHO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A26>";"<X00AA><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_NGO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A28>";"<X00A9><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_CA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A2A>";"<X00A8><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_CHA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A2C>";"<X00A7><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_CO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A2E>";"<X00A6><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_CHO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A30>";"<X00A5><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_NYO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A32>";"<X00A4><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_DA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A34>";"<X00A3><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_TTHA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A36>";"<X00A2><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_DO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A38>";"<X00A1><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_TTHO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A3A>";"<X00A0><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_NNO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A3C>";"<X009F><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_TA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A3E>";"<X009E><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_THA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A40>";"<X009D><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_TO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A42>";"<X009C><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_THO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A44>";"<X009B><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_NO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A46>";"<X009A><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_BA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A48>";"<X0099><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_PHA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A4A>";"<X0098><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_PO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A4C>";"<X0097><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_PHO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A4E>";"<X0096><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_MO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A50>";"<X0095><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_YO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A52>";"<X0094><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_RO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A54>";"<X0093><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_INDEPENDENT_VOWEL_RY-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A55><X0400>";"<X0092><X0005><X0005>";"<X0005><X0005><X0005><X00C0>";IGNORE
+<KHMER_INDEPENDENT_VOWEL_RYY-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A55><X0500>";"<X0091><X0005><X0005>";"<X0005><X0005><X0005><X00C0>";IGNORE
+<KHMER_LETTER_LO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A56>";"<X0090><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_INDEPENDENT_VOWEL_LY-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A57><X0400>";"<X008F><X0005><X0005>";"<X0005><X0005><X0005><X00C0>";IGNORE
+<KHMER_INDEPENDENT_VOWEL_LYY-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A57><X0500>";"<X008E><X0005><X0005>";"<X0005><X0005><X0005><X00C0>";IGNORE
+<KHMER_LETTER_VO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A58>";"<X008D><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_SHA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A5A>";"<X008C><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_SSO-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A5C>";"<X008B><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_SA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A5E>";"<X008A><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_HA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A60>";"<X0089><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_LA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A62>";"<X0088><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_LETTER_QA-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A64>";"<X0087><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<KHMER_INDEPENDENT_VOWEL_QAQ-KHMER_SIGN_ROBAT> "<X7A54><X7AAE><X7A64>";"<X0087><X0005><X0005>";"<X0006><X0005><X0005>";IGNORE
+<U17AB> "<X7A55><X0400>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17AC> "<X7A55><X0500>";<X0005>;"<X0005><X00C0>";IGNORE
+<U179B> <X7A56>;<X0005>;<X0005>;IGNORE
+<U17AD> "<X7A57><X0400>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17AE> "<X7A57><X0500>";<X0005>;"<X0005><X00C0>";IGNORE
+<U179C> <X7A58>;<X0005>;<X0005>;IGNORE
+<U179D> <X7A5A>;<X0005>;<X0005>;IGNORE
+<U179E> <X7A5C>;<X0005>;<X0005>;IGNORE
+<U179F> <X7A5E>;<X0005>;<X0005>;IGNORE
+<U17A0> <X7A60>;<X0005>;<X0005>;IGNORE
+<U17A1> <X7A62>;<X0005>;<X0005>;IGNORE
+<U17A2> <X7A64>;<X0005>;<X0005>;IGNORE
+<U17A3> <X7A64>;<X0005>;<X0008>;IGNORE
+<U17A4> "<X7A64><X7A8E>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17A5> "<X7A64><X7A90>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17A6> "<X7A64><X7A92>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17A7> "<X7A64><X7A98>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17A8> "<X7A64><X7A98>";"<X0005><X0005>";"<X0007><X0005>";IGNORE
+<U17AA> "<X7A64><X7A98><X7A64>";"<X0005><X0005><X0005>";"<X0005><X0005><X0005>";IGNORE
+<U17A9> "<X7A64><X7A9A>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17AF> "<X7A64><X7AA6>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17B0> "<X7A64><X7AA8>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17B1> "<X7A64><X7AAA>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17B2> "<X7A64><X7AAA>";"<X0005><X0005>";"<X0006><X0005>";IGNORE
+<U17B3> "<X7A64><X7AAC>";"<X0005><X0005>";"<X0005><X0005>";IGNORE
+<U17B6> <X7A8E>;<X0005>;<X0005>;IGNORE
+<U17B7> <X7A90>;<X0005>;<X0005>;IGNORE
+<U17B8> <X7A92>;<X0005>;<X0005>;IGNORE
+<U17B9> <X7A94>;<X0005>;<X0005>;IGNORE
+<U17BA> <X7A96>;<X0005>;<X0005>;IGNORE
+<U17BB> <X7A98>;<X0005>;<X0005>;IGNORE
+<U17BC> <X7A9A>;<X0005>;<X0005>;IGNORE
+<U17BD> <X7A9C>;<X0005>;<X0005>;IGNORE
+<U17BE> <X7A9E>;<X0005>;<X0005>;IGNORE
+<U17BF> <X7AA0>;<X0005>;<X0005>;IGNORE
+<U17C0> <X7AA2>;<X0005>;<X0005>;IGNORE
+<U17C1> <X7AA4>;<X0005>;<X0005>;IGNORE
+<U17C2> <X7AA6>;<X0005>;<X0005>;IGNORE
+<U17C3> <X7AA8>;<X0005>;<X0005>;IGNORE
+<U17C4> <X7AAA>;<X0005>;<X0005>;IGNORE
+<U17C5> <X7AAC>;<X0005>;<X0005>;IGNORE
+<KHMER_VOWEL_SIGN_U-KHMER_SIGN_NIKAHIT> "<X7AAD><X0400>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17C6> "<X7AAD><X0500>";<X0005>;"<X0005><X00C0>";IGNORE
+<KHMER_VOWEL_SIGN_AA-KHMER_SIGN_NIKAHIT> "<X7AAD><X0600>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17C7> "<X7AAD><X0700>";<X0005>;"<X0005><X00C0>";IGNORE
+<U17D2> <X7AAE>;<X0005>;<X0005>;IGNORE
+UNDEFINED IGNORE;IGNORE;IGNORE;IGNORE
+
+order_end
+
+END LC_COLLATE
+
+LC_MONETARY
+
+int_curr_symbol "<U004B><U0048><U0052><U0020>"
+
+% monetary unit: Riel
+currency_symbol "<U17DB>"
+mon_decimal_point "<U002E>"
+mon_thousands_sep "<U002C>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 0
+p_sep_by_space 0
+n_cs_precedes 0
+n_sep_by_space 0
+p_sign_posn 1
+n_sign_posn 1
+int_p_cs_precedes 0
+int_p_sep_by_space 0
+int_n_cs_precedes 0
+int_n_sep_by_space 0
+int_p_sign_posn 1
+int_n_sign_posn 1
+END LC_MONETARY
+
+
+LC_NUMERIC
+
+decimal_point "<U002E>"
+thousands_sep "<U002C>"
+grouping 3
+
+END LC_NUMERIC
+
+LC_TIME
+
+abday "<U17A2><U17B6>";/
+ "<U1785>";/
+ "<U17A2>";/
+ "<U1796><U17BB>";/
+ "<U1796><U17D2><U179A>";/
+ "<U179F><U17BB>";/
+ "<U179F>"
+
+day "<U1790><U17D2><U1784><U17C3><U200B><U17A2><U17B6><U1791><U17B7><U178F><U17D2><U1799>";/
+ "<U1790><U17D2><U1784><U17C3><U200B><U1785><U17D0><U1793><U17D2><U1791>";/
+ "<U1790><U17D2><U1784><U17C3><U200B><U17A2><U1784><U17D2><U1782><U17B6><U179A>";/
+ "<U1790><U17D2><U1784><U17C3><U200B><U1796><U17BB><U1792>";/
+ "<U1790><U17D2><U1784><U17C3><U200B><U1796><U17D2><U179A><U17A0><U179F><U17D2><U1794><U178F><U17B7><U17CD>";/
+ "<U1790><U17D2><U1784><U17C3><U200B><U179F><U17BB><U1780><U17D2><U179A>";/
+ "<U1790><U17D2><U1784><U17C3><U200B><U179F><U17C5><U179A><U17CD>"
+
+abmon "<U17E1>";/
+ "<U17E2>";/
+ "<U17E3>";/
+ "<U17E4>";/
+ "<U17E5>";/
+ "<U17E6>";/
+ "<U17E7>";/
+ "<U17E8>";/
+ "<U17E9>";/
+ "<U17E1><U17E0>";/
+ "<U17E1><U17E1>";/
+ "<U17E1><U17E2>"
+
+mon "<U1798><U1780><U179A><U17B6>";/
+ "<U1780><U17BB><U1798><U17D2><U1797><U17C8>";/
+ "<U1798><U17B7><U1793><U17B6>";/
+ "<U1798><U17C1><U179F><U17B6>";/
+ "<U17A7><U179F><U1797><U17B6>";/
+ "<U1798><U17B7><U1790><U17BB><U1793><U17B6>";/
+ "<U1780><U1780><U17D2><U1780><U178A><U17B6>";/
+ "<U179F><U17B8><U17A0><U17B6>";/
+ "<U1780><U1789><U17D2><U1789><U17B6>";/
+ "<U178F><U17BB><U179B><U17B6>";/
+ "<U179C><U17B7><U1785><U17D2><U1786><U17B7><U1780><U17B6>";/
+ "<U1792><U17D2><U1793><U17BC>"
+
+d_t_fmt "%A <U1790><U17D2><U1784><U17C3> %e <U1781><U17C2> %B <U1786><U17D2><U1793><U17B6><U17C6> %Y, %H <U1798><U17C9><U17C4><U1784> m <U1793><U17B6><U1791><U17B8> %S <U179C><U17B7><U1793><U17B6><U1791><U17B8><U200B>"
+
+d_fmt "%e %B %Y"
+
+t_fmt "%H:%M:%S"
+
+am_pm "<U1796><U17D2><U179A><U17B9><U1780>";"<U179B><U17D2><U1784><U17B6><U1785>"
+
+% Appropriate 12-hour clock representation "%I:%M:%S %p"
+%t_fmt_ampm "%I<U003A>%M<U003A>%S<U0020>%p"
+
+% Era : Buddhist Era
+%era "+:1:-543<U002F>01<U002F>01:+*:<U0E9E><U002E><U0EAA><U002E>:%EC<U0020>%Ey"
+%era_d_fmt "%e<U0020>%b<U0020>%Ey"
+%era_t_fmt "%H<U002E>%M<U002E>%S<U0020><U0E99><U002E>"
+%era_d_t_fmt "<U0EA7><U0EB1><U0E99>%A<U0E97><U0EB5><U0EC8><U0020>%e<U0020>%B<U0020>%EC<U0020>%Ey<U002C><U0020>%H<U002E>%M<U002E>%S<U0020><U0E99><U002E>"
+
+% Appropriate date representation (date(1)) "%a %e %b %Ey %H:%M:%S %Z"
+%date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062>/
+%<U0020><U0025><U0045><U0079><U0020><U0025><U0048><U003A><U0025><U004D>/
+%<U003A><U0025><U0053><U0020><U0025><U005A>"
+% ICT-7ICT-7
+%timezone "<U0049><U0043><U0054><U002D><U0037><U0049><U0043><U0054><U002d><U0037>"
+
+END LC_TIME
+
+LC_MESSAGES
+
+yesstr "yes:YES:y:Y"
+
+nostr "no:NO:n:N"
+
+yesexpr "^[yY]([eE][sS])?"
+
+noexpr "^[nN][oO]?"
+
+END LC_MESSAGES
+
+LC_PAPER
+height 297
+width 210
+END LC_PAPER
+
+LC_TELEPHONE
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+<U006C>"
+tel_dom_fmt "<U0028><U0025><U0041><U0029><U0025><U006C>"
+int_select "<U0030><U0030><U0031>"
+int_prefix "<U0038><U0035><U0036>"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+% FIXME
+measurement 1
+END LC_MEASUREMENT
+
+LC_NAME
+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+
+name_mr "<U0E97>."
+name_mrs "<U0E99>."
+END LC_NAME
+
+LC_ADDRESS
+% "%f%N%a%N%d%N%r%t%e%t%b%N%h%t%s%N%T%N%S%N%z%c%N"
+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0072><U0025><U0074><U0025><U0065>/
+<U0025><U0074><U0025><U0062><U0025><U004E><U0025><U0068><U0025><U0074>/
+<U0025><U0073><U0025><U004E><U0025><U0054><U0025><U004E><U0025><U0053>/
+<U0025><U004E><U0025><U007A><U0025><U0063><U0025><U004E>"
+country_name "<U0EA5><U0EB2><U0EA7>"
+%FIXME
+%country_post ""
+country_ab2 "<U004C><U0041>"
+country_ab3 "<U004C><U0041><U004F>"
+country_num 418
+country_car "<U004C><U0041><U004F>"
+%FIXME
+%country_isbn ""
+lang_name "<U0EA5><U0EB2><U0EA7>"
+lang_ab "<U006C><U006F>"
+lang_term "<U006c><U0061><U006F>"
+lang_lib "<U006C><U0061><U006F>"
+END LC_ADDRESS
diff --git a/localedata/locales/ky_KG b/localedata/locales/ky_KG
new file mode 100644
index 0000000000..6441884dee
--- /dev/null
+++ b/localedata/locales/ky_KG
@@ -0,0 +1,203 @@
+escape_char /
+comment_char %
+% charset "UTF-8"
+
+%
+%
+% needed extra chars: <U04A2>, <U04A3>, <U04E8>, <U04E9>, <U04AE>, <U04AF>
+%
+LC_IDENTIFICATION
+title "Kyrgyz Language Locale for Kyrgyzstan"
+source "Timur Jamakeev"
+address ""
+contact "Pablo Saratxaga, Timur Jamakeev"
+email "srtxg@mandrakesoft.com, ztimur@mail.ru"
+tel ""
+fax ""
+language "Kyrgyz"
+territory "Kyrgyzstan"
+revision "0.2"
+date "2004-10-14"
+%
+category "ky_KG:2000";LC_IDENTIFICATION
+category "ky_KG:2000";LC_CTYPE
+category "ky_KG:2000";LC_COLLATE
+category "ky_KG:2000";LC_TIME
+category "ky_KG:2000";LC_NUMERIC
+category "ky_KG:2000";LC_MONETARY
+category "ky_KG:2000";LC_MESSAGES
+category "ky_KG:2000";LC_PAPER
+category "ky_KG:2000";LC_NAME
+category "ky_KG:2000";LC_ADDRESS
+category "ky_KG:2000";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_COLLATE
+
+% The kyrgyz cyrillic alphabet is:
+% a=, b=, v=, g=, d=, e=, io, z%, z=, i=, j=, k=, l=, m=, n=, n,=,
+% o=, o-=, p=, r=, s=, t=, u=, u'=, f=, h=, c=, c%, s%, sc, =', y=, %',
+% je, ju, ja
+%
+% special letters are:
+% n,=: <U04A2>, <U04A3>
+% o-=: <U04E8>, <U04E9>
+% u'=: <U04AE>, <U04AF>
+
+copy "<U0069><U0073><U006F><U0031><U0034><U0036><U0035><U0031><U005F><U0074><U0031>"
+
+collating-symbol <o-=>
+collating-symbol <u'=>
+collating-symbol <n,=>
+
+reorder-after <CYR-EN>
+<n,=>
+reorder-after <CYR-O>
+<o-=>
+reorder-after <CYR-OUBRE>
+<u'=>
+
+reorder-after <U043D>
+<U04A3> <n,=>;<PCL>;<MIN>;IGNORE
+reorder-after <U041D>
+<U04A2> <n,=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U043E>
+<U04E9> <o-=>;<PCL>;<MIN>;IGNORE
+reorder-after <U041E>
+<U04E8> <o-=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0443>
+<U04AF> <u'=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0423>
+<U04AE> <u'=>;<PCL>;<CAP>;IGNORE
+
+reorder-end
+
+END LC_COLLATE
+
+LC_CTYPE
+copy "i18n"
+END LC_CTYPE
+
+LC_MESSAGES
+% FIXED AND CHECKED by Timur 2004/10/14
+yesstr "<U041E><U043E><U0431><U0430>"
+nostr "<U0416><U043E><U043A>"
+yesexpr "<U005E><U005B><U041E><U043E><U0059><U0079><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U0416><U0436><U004E><U006E><U005D><U002E><U002A>"
+END LC_MESSAGES
+
+LC_MONETARY
+% FIXED AND CHECKED by Timur 2004/10/14
+int_curr_symbol "<U004B><U0047><U0053><U0020>"
+currency_symbol "<U0441><U043E><U043C>"
+mon_decimal_point "<U002E>"
+mon_thousands_sep "<U0020>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 0
+p_sep_by_space 1
+n_cs_precedes 0
+n_sep_by_space 1
+p_sign_posn 1
+n_sign_posn 1
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point "<U002C>"
+thousands_sep "<U0020>"
+grouping 3;3
+END LC_NUMERIC
+
+LC_TIME
+day "<U0436><U0435><U043A><U0448><U0435><U043C><U0431><U0438>";/
+ "<U0434><U04AF><U0439><U0448><U04E9><U043C><U0431><U04AF>";/
+ "<U0448><U0435><U0439><U0448><U0435><U043C><U0431><U0438>";/
+ "<U0448><U0430><U0440><U0448><U0435><U043C><U0431><U0438>";/
+ "<U0431><U0435><U0439><U0448><U0435><U043C><U0431><U0438>";/
+ "<U0436><U0443><U043C><U0430>";/
+ "<U0438><U0448><U0435><U043C><U0431><U0438>"
+% FIXED by Timur 2004/10/12
+abday "<U0436><U043A>";/
+ "<U0434><U0448>";/
+ "<U0448><U0435>";/
+ "<U0448><U0430>";/
+ "<U0431><U0448>";/
+ "<U0436><U043C>";/
+ "<U0438><U0448>"
+mon "<U044F><U043D><U0432><U0430><U0440><U044C>";/
+ "<U0444><U0435><U0432><U0440><U0430><U043B><U044C>";/
+ "<U043C><U0430><U0440><U0442>";/
+ "<U0430><U043F><U0440><U0435><U043B><U044C>";/
+ "<U043C><U0430><U0439>";/
+ "<U0438><U044E><U043D><U044C>";/
+ "<U0438><U044E><U043B><U044C>";/
+ "<U0430><U0432><U0433><U0443><U0441><U0442>";/
+ "<U0441><U0435><U043D><U0442><U044F><U0431><U0440><U044C>";/
+ "<U043E><U043A><U0442><U044F><U0431><U0440><U044C>";/
+ "<U043D><U043E><U044F><U0431><U0440><U044C>";/
+ "<U0434><U0435><U043A><U0430><U0431><U0440><U044C>"
+abmon "<U044F><U043D><U0432>";/
+ "<U0444><U0435><U0432>";/
+ "<U043C><U0430><U0440>";/
+ "<U0430><U043F><U0440>";/
+ "<U043C><U0430><U0439>";/
+ "<U0438><U044E><U043D>";/
+ "<U0438><U044E><U043B>";/
+ "<U0430><U0432><U0433>";/
+ "<U0441><U0435><U043D>";/
+ "<U043E><U043A><U0442>";/
+ "<U043D><U043E><U044F>";/
+ "<U0434><U0435><U043A>"
+% CHECKED AND FIXED by Timur
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U0025><U0054>"
+% %d.%m.%Y FIXED by Timur 2004.10.11
+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
+% %T
+t_fmt "<U0025><U0054>"
+am_pm "";""
+t_fmt_ampm ""
+% %d-%B, %Y-<U0436>, %A
+%date_fmt "<U0025><U0064><U002D><U0025><U0042><U002C><U0020><U0025><U0059>/
+%<U002D><U0436><U002C><U0020><U0025><U0041>"
+date_fmt "<U0025><U0061><U002C><U0020><U0025><U0065><U002D><U0025><U0062><U0020><U0025><U0059><U0020><U0436>/
+<U002C><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A>"
+END LC_TIME
+
+LC_PAPER
+height 297
+width 210
+END LC_PAPER
+
+LC_TELEPHONE
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+<U006C>"
+int_prefix "<U0039><U0039><U0036>"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+measurement 1
+END LC_MEASUREMENT
+
+LC_NAME
+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+END LC_NAME
+
+LC_ADDRESS
+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+country_ab2 "<U004B><U0059>"
+country_ab3 "<U004B><U0059><U0052>"
+%country_num 643
+END LC_ADDRESS
diff --git a/localedata/locales/mg_MG b/localedata/locales/mg_MG
new file mode 100644
index 0000000000..1490e5deac
--- /dev/null
+++ b/localedata/locales/mg_MG
@@ -0,0 +1,181 @@
+comment_char %
+escape_char /
+%
+% Malagasy Language Locale for Madagascar
+% Source: The Debian Project modified by http://linuxmg.org
+% Contact: Christian Perrier
+% Email: bubulle@debian.org, linux@linuxmg.org
+% Tel: +33 - 130699222
+% Language: mg
+% Territory: MG
+% Revision: 1.0
+% Date: 2004-09-08
+% Users: general
+% Charset: ISO-8859-15
+% Distribution and use is free, also
+% for commercial purposes.
+
+LC_IDENTIFICATION
+title "Malagasy locale for Madagascar"
+source "The Debian Project modified by GNU/Linux Malagasy"
+address ""
+contact "Rado Ramarotafika,Do-Risika RAFIEFERANTSIARONJY"
+email "rado@linuxmg.org,dourix@free.fr"
+tel ""
+fax ""
+language "Malagasy"
+territory "Madagascar"
+revision "1.1"
+date "2005-02-02"
+%
+category "mg_MG:2000";LC_IDENTIFICATION
+category "mg_MG:2000";LC_CTYPE
+category "mg_MG:2000";LC_COLLATE
+category "mg_MG:2000";LC_TIME
+category "mg_MG:2000";LC_NUMERIC
+category "mg_MG:2000";LC_MONETARY
+category "mg_MG:2000";LC_MESSAGES
+category "mg_MG:2000";LC_PAPER
+category "mg_MG:2000";LC_NAME
+category "mg_MG:2000";LC_ADDRESS
+category "mg_MG:2000";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+
+% Accents are simply omitted if they cannot be represented.
+include "translit_combining";""
+
+translit_end
+
+END LC_CTYPE
+
+LC_COLLATE
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+END LC_COLLATE
+
+LC_MESSAGES
+% Yes=Eny --> EeYy as possible Yes chars
+% No=Tsia -->TtNn
+yesexpr "<U005E><U005B><U0065><U0045><U0079><U0059><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U0074><U0054><U006E><U004E><U005D><U002E><U002A>"
+END LC_MESSAGES
+
+LC_MONETARY
+int_curr_symbol "<U004D><U0047><U0041><U0020>"
+currency_symbol "<U0041><U0052>"
+mon_decimal_point "<U002C>"
+mon_thousands_sep "<U0020>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 0
+p_sep_by_space 1
+n_cs_precedes 0
+n_sep_by_space 1
+p_sign_posn 1
+n_sign_posn 1
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point "<U002C>"
+thousands_sep ""
+grouping 0;0
+END LC_NUMERIC
+
+LC_TIME
+% Abbrev. days: lah,lat,tal,lar,lak,zom,sab
+% Abbrev. days: lhd,lts, tlt,lrb,lkm,zom,sab
+abday "<U006C><U0068><U0064>";"<U006C><U0074><U0073>";/
+ "<U0074><U006C><U0074>";"<U006C><U0072><U0062>";/
+ "<U006C><U006B><U006D>";"<U007A><U006F><U006D>";/
+ "<U0073><U0061><U0062>"
+% days in Malagasy:
+% alahady,alatsinainy,talata,alarobia,alakamisy,zoma,asabotsy
+% Sunday, Monday....
+day "<U0061><U006C><U0061><U0068><U0061><U0064><U0079>";/
+ "<U0061><U006C><U0061><U0074><U0073><U0069><U006E><U0061><U0069><U006E><U0079>";/
+ "<U0074><U0061><U006C><U0061><U0074><U0061>";/
+ "<U0061><U006C><U0061><U0072><U006F><U0062><U0069><U0061>";/
+ "<U0061><U006C><U0061><U006B><U0061><U006D><U0069><U0073><U0079>";/
+ "<U007A><U006F><U006D><U0061>";/
+ "<U0073><U0061><U0062><U006F><U0074><U0073><U0079>"
+%janoary,febroary,martsa,aprily,mey,jona,jolay,aogositra,septambra,oktobra
+%novambra,desambra
+abmon "<U006A><U0061><U006E>";"<U0066><U0065><U0062>";/
+ "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
+ "<U006D><U0065><U0079>";"<U006A><U006F><U006E>";/
+ "<U006A><U006F><U006C>";"<U0061><U006F><U0067>";/
+ "<U0073><U0065><U0070>";"<U006F><U006B><U0074>";/
+ "<U006E><U006F><U0076>";"<U0064><U0065><U0073>"
+mon "<U006A><U0061><U006E><U006F><U0061><U0072><U0079>";/
+ "<U0066><U0065><U0062><U0072><U006F><U0061><U0072><U0079>";/
+ "<U006D><U0061><U0072><U0074><U0073><U0061>";/
+ "<U0061><U0070><U0072><U0069><U006C><U0079>";/
+ "<U006D><U0065><U0079>";/
+ "<U006A><U006F><U006E><U0061>";/
+ "<U006A><U006F><U006C><U0061><U0079>";/
+ "<U0061><U006F><U0067><U006F><U0073><U0069><U0074><U0072><U0061>";/
+ "<U0073><U0065><U0070><U0074><U0061><U006D><U0062><U0072><U0061>";/
+ "<U006F><U006B><U0074><U006F><U0062><U0072><U0061>";/
+ "<U006E><U006F><U0076><U0061><U006D><U0062><U0072><U0061>";/
+ "<U0064><U0065><U0073><U0061><U006D><U0062><U0072><U0061>"
+% %a %d %b %Y %T %Z
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+% %d.%m.%Y
+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
+% %T
+t_fmt "<U0025><U0054>"
+am_pm "";""
+t_fmt_ampm ""
+% %a %b %e %H:%M:%S %Z %Y
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+LC_PAPER
+height 297
+width 210
+END LC_PAPER
+
+LC_TELEPHONE
+% +%C %a %l
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+<U006C>"
+% %a %l
+tel_dom_fmt "<U0025><U0061><U0020><U0025><U006C>"
+% 261
+int_prefix "<U0032><U0036><U0031>"
+% 00
+int_select "<U0030><U0030>"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+measurement 1
+END LC_MEASUREMENT
+
+LC_NAME
+% %d%t%g%t%m%t%f
+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+END LC_NAME
+
+LC_ADDRESS
+% %f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N
+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+country_ab2 "<U004D><U0047>"
+country_ab3 "<U004D><U0044><U0047>"
+country_num 450
+END LC_ADDRESS
diff --git a/localedata/locales/ru_RU b/localedata/locales/ru_RU
index 04bbc4d25d..2fdffb12cb 100644
--- a/localedata/locales/ru_RU
+++ b/localedata/locales/ru_RU
@@ -112,18 +112,18 @@ abday "<U0412><U0441><U043A>";/
"<U0427><U0442><U0432>";/
"<U041F><U0442><U043D>";/
"<U0421><U0431><U0442>"
-mon "<U042F><U043D><U0432><U0430><U0440><U044F>";/
- "<U0424><U0435><U0432><U0440><U0430><U043B><U044F>";/
- "<U041C><U0430><U0440><U0442><U0430>";/
- "<U0410><U043F><U0440><U0435><U043B><U044F>";/
- "<U041C><U0430><U044F>";/
- "<U0418><U044E><U043D><U044F>";/
- "<U0418><U044E><U043B><U044F>";/
- "<U0410><U0432><U0433><U0443><U0441><U0442><U0430>";/
- "<U0421><U0435><U043D><U0442><U044F><U0431><U0440><U044F>";/
- "<U041E><U043A><U0442><U044F><U0431><U0440><U044F>";/
- "<U041D><U043E><U044F><U0431><U0440><U044F>";/
- "<U0414><U0435><U043A><U0430><U0431><U0440><U044F>"
+mon "<U042F><U043D><U0432><U0430><U0440><U044C>";/
+ "<U0424><U0435><U0432><U0440><U0430><U043B><U044C>";/
+ "<U041C><U0430><U0440><U0442>";/
+ "<U0410><U043F><U0440><U0435><U043B><U044C>";/
+ "<U041C><U0430><U0439>";/
+ "<U0418><U044E><U043D><U044C>";/
+ "<U0418><U044E><U043B><U044C>";/
+ "<U0410><U0432><U0433><U0443><U0441><U0442>";/
+ "<U0421><U0435><U043D><U0442><U044F><U0431><U0440><U044C>";/
+ "<U041E><U043A><U0442><U044F><U0431><U0440><U044C>";/
+ "<U041D><U043E><U044F><U0431><U0440><U044C>";/
+ "<U0414><U0435><U043A><U0430><U0431><U0440><U044C>"
abmon "<U042F><U043D><U0432>";/
"<U0424><U0435><U0432>";/
"<U041C><U0430><U0440>";/
diff --git a/localedata/locales/sid_ET b/localedata/locales/sid_ET
index 03727ab1b9..8ce3234a5d 100644
--- a/localedata/locales/sid_ET
+++ b/localedata/locales/sid_ET
@@ -113,7 +113,6 @@ country_num 231 % 210 found in at least one ISO 3166 doc
% country_car unknown
% country_isbn unknown, Need ISO 2108
lang_name "<U0053><U0069><U0064><U0061><U0061><U006D><U0075><U0020><U0041><U0066><U006F>"
-lang_ab "<U0073><U0069><U0064>"
lang_term "<U0073><U0069><U0064>"
lang_lib "<U0073><U0069><U0064>"
%
diff --git a/localedata/locales/sq_AL b/localedata/locales/sq_AL
index 1c9846515f..17f1fdb702 100644
--- a/localedata/locales/sq_AL
+++ b/localedata/locales/sq_AL
@@ -3,6 +3,7 @@ escape_char /
% Albanian language locale for Albania.
% Contributed by Kentaroh Noji <knoji@jp.ibm.com> and
% Tetsuji Orita <orita@jp.ibm.com>.
+% fixed LC_COLLATE <pablo@mandrakesoft.com>
LC_IDENTIFICATION
title "Albanian language locale for Albania"
@@ -14,8 +15,8 @@ tel ""
fax ""
language "Albanian"
territory "Albania"
-revision "1.0"
-date "2000-07-21"
+revision "1.1"
+date "2004-07-01"
%
category "sq_AL:2000";LC_IDENTIFICATION
category "sq_AL:2000";LC_CTYPE
@@ -40,6 +41,146 @@ LC_COLLATE
% Copy the template from ISO/IEC 14651
copy "iso14651_t1"
+%% a, b, c, c,, d, dh, e, e:, f, g, gj, h, i, j, k, l, ll, m, n, nj, o, p, q
+%% r, rr, s, sh, t, th, u, v, x, xh, y, z, zh.
+collating-symbol <ccedilla>
+collating-symbol <d-h-sq>
+collating-element <D-H> from "<U0044><U0048>"
+collating-element <d-h> from "<U0064><U0068>"
+collating-element <D-h> from "<U0044><U0068>"
+collating-element <d-H> from "<U0064><U0048>"
+collating-symbol <ediaeresis>
+collating-symbol <g-j-sq>
+collating-element <G-J> from "<U0047><U004A>"
+collating-element <g-j> from "<U0067><U006A>"
+collating-element <G-j> from "<U0047><U006A>"
+collating-element <g-J> from "<U0067><U004A>"
+collating-symbol <l-l-sq>
+collating-element <L-L> from "<U004C><U004C>"
+collating-element <l-l> from "<U006C><U006C>"
+collating-element <L-l> from "<U004C><U006C>"
+collating-element <l-L> from "<U006C><U004C>"
+collating-symbol <n-j-sq>
+collating-element <N-J> from "<U004E><U004A>"
+collating-element <n-j> from "<U006E><U006A>"
+collating-element <N-j> from "<U004E><U006A>"
+collating-element <n-J> from "<U006E><U004A>"
+collating-symbol <r-r-sq>
+collating-element <R-R> from "<U0052><U0052>"
+collating-element <r-r> from "<U0072><U0072>"
+collating-element <R-r> from "<U0052><U0072>"
+collating-element <r-R> from "<U0072><U0052>"
+collating-symbol <s-h-sq>
+collating-element <S-H> from "<U0053><U0048>"
+collating-element <s-h> from "<U0073><U0068>"
+collating-element <S-h> from "<U0053><U0068>"
+collating-element <s-H> from "<U0073><U0048>"
+collating-symbol <t-h-sq>
+collating-element <T-H> from "<U0054><U0048>"
+collating-element <t-h> from "<U0074><U0068>"
+collating-element <T-h> from "<U0054><U0068>"
+collating-element <t-H> from "<U0074><U0048>"
+collating-symbol <x-h-sq>
+collating-element <X-H> from "<U0058><U0048>"
+collating-element <x-h> from "<U0078><U0068>"
+collating-element <X-h> from "<U0058><U0068>"
+collating-element <x-H> from "<U0078><U0048>"
+collating-symbol <z-h-sq>
+collating-element <Z-H> from "<U005A><U0048>"
+collating-element <z-h> from "<U007A><U0068>"
+collating-element <Z-h> from "<U005A><U0068>"
+collating-element <z-H> from "<U007A><U0048>"
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <c>
+<ccedilla>
+reorder-after <d>
+<d-h-sq>
+reorder-after <e>
+<ediaeresis>
+reorder-after <g>
+<g-j-sq>
+reorder-after <l>
+<l-l-sq>
+reorder-after <n>
+<n-j-sq>
+reorder-after <r>
+<r-r-sq>
+reorder-after <s>
+<s-h-sq>
+reorder-after <t>
+<t-h-sq>
+reorder-after <x>
+<x-h-sq>
+reorder-after <z>
+<z-h-sq>
+
+reorder-after <U0063>
+<U00E7> <ccedilla>;<CDI>;<MIN>;IGNORE
+reorder-after <U0043>
+<U00C7> <ccedilla>;<CDI>;<CAP>;IGNORE
+reorder-after <U0064>
+<d-h> <d-h-sq>;<PCT>;<MIN>;IGNORE
+<d-H> <d-h-sq>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0044>
+<D-H> <d-h-sq>;<PCT>;<CAP>;IGNORE
+<D-h> <d-h-sq>;<PCT>;<CAP-MIN>;IGNORE
+reorder-after <U0065>
+<U00EB> <ediaeresis>;<REU>;<MIN>;IGNORE
+reorder-after <U0045>
+<U00CB> <ediaeresis>;<REU>;<CAP>;IGNORE
+reorder-after <U0067>
+<g-j> <g-j-sq>;<PCT>;<MIN>;IGNORE
+<g-J> <g-j-sq>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0047>
+<G-J> <g-j-sq>;<PCT>;<CAP>;IGNORE
+<G-j> <g-j-sq>;<PCT>;<CAP-MIN>;IGNORE
+reorder-after <U006C>
+<l-l> <l-l-sq>;<PCT>;<MIN>;IGNORE
+<l-L> <l-l-sq>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004C>
+<L-L> <l-l-sq>;<PCT>;<CAP>;IGNORE
+<L-l> <l-l-sq>;<PCT>;<CAP-MIN>;IGNORE
+reorder-after <U006E>
+<n-j> <n-j-sq>;<PCT>;<MIN>;IGNORE
+<n-J> <n-j-sq>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004E>
+<N-J> <n-j-sq>;<PCT>;<CAP>;IGNORE
+<N-j> <n-j-sq>;<PCT>;<CAP-MIN>;IGNORE
+reorder-after <U0072>
+<r-r> <r-r-sq>;<PCT>;<MIN>;IGNORE
+<r-R> <r-r-sq>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0052>
+<R-R> <r-r-sq>;<PCT>;<CAP>;IGNORE
+<R-r> <r-r-sq>;<PCT>;<CAP-MIN>;IGNORE
+reorder-after <U0074>
+<t-h> <t-h-sq>;<PCT>;<MIN>;IGNORE
+<t-H> <t-h-sq>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0054>
+<T-H> <t-h-sq>;<PCT>;<CAP>;IGNORE
+<T-h> <t-h-sq>;<PCT>;<CAP-MIN>;IGNORE
+reorder-after <U0078>
+<x-h> <x-h-sq>;<PCT>;<MIN>;IGNORE
+<x-H> <x-h-sq>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0058>
+<X-H> <x-h-sq>;<PCT>;<CAP>;IGNORE
+<X-h> <x-h-sq>;<PCT>;<CAP-MIN>;IGNORE
+reorder-after <U007A>
+<z-h> <z-h-sq>;<PCT>;<MIN>;IGNORE
+<z-H> <z-h-sq>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U005A>
+<Z-H> <z-h-sq>;<PCT>;<CAP>;IGNORE
+<Z-h> <z-h-sq>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-end
+
END LC_COLLATE
LC_MONETARY
diff --git a/localedata/locales/st_ZA b/localedata/locales/st_ZA
index 004d8d7181..798de4cf66 100644
--- a/localedata/locales/st_ZA
+++ b/localedata/locales/st_ZA
@@ -2,22 +2,32 @@ escape_char /
comment_char %
% ChangeLog
+% 0.2 (2004-11-03):
+% 2004-11-02 Dwayne Bailey <dwayne@translate.org.za>
+% - Change all contact information
+% - Change %e in date_fmt and d_t_fmt to %-e
+% - Remove .* from yes/noexpr
+% 2004-03-30 Dwayne Bailey <dwayne@translate.org.za>
+% - Added country_ab2/3, country_num
+% - Added country_car
+% 2004-03-29 Dwayne Bailey <dwayne@translate.org.za>
+% - Added lang_ab and lang_term
% 0.1 (2003-04-21):
% - Initial Sotho locale for South Africa
% by Zuza Software Foundation
LC_IDENTIFICATION
title "Sotho locale for South Africa"
-source "Zuza Software Foundation"
-address "PO Box 13412, Mowbray, 7705, South Africa"
+source "Zuza Software Foundation (Translate.org.za)"
+address "PO Box 28364, Sunnyside, 0132, South Africa"
contact "Dwayne Bailey"
email "dwayne@translate.org.za"
-tel "+27 (0)21 448 9265"
-fax "+27 (0)21 448 9574"
+tel "+27 12 343 0389"
+fax "+27 12 343 0389"
language "Sotho"
territory "South Africa"
-revision "0.1"
-date "2003-04-21"
+revision "0.2"
+date "2004-11-03"
%
category "st_ZA:2003";LC_IDENTIFICATION
category "st_ZA:2003";LC_CTYPE
@@ -101,10 +111,11 @@ mon "<U0050><U0068><U0065><U0073><U0065><U006B><U0067><U006F><U006E><U00
"<U0054><U0073><U0068><U0069><U0074><U0077><U0065>"
% Abreviated date and time representation to be referenced by the "%c" field descriptor -
-d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-%
+d_t_fmt "<U0025><U0061><U0020><U0025><U002D><U0065><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+
% "%a" (short weekday name),
-% "%d" (day of month as a decimal number),
+% "%-e" (day of month as a decimal number),
% "%b" (short month name),
% "%Y" (year with century as a decimal number),
% "%T" (24-hour clock time in format HH:MM:SS),
@@ -127,14 +138,14 @@ t_fmt_ampm ""
% The "" means that this format is not supported.
% Date representation not described in ISO/IEC 14652. Comes out as -
-% "%a %b %e %H:%M:%S %Z %Y" which is default "date" command output
-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+% "%a %b %-e %H:%M:%S %Z %Y" which is default "date" command output
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U002D><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
%
% %a - abbreviated weekday name,
% %b - abreviated month name,
-% %e - day of month as a decimal number with leading space (1 to 31),
+% %-e - day of month as a decimal number without leading space (1 to 31),
% %H - hour (24-hour clock) as a decimal number (00 to 23),
% %M - minute as a decimal number (00 to 59),
% %S - seconds as a decimal number (00 to 59),
@@ -146,12 +157,12 @@ END LC_TIME
LC_MESSAGES
% FIXME: Check both of these
% The affirmative response -
-% "^[yY].*"
-yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
+% "^[yY]"
+yesexpr "<U005E><U005B><U0079><U0059><U005D>"
% The negative response -
-% "^[nN].*"
-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+% "^[nN]"
+noexpr "<U005E><U005B><U006E><U004E><U005D>"
END LC_MESSAGES
LC_PAPER
@@ -204,21 +215,22 @@ country_name "<U0041><U0066><U0072><U0069><U006B><U0061><U0020><U0042><U006F><U0
% Abbreviated country postal name - "ZA"
country_post "<U005A><U0041>"
-% ISO 3166 two letter country abbreviation - "ZA"
-country_ab2 "<U005A><U0041>"
-
% FIXME define the following correctly
-% country_ab3 ""
-% country_car ""
% country_isbn ""
-% country_num
% Language name in Sotho - "Sesotho"
lang_name "<U0053><U0065><U0073><U006F><U0074><U0068><U006F>"
-% FIXME define the following correctly
-% lang_ab ""
-% lang_term ""
+% UN Geneve 1949:68 Distinguishing signs of vehicles in international traffic
+% http://www.unece.org/trans/conventn/disting-signs-5-2001.pdf
+% "ZA"
+country_car "<U005A><U0041>"
+
+% ISO 639 two and three letter language names
+% see http://www.loc.gov/standards/iso639-2/englangn.html
+% "st", "sot"
+lang_ab "<U0073><U0074>"
+lang_term "<U0073><U006F><U0074>"
% Representation of postal addresses (minus the addressee's name) in South
% Africa. (Ignored for now)
@@ -250,6 +262,13 @@ postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
% "country designation for the <country_post> keyword",
% "end of line
%
-country_num 710
+
+% ISO 3166 country number and 2 and 3 letter abreviations
+% http://www.unicode.org/onlinedat/countries.html
+% "ZA", "ZAF"
+country_num 710
+country_ab2 "<U005A><U0041>"
+country_ab3 "<U005A><U0041><U0046>"
+
END LC_ADDRESS
diff --git a/localedata/locales/tg_TJ b/localedata/locales/tg_TJ
index c288a0d88c..3f9b58a1fb 100644
--- a/localedata/locales/tg_TJ
+++ b/localedata/locales/tg_TJ
@@ -2,16 +2,16 @@ comment_char %
escape_char /
%
% Tajik Language Locale for Tajikistan
-% Source:
+% Source:
% Contact: Pablo Saratxaga, Roger Kovacs
% Email: <pablo@mandrakesoft.com>, <ROGERKO@micromotion.com>
% Language: tg
% Territory: TJ
-% Revision: 0.3
-% Date: 2001-01-28
+% Revision: 0.4
+% Date: 2004-01-09
% Application: general
% Users: general
-% Charset: KOI8-T
+% Charset: UTF-8
% Distribution and use is free, also
% for commercial purposes.
@@ -31,8 +31,8 @@ tel ""
fax ""
language "Tajik"
territory "Tajikistan"
-revision "0.3"
-date "2001-01-28"
+revision "0.4"
+date "2004-01-09"
category "tg_TJ:2000";LC_IDENTIFICATION
category "tg_TJ:2000";LC_CTYPE
@@ -121,7 +121,7 @@ END LC_COLLATE
LC_MESSAGES
yesstr "<U0434><U0430>"
nostr "<U043D><U0435><U0442>"
-yesexpr "<U005E><U005B><U0414><U0434><U0059><U0079><U005D><U002E><U002A>"
+yesexpr "<U005E><U005B><U04B2><U04B3><U0425><U0445><U0414><U0434><U0059><U0079><U005D><U002E><U002A>"
noexpr "<U005E><U005B><U041D><U043D><U004E><U006E><U005D><U002E><U002A>"
END LC_MESSAGES
@@ -227,3 +227,4 @@ LC_TELEPHONE
% FIXME
copy "en_DK"
END LC_TELEPHONE
+
diff --git a/localedata/locales/wa_BE b/localedata/locales/wa_BE
index 061e328421..63537b0d1a 100644
--- a/localedata/locales/wa_BE
+++ b/localedata/locales/wa_BE
@@ -1,20 +1,20 @@
comment_char %
escape_char /
-% charset "ISO_8859-1:1987"
+% charset "UTF-8"
% Distribution and use is free, also for commercial purposes.
LC_IDENTIFICATION
title "Walloon Language Locale for Belgium"
source "Djan SACRE"
-contact "Djan SACRE, Pablo Saratxaga"
-email "Djan_Sacre@skynet.be, pablo@mandrakesoft.com"
+contact "Pablo Saratxaga"
+email "pablo@mandrakesoft.com"
address ""
tel ""
fax ""
language "Walloon"
territory "Belgium"
-revision "0.7"
-date "2002-02-11"
+revision "0.9"
+date "2003-08-25"
category i18n:2000;LC_IDENTIFICATION
category i18n:2000;LC_COLLATE
@@ -102,22 +102,22 @@ copy "fr_BE"
END LC_TELEPHONE
% COMINTAIRE: a çu ki dji sai, i gn a nou rascourti _oficir_
-% po les moes et les djo=FBs.
+% po les moes et les djoûs.
% Donk, dji fwai come ça _mi_ shonne lodjike.
%
-% Po les rascoutis, on a métu "djn" po djun, et "djl" po djulete.
+% Po les rascoutis, on a metou "djn" po djun, et "djl" po djulete.
LC_TIME
-abday "<U0064><U00EE><U006D>";"<U006C><U006F><U006E>";/
- "<U006D><U00E5><U0072>";"<U006D><U0065><U0072>";/
- "<U0064><U006A><U0075>";"<U0076><U0069><U006E>";/
+abday "<U0064><U0069><U006D>";"<U006C><U006F><U006E>";/
+ "<U006D><U00E5><U0072>";"<U006D><U0069><U0065>";/
+ "<U0064><U006A><U0075>";"<U0076><U00E9><U006E>";/
"<U0073><U0065><U006D>"
-day "<U0064><U00EE><U006D><U0065><U0067><U006E><U0065>";/
+day "<U0064><U0069><U006D><U0065><U0067><U006E><U0065>";/
"<U006C><U006F><U006E><U0064><U0069>";/
"<U006D><U00E5><U0072><U0064><U0069>";/
- "<U006D><U0065><U0072><U006B><U0069><U0064><U0069>";/
+ "<U006D><U0069><U0065><U0072><U006B><U0069><U0064><U0069>";/
"<U0064><U006A><U0075><U0064><U0069>";/
- "<U0076><U0069><U006E><U0072><U0064><U0069>";/
+ "<U0076><U00E9><U006E><U0072><U0064><U0069>";/
"<U0073><U0065><U006D><U0064><U0069>"
abmon "<U0064><U006A><U0061>";"<U0066><U0065><U0076>";/
"<U006D><U00E5><U0073>";"<U0061><U0076><U0072>";/
@@ -137,8 +137,8 @@ mon "<U0064><U006A><U0061><U006E><U0076><U00EE>";/
"<U006F><U0063><U0074><U00F4><U0062><U0065>";/
"<U006E><U00F4><U0076><U0069><U006D><U0062><U0065>";/
"<U0064><U0065><U0063><U0069><U006D><U0062><U0065>"
-% Pol cogne des dates (li longue cogne), c' e-st on pô målåjhey, ca i fåt
-% stitchi on "di" ou on "d'" pa dvant li no do moes. Donk:
+% Pol cogne des dates (li longue cogne), c' est on pô målåjhey, ca i fåt
+% stitchî on "di" ou on "d'" pa dvant li no do moes. Donk:
% "Li prumî" ou "Li 1 di djanvî 1999"
% di fevrî
% di måss
@@ -151,7 +151,7 @@ mon "<U0064><U006A><U0061><U006E><U0076><U00EE>";/
% d' octôbe
% di nôvimbe
% di decimbe
-% Est çu ki c' est possibe d' avu "di" ou "d'" sorlon ki li no do moes
+% Est çki c' est possibe d' aveur "di" ou "d'" sorlon ki li no do moes
% cmince avou ene voyale ou ene cossoune?
%
% Neni :-(
diff --git a/localedata/locales/xh_ZA b/localedata/locales/xh_ZA
index 62f0554a4d..806f87820b 100644
--- a/localedata/locales/xh_ZA
+++ b/localedata/locales/xh_ZA
@@ -2,21 +2,34 @@ escape_char /
comment_char %
% ChangeLog
+% 0.2 (2004-11-02):
+% 2004-11-01 Dwayne Bailey <dwayne@translate.org.za>
+% - Change all contact information
+% - d_t_fmt, date_fmt cahnged day number %e to %-e to remove
+% space padding in day.
+% - Remove .* from yes/noexpr
+% 2004-03-30 Dwayne Bailey <dwayne@translate.org.za>
+% - Added country_ab2/3, country_num
+% - Added country_car
+% 2004-03-29 Dwayne Bailey <dwayne@translate.org.za>
+% - Added lang_ab and lang_term
+% 2004-02-27 Dwayne Bailey <dwayne@translate.org.za>
+% - Add lang_name
% 0.1 (2003-05-08):
-% - Initial Xhosa locale by Zuza Software Foundation
+% - Initial Xhosa locale by Zuza Software Foundation
LC_IDENTIFICATION
title "Xhosa locale for South Africa"
-source "Zuza Software Foundation"
-address "PO Box 13412, Mowbray, 7705, South Africa"
+source "Zuza Software Foundation (Translate.org.za)"
+address "PO Box 28364, Sunnyside, 0132, South Africa"
contact "Dwayne Bailey"
email "dwayne@translate.org.za"
-tel "+27 (0)21 448 9265"
-fax "+27 (0)21 448 9574"
+tel "+27 12 343 8389"
+fax "+27 12 343 0389"
language "Xhosa"
territory "South Africa"
-revision "0.1"
-date "2003-05-08"
+revision "0.2"
+date "2004-11-02"
%
category "xh_ZA:2003";LC_IDENTIFICATION
category "xh_ZA:2003";LC_CTYPE
@@ -99,9 +112,9 @@ mon "<U004A><U0061><U006E><U0079><U0075><U0077><U0061><U0072><U0069>";/
"<U0044><U0069><U0073><U0065><U006D><U0062><U0061>"
%
% Abreviated date and time representation to be referenced by the "%c" field descriptor -
-d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+d_t_fmt "<U0025><U0061><U0020><U0025><U002D><U0065><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
% "%a" (weekday name),
-% "%d" (day of month as a decimal number),
+% "%-e" (day of month as a decimal number),
% "%b" (month name),
% "%Y" (year with century as a decimal number),
% "%T" (24-hour clock time in format HH:MM:SS),
@@ -125,8 +138,8 @@ am_pm "";""
t_fmt_ampm ""
%
% Date representation not described in ISO/IEC 14652.
-% Comes out as - "%a %b %e %H:%M:%S %Z %Y"
-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+% Comes out as - "%a %b %-e %H:%M:%S %Z %Y"
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U002D><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
% which is:
@@ -143,12 +156,12 @@ END LC_TIME
LC_MESSAGES
% The affirmative response -
-% "^[yYeE].*"
-yesexpr "<U005E><U005B><U0079><U0059><U0065><U0045><U005D><U002E><U002A>"
+% "^[yYeE]"
+yesexpr "<U005E><U005B><U0079><U0059><U0065><U0045><U005D>"
%
% The negative response -
-% "^[nNhH].*"
-noexpr "<U005E><U005B><U006E><U004E><U0068><U0048><U005D><U002E><U002A>"
+% "^[nNhH]"
+noexpr "<U005E><U005B><U006E><U004E><U0068><U0048><U005D>"
%
END LC_MESSAGES
@@ -198,9 +211,19 @@ country_name "<U004D><U007A><U0061><U006E><U0074><U0073><U0069><U0020>/
% Abbreviated country postal name - "ZA"
country_post "<U005A><U0041>"
%
-% ISO 3166 two letter country abbreviation - "ZA"
-country_ab2 "<U005A><U0041>"
-%
+% Language name in Sotho - "IsiXhosa"
+lang_name "<U0049><U0073><U0069><U0058><U0068><U006F><U0073><U0061>"
+
+% UN Geneve 1949:68 Distinguishing signs of vehicles in international traffic
+% http://www.unece.org/trans/conventn/disting-signs-5-2001.pdf
+% "ZA"
+country_car "<U005A><U0041>"
+
+% ISO 639 two and three letter language names
+% see http://www.loc.gov/standards/iso639-2/englangn.html
+lang_ab "<U0078><U0068>"
+lang_term "<U0078><U0068><U006F>"
+
% Representation of postal addresses (minus the addressee's name) in South
% Africa. (Ignored for now)
postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
@@ -231,7 +254,13 @@ postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
% "country designation for the <country_post> keyword",
% "end of line
%
-country_ab3 "<U005A><U0041><U0046>"
-country_num 710
+
+% ISO 3166 country number and 2 and 3 letter abreviations
+% http://www.unicode.org/onlinedat/countries.html
+% "ZA", "ZAF"
+country_num 710
+country_ab2 "<U005A><U0041>"
+country_ab3 "<U005A><U0041><U0046>"
+
END LC_ADDRESS
diff --git a/localedata/locales/yi_US b/localedata/locales/yi_US
index f993d0c677..625758b821 100644
--- a/localedata/locales/yi_US
+++ b/localedata/locales/yi_US
@@ -1,7 +1,10 @@
comment_char %
escape_char /
-% charset "CP1255"
+% charset "UTF-8"
% Distribution and use is free, also for commercial purposes.
+%
+% 2003-08-16: corrections from Raphael Finkel <raphael@cs.uky.edu>
+%
LC_IDENTIFICATION
title "Yiddish Language locale"
@@ -13,8 +16,8 @@ tel ""
fax ""
language "Yiddish"
territory "USA"
-revision "0.3"
-date "2001-01-28"
+revision "0.4"
+date "2003-08-16"
category "yi_US:2000";LC_IDENTIFICATION
category "yi_US:2000";LC_COLLATE
@@ -39,15 +42,15 @@ LC_ADDRESS
postal_fmt "<U0025><U0064><U0025><U004E><U0025><U0066><U0025><U004E><U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E>/
<U0025><U0073><U0020><U0025><U0068><U0020><U0035><U0065><U0020><U0025><U0072><U0025><U004E>/
<U0025><U0043><U0025><U007A><U0020><U0025><U0054><U0025><U004E><U0025><U0063><U0025><U004E>"
-% FIXME country_name "United States" in Yiddish?
-% FIXME country_post "US" for United States?
+country_name "<U05D3><U05D9><U0020><U05E4><U05BF><U05D0><U05E8><U05D0><U05F2><U05E0><U05D9><U05E7><U05D8><U05E2><U0020><U05E9><U05D8><U05D0><U05B7><U05D8><U05DF>"
+country_post "USA"
country_ab2 "US"
country_ab3 "USA"
country_num 840
country_car "USA"
% FIXME Check which isbn for Yiddish in USA
country_isbn "0"
-% FIXME lang_name yiddish in yiddish?
+lang_name "<U05D9><U05D9><U05B4><U05D3><U05D9><U05E9>"
lang_ab "yi"
lang_term "yid"
lang_lib "yid"
@@ -96,19 +99,19 @@ reorder-after <shin>
<t-m-yi>
reorder-after <U05D1>
-<B+'H-> <b-h-yi>;<PCT>;<MIN>;IGNORE
+<B+'H-> <b-h-yi>;<PCT>;IGNORE;IGNORE
reorder-after <U05D5>
-<05F0> "<vav><vav>";"<LIG><LIG>";IGNORE;IGNORE
-<05F1> "<vav><yod>";"<LIG><LIG>";IGNORE;IGNORE
+<U05F0> "<vav><vav>";"<LIG><LIG>";IGNORE;IGNORE
+<U05F1> "<vav><yod>";"<LIG><LIG>";IGNORE;IGNORE
reorder-after <U05D9>
-<05F2> "<yod><yod>";"<LIG><LIG>";IGNORE;IGNORE
-<K+.MH> <k-m-yi>;<PCT>;<MIN>;IGNORE
+<U05F2> "<yod><yod>";"<LIG><LIG>";IGNORE;IGNORE
+<K+.MH> <k-m-yi>;<PCT>;IGNORE;IGNORE
reorder-after <U05E2>
-<P+.MH> <p-m-yi>;<PCT>;<MIN>;IGNORE
-<P+'H-> <p-h-yi>;<PCT>;<MIN>;IGNORE
+<P+.MH> <p-m-yi>;<PCT>;IGNORE;IGNORE
+<P+'H-> <p-h-yi>;<PCT>;IGNORE;IGNORE
reorder-after <U05E9>
-<Sh'H.L> <s-h-yi>;<PCT>;<MIN>;IGNORE
-<T+.MH> <t-m-yi>;<PCT>;<MIN>;IGNORE
+<Sh'H.L> <s-h-yi>;<PCT>;IGNORE;IGNORE
+<T+.MH> <t-m-yi>;<PCT>;IGNORE;IGNORE
reorder-end
@@ -166,17 +169,17 @@ mon "<U05D9><U05D0><U05B7><U05E0><U05D5><U05D0><U05B7><U05E8>";/
"<U05DE><U05F2><U05B7>";/
"<U05D9><U05D5><U05E0><U05D9>";/
"<U05D9><U05D5><U05DC><U05D9>";/
- "<U05D0><U05F1><U05D2><U05E1><U05D8>";/
+ "<U05D0><U05F1><U05D2><U05D5><U05E1><U05D8>";/
"<U05E1><U05E2><U05E4><U05BC><U05D8><U05E2><U05DE><U05D1><U05E2><U05E8>";/
"<U05D0><U05B8><U05E7><U05D8><U05D0><U05B8><U05D1><U05E2><U05E8>";/
- "<U05E0><U0041><U05B8><U05F0><U05E2><U05DE><U05D1><U05E2><U05E8>";/
- "<U05D3><U05E6><U05DE><U05D1><U05E8>"
-abmon "<U05D9><U05D0><U05B7><U05E0><U0027>";"<U05E4><U05BF><U05E2><U05D1><U0027>";/
- "<U05DE><U05D0><U05B7><U05E8><U0027>";"<U05D0><U05B7><U05E4><U05BC><U05E8><U0027>";/
- "<U05DE><U05F2><U05B7>";"<U05D9><U05D5><U05E0><U0027>";/
- "<U05D9><U05D5><U05DC><U0027>";"<U05D0><U05F1><U05D2><U0027>";/
- "<U05E1><U05E2><U05E4><U05BC><U0027>";"<U05D0><U05B8><U05E7><U05D8><U0027>";/
- "<U05E0><U05D0><U05B8><U05F0><U0027>";"<U05D3><U05E2><U05E6><U0027>"
+ "<U05E0><U05D0><U05B8><U05F0><U05E2><U05DE><U05D1><U05E2><U05E8>";/
+ "<U05D3><U05E2><U05E6><U05E2><U05DE><U05D1><U05E2><U05E8>"
+abmon "<U05D9><U05D0><U05B7><U05E0>";"<U05E4><U05BF><U05E2><U05D1>";/
+ "<U05DE><U05D0><U05B7><U05E8>";"<U05D0><U05B7><U05E4><U05BC><U05E8>";/
+ "<U05DE><U05F2><U05B7><U0020>";"<U05D9><U05D5><U05E0>";/
+ "<U05D9><U05D5><U05DC>";"<U05D0><U05F1><U05D2>";/
+ "<U05E1><U05E2><U05E4><U05BC>";"<U05D0><U05B8><U05E7><U05D8>";/
+ "<U05E0><U05D0><U05B8><U05F0>";"<U05D3><U05E2><U05E6>"
d_t_fmt "<U0025><U005A><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0059><U0020><U0025><U0062><U0020><U0025><U0064><U0020><U0025><U0061>"
d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
t_fmt "<U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
@@ -188,7 +191,7 @@ END LC_TIME
LC_MESSAGES
yesexpr "<U005E><U005B><U0059><U0079><U05D9><U005D><U002E><U002A>"
noexpr "<U005E><U005B><U004E><U006E><U05E0><U05E7><U005D><U002E><U002A>"
-yesstr "<U05D9><U05D0><U05B7>"
+yesstr "<U05D9><U05D0><U05B8>"
nostr "<U05E7><U05F2><U05DF>"
END LC_MESSAGES
diff --git a/localedata/locales/zh_CN b/localedata/locales/zh_CN
index 152411da10..89fcf3b819 100644
--- a/localedata/locales/zh_CN
+++ b/localedata/locales/zh_CN
@@ -128,9 +128,9 @@ am_pm "<U4E0A><U5348>";"<U4E0B><U5348>"
t_fmt_ampm "<U0025><U0070><U0020><U0025><U0049><U65F6><U0025><U004D><U5206><U0025><U0053><U79D2>"
-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-<U0025><U005A><U0020><U0025><U0059>"
+date_fmt "<U0025><U0059><U5E74><U0020><U0025><U006D><U6708><U0020>/
+<U0025><U0064><U65E5><U0020><U0025><U0041><U0020><U0025><U0048><U003A>/
+<U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A>"
END LC_TIME
LC_MESSAGES
diff --git a/localedata/locales/zu_ZA b/localedata/locales/zu_ZA
index 7fb25bb6ec..45da1e5b79 100644
--- a/localedata/locales/zu_ZA
+++ b/localedata/locales/zu_ZA
@@ -2,21 +2,37 @@ escape_char /
comment_char %
% ChangeLog
+% 0.2 (2004-10-28):
+% 2004-10-28 Dwayne Bailey <dwayne@translate.org.za>
+% - Added lang_lib
+% - Reverted version number to 0.2 - needs more testing
+% 2004-10-27 Dwayne Bailey <dwayne@translate.org.za>
+% - Add Translate.org.za to "source" for clarity
+% - Update all contact details
+% - Remove .* from yes/noexpr
+% 2004-03-30 Dwayne Bailey <dwayne@translate.org.za>
+% - Added country_ab2/3, country_num
+% - Added country_car
+% 2004-03-29 Dwayne Bailey <dwayne@translate.org.za>
+% - Added lang_ab and lang_term
+% 2004-02-27 Dwayne Bailey <dwayne@translate.org.za>
+% - Correct capatilisation of lang_name
% 0.1 (2003-04-19):
-% - Initial Zulu locale by Zuza Software Foundation
+% 2003-04-19:
+% - Initial Zulu locale by Zuza Software Foundation
LC_IDENTIFICATION
title "Zulu locale for South Africa"
-source "Zuza Software Foundation"
-address "PO Box 13412, Mowbray, 7705, South Africa"
+source "Zuza Software Foundation (Translate.org.za)"
+address "Box 28364, Sunnyside, 0132, South Africa"
contact "Dwayne Bailey"
email "dwayne@translate.org.za"
-tel "+27 (0)21 448 9265"
-fax "+27 (0)21 448 9574"
+tel "+27 12 343 0389"
+fax "+27 12 448 0389"
language "Zulu"
territory "South Africa"
-revision "0.1"
-date "2003-04-19"
+revision "0.2"
+date "2004-10-28"
%
category "zu_ZA:2003";LC_IDENTIFICATION
category "zu_ZA:2003";LC_CTYPE
@@ -145,13 +161,13 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_MESSAGES
-yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
+yesexpr "<U005E><U005B><U0079><U0059><U005D>"
% The affirmative response -
-% "^[yY].*"
+% "^[yY]"
%
-noexpr "<U005E><U005B><U006E><U004E><U0063><U0043><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U006E><U004E><U0063><U0043><U005D>"
% The negative response -
-% "^[nNcC].*"
+% "^[nNcC]"
%
END LC_MESSAGES
@@ -201,12 +217,21 @@ country_name "<U004D><U007A><U0061><U006E><U0073><U0069><U0020>/
country_post "<U005A><U0041>"
% Abbreviated country postal name - "ZA"
%
-country_ab2 "<U005A><U0041>"
-% ISO 3166 two letter country abbreviation - "ZA"
-%
-lang_name "<U0049><U0073><U0069><U007A><U0075><U006C><U0075>"
-% Language name in Zulu - "Isizulu"
-%
+lang_name "<U0049><U0073><U0069><U005A><U0075><U006C><U0075>"
+% Language name in Zulu - "IsiZulu"
+
+% UN Geneve 1949:68 Distinguishing signs of vehicles in international traffic
+% http://www.unece.org/trans/conventn/disting-signs-5-2001.pdf
+% "ZA"
+country_car "<U005A><U0041>"
+
+% ISO 639 two and three letter language names
+% see http://www.loc.gov/standards/iso639-2/englangn.html
+% "zu", "zul", "zul"
+lang_ab "<U007A><U0075>"
+lang_term "<U007A><U0075><U006C>"
+lang_lib "<U007A><U0075><U006C>"
+
postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
@@ -237,7 +262,13 @@ postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
% "country designation for the <country_post> keyword",
% "end of line
%
-country_ab3 "<U005A><U0041><U0046>"
-country_num 710
+
+% ISO 3166 country number and 2 and 3 letter abreviations
+% http://www.unicode.org/onlinedat/countries.html
+% "ZA", "ZAF"
+country_num 710
+country_ab2 "<U005A><U0041>"
+country_ab3 "<U005A><U0041><U0046>"
+
END LC_ADDRESS
diff --git a/malloc/Makefile b/malloc/Makefile
index ca427077f3..c479da39b7 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -27,7 +27,7 @@ all:
dist-headers := malloc.h
headers := $(dist-headers) obstack.h mcheck.h
tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \
- tst-mallocstate tst-mcheck
+ tst-mallocstate tst-mcheck tst-mallocfork
test-srcs = tst-mtrace
distribute = thread-m.h mtrace.pl mcheck-init.c stackinfo.h memusage.h \
diff --git a/malloc/arena.c b/malloc/arena.c
index 8db255966d..a844392a6b 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -210,6 +210,10 @@ free_atfork(Void_t* mem, const Void_t *caller)
(void)mutex_unlock(&ar_ptr->mutex);
}
+
+/* Counter for number of times the list is locked by the same thread. */
+static unsigned int atfork_recursive_cntr;
+
/* The following two functions are registered via thread_atfork() to
make sure that the mutexes remain in a consistent state in the
fork()ed version of a thread. Also adapt the malloc and free hooks
@@ -223,7 +227,18 @@ ptmalloc_lock_all (void)
if(__malloc_initialized < 1)
return;
- (void)mutex_lock(&list_lock);
+ if (mutex_trylock(&list_lock))
+ {
+ Void_t *my_arena;
+ tsd_getspecific(arena_key, my_arena);
+ if (my_arena == ATFORK_ARENA_PTR)
+ /* This is the same thread which already locks the global list.
+ Just bump the counter. */
+ goto out;
+
+ /* This thread has to wait its turn. */
+ (void)mutex_lock(&list_lock);
+ }
for(ar_ptr = &main_arena;;) {
(void)mutex_lock(&ar_ptr->mutex);
ar_ptr = ar_ptr->next;
@@ -236,6 +251,8 @@ ptmalloc_lock_all (void)
/* Only the current thread may perform malloc/free calls now. */
tsd_getspecific(arena_key, save_arena);
tsd_setspecific(arena_key, ATFORK_ARENA_PTR);
+ out:
+ ++atfork_recursive_cntr;
}
static void
@@ -245,6 +262,8 @@ ptmalloc_unlock_all (void)
if(__malloc_initialized < 1)
return;
+ if (--atfork_recursive_cntr != 0)
+ return;
tsd_setspecific(arena_key, save_arena);
__malloc_hook = save_malloc_hook;
__free_hook = save_free_hook;
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 64050b4266..594d9c4d7a 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -4618,7 +4618,7 @@ _int_realloc(mstate av, Void_t* oldmem, size_t bytes)
if (__builtin_expect (oldp->size <= 2 * SIZE_SZ, 0)
|| __builtin_expect (oldsize >= av->system_mem, 0))
{
- errstr = "realloc(): invalid size";
+ errstr = "realloc(): invalid old size";
goto errout;
}
diff --git a/malloc/memusage.c b/malloc/memusage.c
index 49bcc6f289..f586ea61ba 100644
--- a/malloc/memusage.c
+++ b/malloc/memusage.c
@@ -793,14 +793,21 @@ dest (void)
\e[00;34m free|\e[0m %10lu %12llu\n",
(unsigned long long int) grand_total, (unsigned long int) peak_heap,
(unsigned long int) peak_stack,
- calls[idx_malloc], (unsigned long long int) total[idx_malloc],
- failed[idx_malloc] ? "\e[01;41m" : "", failed[idx_malloc],
- calls[idx_realloc], (unsigned long long int) total[idx_realloc],
- failed[idx_realloc] ? "\e[01;41m" : "", failed[idx_realloc],
- inplace, decreasing,
- calls[idx_calloc], (unsigned long long int) total[idx_calloc],
- failed[idx_calloc] ? "\e[01;41m" : "", failed[idx_calloc],
- calls[idx_free], (unsigned long long int) total[idx_free]);
+ (unsigned long int) calls[idx_malloc],
+ (unsigned long long int) total[idx_malloc],
+ failed[idx_malloc] ? "\e[01;41m" : "",
+ (unsigned long int) failed[idx_malloc],
+ (unsigned long int) calls[idx_realloc],
+ (unsigned long long int) total[idx_realloc],
+ failed[idx_realloc] ? "\e[01;41m" : "",
+ (unsigned long int) failed[idx_realloc],
+ (unsigned long int) inplace, (unsigned long int) decreasing,
+ (unsigned long int) calls[idx_calloc],
+ (unsigned long long int) total[idx_calloc],
+ failed[idx_calloc] ? "\e[01;41m" : "",
+ (unsigned long int) failed[idx_calloc],
+ (unsigned long int) calls[idx_free],
+ (unsigned long long int) total[idx_free]);
if (trace_mmap)
fprintf (stderr, "\
@@ -809,17 +816,28 @@ dest (void)
\e[00;34mmmap(a)|\e[0m %10lu %12llu %s%12lu\e[00;00m\n\
\e[00;34m mremap|\e[0m %10lu %12llu %s%12lu\e[00;00m (in place: %ld, dec: %ld)\n\
\e[00;34m munmap|\e[0m %10lu %12llu %s%12lu\e[00;00m\n",
- calls[idx_mmap_r], (unsigned long long int) total[idx_mmap_r],
- failed[idx_mmap_r] ? "\e[01;41m" : "", failed[idx_mmap_r],
- calls[idx_mmap_w], (unsigned long long int) total[idx_mmap_w],
- failed[idx_mmap_w] ? "\e[01;41m" : "", failed[idx_mmap_w],
- calls[idx_mmap_a], (unsigned long long int) total[idx_mmap_a],
- failed[idx_mmap_a] ? "\e[01;41m" : "", failed[idx_mmap_a],
- calls[idx_mremap], (unsigned long long int) total[idx_mremap],
- failed[idx_mremap] ? "\e[01;41m" : "", failed[idx_mremap],
- inplace_mremap, decreasing_mremap,
- calls[idx_munmap], (unsigned long long int) total[idx_munmap],
- failed[idx_munmap] ? "\e[01;41m" : "", failed[idx_munmap]);
+ (unsigned long int) calls[idx_mmap_r],
+ (unsigned long long int) total[idx_mmap_r],
+ failed[idx_mmap_r] ? "\e[01;41m" : "",
+ (unsigned long int) failed[idx_mmap_r],
+ (unsigned long int) calls[idx_mmap_w],
+ (unsigned long long int) total[idx_mmap_w],
+ failed[idx_mmap_w] ? "\e[01;41m" : "",
+ (unsigned long int) failed[idx_mmap_w],
+ (unsigned long int) calls[idx_mmap_a],
+ (unsigned long long int) total[idx_mmap_a],
+ failed[idx_mmap_a] ? "\e[01;41m" : "",
+ (unsigned long int) failed[idx_mmap_a],
+ (unsigned long int) calls[idx_mremap],
+ (unsigned long long int) total[idx_mremap],
+ failed[idx_mremap] ? "\e[01;41m" : "",
+ (unsigned long int) failed[idx_mremap],
+ (unsigned long int) inplace_mremap,
+ (unsigned long int) decreasing_mremap,
+ (unsigned long int) calls[idx_munmap],
+ (unsigned long long int) total[idx_munmap],
+ failed[idx_munmap] ? "\e[01;41m" : "",
+ (unsigned long int) failed[idx_munmap]);
/* Write out a histoogram of the sizes of the allocations. */
fprintf (stderr, "\e[01;32mHistogram for block sizes:\e[0;0m\n");
@@ -836,7 +854,7 @@ dest (void)
{
percent = (histogram[cnt / 16] * 100) / calls_total;
fprintf (stderr, "%5d-%-5d%12lu ", cnt, cnt + 15,
- histogram[cnt / 16]);
+ (unsigned long int) histogram[cnt / 16]);
if (percent == 0)
fputs (" <1% \e[41;37m", stderr);
else
@@ -853,7 +871,7 @@ dest (void)
if (large != 0)
{
percent = (large * 100) / calls_total;
- fprintf (stderr, " large %12lu ", large);
+ fprintf (stderr, " large %12lu ", (unsigned long int) large);
if (percent == 0)
fputs (" <1% \e[41;37m", stderr);
else
diff --git a/malloc/obstack.h b/malloc/obstack.h
index d18ef40b6e..03f6ccb2ce 100644
--- a/malloc/obstack.h
+++ b/malloc/obstack.h
@@ -1,5 +1,6 @@
/* obstack.h - object stack macros
- Copyright (C) 1988-1994,1996-1999,2003,2004 Free Software Foundation, Inc.
+ Copyright (C) 1988-1994,1996-1999,2003,2004,2005
+ Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
@@ -446,7 +447,7 @@ __extension__ \
(((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
# define obstack_int_grow_fast(h,aint) \
- (((int *) ((h)->next_free += sizeof (int)))[-1] = (aptr))
+ (((int *) ((h)->next_free += sizeof (int)))[-1] = (aint))
# define obstack_blank(h,length) \
( (h)->temp = (length), \
diff --git a/malloc/tst-mallocfork.c b/malloc/tst-mallocfork.c
new file mode 100644
index 0000000000..abbc9d83b6
--- /dev/null
+++ b/malloc/tst-mallocfork.c
@@ -0,0 +1,52 @@
+/* Derived from the test case in
+ http://sourceware.org/bugzilla/show_bug.cgi?id=838. */
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+static void
+sig_handler (int signum)
+{
+ pid_t child = fork ();
+ if (child == 0)
+ exit (0);
+ TEMP_FAILURE_RETRY (waitpid (child, NULL, 0));
+}
+
+static int
+do_test (void)
+{
+ pid_t parent = getpid ();
+
+ struct sigaction action;
+ sigemptyset (&action.sa_mask);
+ action.sa_handler = sig_handler;
+
+ malloc (sizeof (int));
+
+ if (sigaction (SIGALRM, &action, NULL) != 0)
+ {
+ puts ("sigaction failed");
+ return 1;
+ }
+
+ /* Create a child that sends the signal to be caught. */
+ pid_t child = fork ();
+ if (child == 0)
+ {
+ if (kill (parent, SIGALRM) == -1)
+ perror ("kill");
+ exit (0);
+ }
+
+ TEMP_FAILURE_RETRY (waitpid (child, NULL, 0));
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/manual/llio.texi b/manual/llio.texi
index 4ac6c5fa4f..863b3b4316 100644
--- a/manual/llio.texi
+++ b/manual/llio.texi
@@ -1582,11 +1582,13 @@ descriptors are checked to see if they are ready for writing; and the
conditions. You can pass a null pointer for any of these arguments if
you are not interested in checking for that kind of condition.
-A file descriptor is considered ready for reading if it is not at end of
-file. A server socket is considered ready for reading if there is a
-pending connection which can be accepted with @code{accept};
-@pxref{Accepting Connections}. A client socket is ready for writing when
-its connection is fully established; @pxref{Connecting}.
+A file descriptor is considered ready for reading if a @code{read}
+call will not block. This usually includes the read offset being at
+the end of the file or there is an error to report. A server socket
+is considered ready for reading if there is a pending connection which
+can be accepted with @code{accept}; @pxref{Accepting Connections}. A
+client socket is ready for writing when its connection is fully
+established; @pxref{Connecting}.
``Exceptional conditions'' does not mean errors---errors are reported
immediately when an erroneous system call is executed, and do not
diff --git a/manual/memory.texi b/manual/memory.texi
index ee2cd75c44..0f28806a22 100644
--- a/manual/memory.texi
+++ b/manual/memory.texi
@@ -948,7 +948,7 @@ program.
#include <malloc.h>
/* Prototypes for our hooks. */
-static void *my_init_hook (void);
+static void my_init_hook (void);
static void *my_malloc_hook (size_t, const void *);
static void my_free_hook (void*, const void *);
@@ -984,7 +984,7 @@ my_malloc_hook (size_t size, const void *caller)
return result;
@}
-static void *
+static void
my_free_hook (void *ptr, const void *caller)
@{
/* Restore all old hooks */
diff --git a/manual/stdio.texi b/manual/stdio.texi
index 39fd4fb123..29de41a167 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -5067,14 +5067,11 @@ You should define the function to perform seek operations on the cookie
as:
@smallexample
-int @var{seeker} (void *@var{cookie}, fpos_t *@var{position}, int @var{whence})
+int @var{seeker} (void *@var{cookie}, off64_t *@var{position}, int @var{whence})
@end smallexample
For this function, the @var{position} and @var{whence} arguments are
-interpreted as for @code{fgetpos}; see @ref{Portable Positioning}. In
-the GNU library, @code{fpos_t} is equivalent to @code{off_t} or
-@code{long int}, and simply represents the number of bytes from the
-beginning of the file.
+interpreted as for @code{fgetpos}; see @ref{Portable Positioning}.
After doing the seek operation, your function should store the resulting
file position relative to the beginning of the file in @var{position}.
diff --git a/manual/time.texi b/manual/time.texi
index 7fc9448a32..9b87d3eed0 100644
--- a/manual/time.texi
+++ b/manual/time.texi
@@ -1179,6 +1179,9 @@ The abbreviated month name according to the current locale.
@item %B
The full month name according to the current locale.
+Using @code{%B} together with @code{%d} produces grammatically
+incorrect results for some locales.
+
@item %c
The preferred calendar time representation for the current locale.
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 8da47cb54c..c17d058c3b 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,38 @@
+2005-10-02 Jakub Jelinek <jakub@redhat.com>
+
+ * allocatestack.c (setxid_signal_thread): Need to use
+ atomic_compare_and_exchange_bool_acq.
+
+2005-10-01 Ulrich Drepper <drepper@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * descr.h: Define SETXID_BIT and SETXID_BITMASK. Adjust
+ CANCEL_RESTMASK.
+ (struct pthread): Move specific_used field to avoid padding.
+ Add setxid_futex field.
+ * init.c (sighandler_setxid): Reset setxid flag and release the
+ setxid futex.
+ * allocatestack.c (setxid_signal_thread): New function. Broken
+ out of the bodies of the two loops in __nptl_setxid. For undetached
+ threads check whether they are exiting and if yes, don't send a signal.
+ (__nptl_setxid): Simplify loops by using setxid_signal_thread.
+ * pthread_create.c (start_thread): For undetached threads, check
+ whether setxid bit is set. If yes, wait until signal has been
+ processed.
+
+ * allocatestack.c (STACK_VARIABLES): Initialize them.
+ * pthread_create.c (__pthread_create_2_1): Initialize pd.
+
+2004-09-02 Jakub Jelinek <jakub@redhat.com>
+
+ * pthread_cond_destroy.c (__pthread_cond_destroy): If there are
+ waiters, awake all waiters on the associated mutex.
+
+2005-09-22 Roland McGrath <roland@redhat.com>
+
+ * perf.c [__x86_64__] (HP_TIMING_NOW): New macro (copied from
+ ../sysdeps/x86_64/hp-timing.h).
+
2005-08-29 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_WAKE_OP,
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index fcb6c6e475..f0dddf051d 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -33,7 +34,7 @@
#ifndef NEED_SEPARATE_REGISTER_STACK
/* Most architectures have exactly one stack pointer. Some have more. */
-# define STACK_VARIABLES void *stackaddr
+# define STACK_VARIABLES void *stackaddr = NULL
/* How to pass the values to the 'create_thread' function. */
# define STACK_VARIABLES_ARGS stackaddr
@@ -52,7 +53,7 @@
/* We need two stacks. The kernel will place them but we have to tell
the kernel about the size of the reserved address space. */
-# define STACK_VARIABLES void *stackaddr; size_t stacksize
+# define STACK_VARIABLES void *stackaddr = NULL; size_t stacksize = 0
/* How to pass the values to the 'create_thread' function. */
# define STACK_VARIABLES_ARGS stackaddr, stacksize
@@ -817,6 +818,45 @@ __find_thread_by_id (pid_t tid)
}
#endif
+
+static void
+internal_function
+setxid_signal_thread (struct xid_command *cmdp, struct pthread *t)
+{
+ if (! IS_DETACHED (t))
+ {
+ int ch;
+ do
+ {
+ ch = t->cancelhandling;
+
+ /* If the thread is exiting right now, ignore it. */
+ if ((ch & EXITING_BITMASK) != 0)
+ return;
+ }
+ while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling,
+ ch | SETXID_BITMASK, ch));
+ }
+
+ int val;
+#if __ASSUME_TGKILL
+ val = INTERNAL_SYSCALL (tgkill, err, 3, THREAD_GETMEM (THREAD_SELF, pid),
+ t->tid, SIGSETXID);
+#else
+# ifdef __NR_tgkill
+ val = INTERNAL_SYSCALL (tgkill, err, 3, THREAD_GETMEM (THREAD_SELF, pid),
+ t->tid, SIGSETXID);
+ if (INTERNAL_SYSCALL_ERROR_P (val, err)
+ && INTERNAL_SYSCALL_ERRNO (val, err) == ENOSYS)
+# endif
+ val = INTERNAL_SYSCALL (tkill, err, 2, t->tid, SIGSETXID);
+#endif
+
+ if (!INTERNAL_SYSCALL_ERROR_P (val, err))
+ atomic_increment (&cmdp->cntr);
+}
+
+
int
attribute_hidden
__nptl_setxid (struct xid_command *cmdp)
@@ -836,54 +876,20 @@ __nptl_setxid (struct xid_command *cmdp)
list_for_each (runp, &stack_used)
{
struct pthread *t = list_entry (runp, struct pthread, list);
- if (t != self)
- {
- int val;
-#if __ASSUME_TGKILL
- val = INTERNAL_SYSCALL (tgkill, err, 3,
- THREAD_GETMEM (THREAD_SELF, pid),
- t->tid, SIGSETXID);
-#else
-# ifdef __NR_tgkill
- val = INTERNAL_SYSCALL (tgkill, err, 3,
- THREAD_GETMEM (THREAD_SELF, pid),
- t->tid, SIGSETXID);
- if (INTERNAL_SYSCALL_ERROR_P (val, err)
- && INTERNAL_SYSCALL_ERRNO (val, err) == ENOSYS)
-# endif
- val = INTERNAL_SYSCALL (tkill, err, 2, t->tid, SIGSETXID);
-#endif
+ if (t == self)
+ continue;
- if (!INTERNAL_SYSCALL_ERROR_P (val, err))
- atomic_increment (&cmdp->cntr);
- }
+ setxid_signal_thread (cmdp, t);
}
/* Now the list with threads using user-allocated stacks. */
list_for_each (runp, &__stack_user)
{
struct pthread *t = list_entry (runp, struct pthread, list);
- if (t != self)
- {
- int val;
-#if __ASSUME_TGKILL
- val = INTERNAL_SYSCALL (tgkill, err, 3,
- THREAD_GETMEM (THREAD_SELF, pid),
- t->tid, SIGSETXID);
-#else
-# ifdef __NR_tgkill
- val = INTERNAL_SYSCALL (tgkill, err, 3,
- THREAD_GETMEM (THREAD_SELF, pid),
- t->tid, SIGSETXID);
- if (INTERNAL_SYSCALL_ERROR_P (val, err)
- && INTERNAL_SYSCALL_ERRNO (val, err) == ENOSYS)
-# endif
- val = INTERNAL_SYSCALL (tkill, err, 2, t->tid, SIGSETXID);
-#endif
+ if (t == self)
+ continue;
- if (!INTERNAL_SYSCALL_ERROR_P (val, err))
- atomic_increment (&cmdp->cntr);
- }
+ setxid_signal_thread (cmdp, t);
}
int cur = cmdp->cntr;
diff --git a/nptl/descr.h b/nptl/descr.h
index 77251d5e45..aaef9bc621 100644
--- a/nptl/descr.h
+++ b/nptl/descr.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -161,8 +161,11 @@ struct pthread
/* Bit set if thread terminated and TCB is freed. */
#define TERMINATED_BIT 5
#define TERMINATED_BITMASK 0x20
+ /* Bit set if thread is supposed to change XID. */
+#define SETXID_BIT 6
+#define SETXID_BITMASK 0x40
/* Mask for the rest. Helps the compiler to optimize. */
-#define CANCEL_RESTMASK 0xffffffc0
+#define CANCEL_RESTMASK 0xffffff80
#define CANCEL_ENABLED_AND_CANCELED(value) \
(((value) & (CANCELSTATE_BITMASK | CANCELED_BITMASK | EXITING_BITMASK \
@@ -185,12 +188,12 @@ struct pthread
void *data;
} specific_1stblock[PTHREAD_KEY_2NDLEVEL_SIZE];
- /* Flag which is set when specific data is set. */
- bool specific_used;
-
/* Two-level array for the thread-specific data. */
struct pthread_key_data *specific[PTHREAD_KEY_1STLEVEL_SIZE];
+ /* Flag which is set when specific data is set. */
+ bool specific_used;
+
/* True if events must be reported. */
bool report_events;
@@ -203,6 +206,9 @@ struct pthread
/* Lock to synchronize access to the descriptor. */
lll_lock_t lock;
+ /* Lock for synchronizing setxid calls. */
+ lll_lock_t setxid_futex;
+
#if HP_TIMING_AVAIL
/* Offset of the CPU clock at start thread start time. */
hp_timing_t cpuclock_offset;
diff --git a/nptl/init.c b/nptl/init.c
index 86745af8d1..de704122d1 100644
--- a/nptl/init.c
+++ b/nptl/init.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -211,6 +211,15 @@ sighandler_setxid (int sig, siginfo_t *si, void *ctx)
if (atomic_decrement_val (&__xidcmd->cntr) == 0)
lll_futex_wake (&__xidcmd->cntr, 1);
+
+ /* Reset the SETXID flag. */
+ struct pthread *self = THREAD_SELF;
+ int flags = THREAD_GETMEM (self, cancelhandling);
+ THREAD_SETMEM (self, cancelhandling, flags & ~SETXID_BITMASK);
+
+ /* And release the futex. */
+ self->setxid_futex = 1;
+ lll_futex_wake (&self->setxid_futex, 1);
}
diff --git a/nptl/perf.c b/nptl/perf.c
index 5b920d719d..f0dbc29ca0 100644
--- a/nptl/perf.c
+++ b/nptl/perf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -705,6 +705,11 @@ clock_getcpuclockid (pid_t pid, clockid_t *clock_id)
#ifdef i386
#define HP_TIMING_NOW(Var) __asm__ __volatile__ ("rdtsc" : "=A" (Var))
+#elif defined __x86_64__
+# define HP_TIMING_NOW(Var) \
+ ({ unsigned int _hi, _lo; \
+ asm volatile ("rdtsc" : "=a" (_lo), "=d" (_hi)); \
+ (Var) = ((unsigned long long int) _hi << 32) | _lo; })
#elif defined __ia64__
#define HP_TIMING_NOW(Var) __asm__ __volatile__ ("mov %0=ar.itc" : "=r" (Var) : : "memory")
#else
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 122778bddf..f2f206be5a 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -314,6 +314,17 @@ start_thread (void *arg)
if (IS_DETACHED (pd))
/* Free the TCB. */
__free_tcb (pd);
+ else if (__builtin_expect (pd->cancelhandling & SETXID_BITMASK, 0))
+ {
+ /* Some other thread might call any of the setXid functions and expect
+ us to reply. In this case wait until we did that. */
+ do
+ lll_futex_wait (&pd->setxid_futex, 0);
+ while (pd->cancelhandling & SETXID_BITMASK);
+
+ /* Reset the value so that the stack can be reused. */
+ pd->setxid_futex = 0;
+ }
/* We cannot call '_exit' here. '_exit' will terminate the process.
@@ -354,7 +365,7 @@ __pthread_create_2_1 (newthread, attr, start_routine, arg)
accessing far-away memory. */
iattr = &default_attr;
- struct pthread *pd;
+ struct pthread *pd = NULL;
int err = ALLOCATE_STACK (iattr, &pd);
if (__builtin_expect (err != 0, 0))
/* Something went wrong. Maybe a parameter of the attributes is
diff --git a/nscd/dbg_log.c b/nscd/dbg_log.c
index afa06dcbe9..4b8843037b 100644
--- a/nscd/dbg_log.c
+++ b/nscd/dbg_log.c
@@ -44,7 +44,7 @@ init_logfile (void)
{
if (logfilename)
{
- dbgout = fopen (logfilename, "a");
+ dbgout = fopen64 (logfilename, "a");
return dbgout == NULL ? 0 : 1;
}
return 1;
diff --git a/nscd/nscd_getpw_r.c b/nscd/nscd_getpw_r.c
index 61a712c6b4..e8e4d7364f 100644
--- a/nscd/nscd_getpw_r.c
+++ b/nscd/nscd_getpw_r.c
@@ -227,8 +227,6 @@ nscd_getpw_r (const char *key, size_t keylen, request_type type,
mapped = NO_MAPPING;
}
- free (resultbuf);
-
goto retry;
}
diff --git a/posix/Makefile b/posix/Makefile
index cabc1d44d0..7bcd69b1c4 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -87,7 +87,7 @@ tests := tstgetopt testfnm runtests runptests \
tst-execvp1 tst-execvp2 tst-execlp1 tst-execlp2 \
tst-execv1 tst-execv2 tst-execl1 tst-execl2 \
tst-execve1 tst-execve2 tst-execle1 tst-execle2 \
- tst-execvp3 tst-execvp4
+ tst-execvp3 tst-execvp4 tst-rfc3484
xtests := bug-ga2
ifeq (yes,$(build-shared))
test-srcs := globtest
diff --git a/posix/getconf.c b/posix/getconf.c
index 0cc0c0d7b5..da8e538ad3 100644
--- a/posix/getconf.c
+++ b/posix/getconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 1995-2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 1995-2004, 2005 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
@@ -941,9 +941,54 @@ usage (void)
fprintf (stderr,
_("Usage: %s [-v specification] variable_name [pathname]\n"),
__progname);
+ fprintf (stderr,
+ _(" %s -a [pathname]\n"), __progname);
exit (2);
}
+static void
+print_all (const char *path)
+{
+ register const struct conf *c;
+ size_t clen;
+ long int value;
+ char *cvalue;
+ for (c = vars; c->name != NULL; ++c) {
+ printf("%-35s", c->name);
+ switch (c->call) {
+ case PATHCONF:
+ value = pathconf (path, c->call_name);
+ if (value != -1) {
+ printf("%ld", value);
+ }
+ printf("\n");
+ break;
+ case SYSCONF:
+ value = sysconf (c->call_name);
+ if (value == -1l) {
+ if (c->call_name == _SC_UINT_MAX
+ || c->call_name == _SC_ULONG_MAX)
+ printf ("%lu", value);
+ }
+ else {
+ printf ("%ld", value);
+ }
+ printf ("\n");
+ break;
+ case CONFSTR:
+ clen = confstr (c->call_name, (char *) NULL, 0);
+ cvalue = (char *) malloc (clen);
+ if (cvalue == NULL)
+ error (3, 0, _("memory exhausted"));
+ if (confstr (c->call_name, cvalue, clen) != clen)
+ error (3, errno, "confstr");
+ printf ("%.*s\n", (int) clen, cvalue);
+ break;
+ }
+ }
+ exit (0);
+}
+
int
main (int argc, char *argv[])
{
@@ -1050,6 +1095,16 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
}
}
+ if (argc > 1 && strcmp (argv[1], "-a") == 0)
+ {
+ if (argc == 2)
+ print_all ("/");
+ else if (argc == 3)
+ print_all (argv[2]);
+ else
+ usage ();
+ }
+
if (argc < 2 || argc > 3)
usage ();
diff --git a/posix/regcomp.c b/posix/regcomp.c
index c93f79ea24..fde262b83c 100644
--- a/posix/regcomp.c
+++ b/posix/regcomp.c
@@ -113,26 +113,26 @@ static reg_errcode_t build_collating_symbol (re_bitset_ptr_t sbcset,
# endif /* not RE_ENABLE_I18N */
#endif /* not _LIBC */
#ifdef RE_ENABLE_I18N
-static reg_errcode_t build_equiv_class (re_bitset_ptr_t sbcset,
+static reg_errcode_t build_equiv_class (bitset_t sbcset,
re_charset_t *mbcset,
int *equiv_class_alloc,
const unsigned char *name);
-static reg_errcode_t build_charclass (unsigned RE_TRANSLATE_TYPE trans,
- re_bitset_ptr_t sbcset,
+static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
+ bitset_t sbcset,
re_charset_t *mbcset,
int *char_class_alloc,
const unsigned char *class_name,
reg_syntax_t syntax);
#else /* not RE_ENABLE_I18N */
-static reg_errcode_t build_equiv_class (re_bitset_ptr_t sbcset,
+static reg_errcode_t build_equiv_class (bitset_t sbcset,
const unsigned char *name);
-static reg_errcode_t build_charclass (unsigned RE_TRANSLATE_TYPE trans,
- re_bitset_ptr_t sbcset,
+static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
+ bitset_t sbcset,
const unsigned char *class_name,
reg_syntax_t syntax);
#endif /* not RE_ENABLE_I18N */
static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
- unsigned RE_TRANSLATE_TYPE trans,
+ RE_TRANSLATE_TYPE trans,
const unsigned char *class_name,
const unsigned char *extra,
int non_match, reg_errcode_t *err);
@@ -354,7 +354,7 @@ re_compile_fastmap_iter (bufp, init_state, fastmap)
&& dfa->nodes[node].type == CHARACTER
&& dfa->nodes[node].mb_partial)
*p++ = dfa->nodes[node].opr.c;
- memset (&state, 0, sizeof (state));
+ memset (&state, '\0', sizeof (state));
if (mbrtowc (&wc, (const char *) buf, p - buf,
&state) == p - buf
&& (__wcrtomb ((char *) buf, towlower (wc), &state)
@@ -365,11 +365,15 @@ re_compile_fastmap_iter (bufp, init_state, fastmap)
}
else if (type == SIMPLE_BRACKET)
{
- int i, j, ch;
- for (i = 0, ch = 0; i < BITSET_UINTS; ++i)
- for (j = 0; j < UINT_BITS; ++j, ++ch)
- if (dfa->nodes[node].opr.sbcset[i] & (1u << j))
- re_set_fastmap (fastmap, icase, ch);
+ int i, ch;
+ for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+ {
+ int j;
+ bitset_word_t w = dfa->nodes[node].opr.sbcset[i];
+ for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
+ if (w & ((bitset_word_t) 1 << j))
+ re_set_fastmap (fastmap, icase, ch);
+ }
}
#ifdef RE_ENABLE_I18N
else if (type == COMPLEX_BRACKET)
@@ -388,13 +392,11 @@ re_compile_fastmap_iter (bufp, init_state, fastmap)
is a valid collation element, and don't catch
'b' since 'b' is the only collation element
which starts from 'b'. */
- int j, ch;
const int32_t *table = (const int32_t *)
_NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
- for (i = 0, ch = 0; i < BITSET_UINTS; ++i)
- for (j = 0; j < UINT_BITS; ++j, ++ch)
- if (table[ch] < 0)
- re_set_fastmap (fastmap, icase, ch);
+ for (i = 0; i < SBC_MAX; ++i)
+ if (table[i] < 0)
+ re_set_fastmap (fastmap, icase, i);
}
# else
if (dfa->mb_cur_max > 1)
@@ -581,14 +583,10 @@ weak_alias (__regerror, regerror)
UTF-8 is used. Otherwise we would allocate memory just to initialize
it the same all the time. UTF-8 is the preferred encoding so this is
a worthwhile optimization. */
-static const bitset utf8_sb_map =
+static const bitset_t utf8_sb_map =
{
/* Set the first 128 bits. */
-# if UINT_MAX == 0xffffffff
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
-# else
-# error "Add case for new unsigned int size"
-# endif
+ [0 ... 0x80 / BITSET_WORD_BITS - 1] = BITSET_WORD_MAX
};
#endif
@@ -908,20 +906,17 @@ init_dfa (dfa, pat_len)
{
int i, j, ch;
- dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset), 1);
+ dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
if (BE (dfa->sb_char == NULL, 0))
return REG_ESPACE;
- /* Clear all bits by, then set those corresponding to single
- byte chars. */
- bitset_empty (dfa->sb_char);
-
- for (i = 0, ch = 0; i < BITSET_UINTS; ++i)
- for (j = 0; j < UINT_BITS; ++j, ++ch)
+ /* Set the bits corresponding to single byte chars. */
+ for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+ for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
{
wint_t wch = __btowc (ch);
if (wch != WEOF)
- dfa->sb_char[i] |= 1u << j;
+ dfa->sb_char[i] |= (bitset_word_t) 1 << j;
# ifndef _LIBC
if (isascii (ch) && wch != ch)
dfa->map_notascii = 1;
@@ -946,10 +941,10 @@ init_word_char (dfa)
{
int i, j, ch;
dfa->word_ops_used = 1;
- for (i = 0, ch = 0; i < BITSET_UINTS; ++i)
- for (j = 0; j < UINT_BITS; ++j, ++ch)
+ for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+ for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
if (isalnum (ch) || ch == '_')
- dfa->word_char[i] |= 1u << j;
+ dfa->word_char[i] |= (bitset_word_t) 1 << j;
}
/* Free the work area which are only used while compiling. */
@@ -1096,8 +1091,9 @@ optimize_utf8 (dfa)
case COMPLEX_BRACKET:
return;
case SIMPLE_BRACKET:
- /* Just double check. */
- for (i = 0x80 / UINT_BITS; i < BITSET_UINTS; ++i)
+ /* Just double check. The non-ASCII range starts at 0x80. */
+ assert (0x80 % BITSET_WORD_BITS == 0);
+ for (i = 0x80 / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
if (dfa->nodes[node].opr.sbcset[i])
return;
break;
@@ -1282,8 +1278,8 @@ optimize_subexps (extra, node)
node->left->parent = node;
dfa->subexp_map[other_idx] = dfa->subexp_map[node->token.opr.idx];
- if (other_idx < CHAR_BIT * sizeof dfa->used_bkref_map)
- dfa->used_bkref_map &= ~(1u << other_idx);
+ if (other_idx < BITSET_WORD_BITS)
+ dfa->used_bkref_map &= ~((bitset_word_t) 1 << other_idx);
}
return REG_NOERROR;
@@ -1331,8 +1327,9 @@ lower_subexp (err, preg, node)
very common, so we do not lose much. An example that triggers
this case is the sed "script" /\(\)/x. */
&& node->left != NULL
- && (node->token.opr.idx >= CHAR_BIT * sizeof dfa->used_bkref_map
- || !(dfa->used_bkref_map & (1u << node->token.opr.idx))))
+ && (node->token.opr.idx >= BITSET_WORD_BITS
+ || !(dfa->used_bkref_map
+ & ((bitset_word_t) 1 << node->token.opr.idx))))
return node->left;
/* Convert the SUBEXP node to the concatenation of an
@@ -2666,7 +2663,7 @@ build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
# else /* not RE_ENABLE_I18N */
build_range_exp (sbcset, start_elem, end_elem)
# endif /* not RE_ENABLE_I18N */
- re_bitset_ptr_t sbcset;
+ bitset_t sbcset;
bracket_elem_t *start_elem, *end_elem;
{
unsigned int start_ch, end_ch;
@@ -2788,7 +2785,7 @@ build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
# else /* not RE_ENABLE_I18N */
build_collating_symbol (sbcset, name)
# endif /* not RE_ENABLE_I18N */
- re_bitset_ptr_t sbcset;
+ bitset_t sbcset;
const unsigned char *name;
{
size_t name_len = strlen ((const char *) name);
@@ -2931,7 +2928,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
re_charset_t *mbcset;
int *range_alloc;
- re_bitset_ptr_t sbcset;
+ bitset_t sbcset;
bracket_elem_t *start_elem, *end_elem;
{
unsigned int ch;
@@ -3014,7 +3011,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
re_charset_t *mbcset;
int *coll_sym_alloc;
- re_bitset_ptr_t sbcset;
+ bitset_t sbcset;
const unsigned char *name;
{
int32_t elem, idx;
@@ -3099,7 +3096,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
_NL_COLLATE_SYMB_EXTRAMB);
}
#endif
- sbcset = (re_bitset_ptr_t) calloc (sizeof (unsigned int), BITSET_UINTS);
+ sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
#ifdef RE_ENABLE_I18N
mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
#endif /* RE_ENABLE_I18N */
@@ -3309,12 +3306,12 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
if (BE (mbc_tree == NULL, 0))
goto parse_bracket_exp_espace;
- for (sbc_idx = 0; sbc_idx < BITSET_UINTS; ++sbc_idx)
+ for (sbc_idx = 0; sbc_idx < BITSET_WORDS; ++sbc_idx)
if (sbcset[sbc_idx])
break;
/* If there are no bits set in sbcset, there is no point
of having both SIMPLE_BRACKET and COMPLEX_BRACKET. */
- if (sbc_idx < BITSET_UINTS)
+ if (sbc_idx < BITSET_WORDS)
{
/* Build a tree for simple bracket. */
br_token.type = SIMPLE_BRACKET;
@@ -3464,7 +3461,7 @@ build_equiv_class (sbcset, mbcset, equiv_class_alloc, name)
#else /* not RE_ENABLE_I18N */
build_equiv_class (sbcset, name)
#endif /* not RE_ENABLE_I18N */
- re_bitset_ptr_t sbcset;
+ bitset_t sbcset;
const unsigned char *name;
{
#if defined _LIBC
@@ -3559,8 +3556,8 @@ build_charclass (trans, sbcset, mbcset, char_class_alloc, class_name, syntax)
#else /* not RE_ENABLE_I18N */
build_charclass (trans, sbcset, class_name, syntax)
#endif /* not RE_ENABLE_I18N */
- unsigned RE_TRANSLATE_TYPE trans;
- re_bitset_ptr_t sbcset;
+ RE_TRANSLATE_TYPE trans;
+ bitset_t sbcset;
const unsigned char *class_name;
reg_syntax_t syntax;
{
@@ -3634,7 +3631,7 @@ build_charclass (trans, sbcset, class_name, syntax)
static bin_tree_t *
build_charclass_op (dfa, trans, class_name, extra, non_match, err)
re_dfa_t *dfa;
- unsigned RE_TRANSLATE_TYPE trans;
+ RE_TRANSLATE_TYPE trans;
const unsigned char *class_name;
const unsigned char *extra;
int non_match;
@@ -3649,7 +3646,7 @@ build_charclass_op (dfa, trans, class_name, extra, non_match, err)
re_token_t br_token;
bin_tree_t *tree;
- sbcset = (re_bitset_ptr_t) calloc (sizeof (unsigned int), BITSET_UINTS);
+ sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
#ifdef RE_ENABLE_I18N
mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
#endif /* RE_ENABLE_I18N */
diff --git a/posix/regex.h b/posix/regex.h
index e5ec398106..f6c145d209 100644
--- a/posix/regex.h
+++ b/posix/regex.h
@@ -346,75 +346,71 @@ typedef enum
private to the regex routines. */
#ifndef RE_TRANSLATE_TYPE
-# define RE_TRANSLATE_TYPE char *
+# define RE_TRANSLATE_TYPE unsigned char *
#endif
struct re_pattern_buffer
{
-/* [[[begin pattern_buffer]]] */
- /* Space that holds the compiled pattern. It is declared as
- `unsigned char *' because its elements are
- sometimes used as array indexes. */
+ /* Space that holds the compiled pattern. It is declared as
+ `unsigned char *' because its elements are sometimes used as
+ array indexes. */
unsigned char *buffer;
- /* Number of bytes to which `buffer' points. */
+ /* Number of bytes to which `buffer' points. */
unsigned long int allocated;
- /* Number of bytes actually used in `buffer'. */
+ /* Number of bytes actually used in `buffer'. */
unsigned long int used;
- /* Syntax setting with which the pattern was compiled. */
+ /* Syntax setting with which the pattern was compiled. */
reg_syntax_t syntax;
- /* Pointer to a fastmap, if any, otherwise zero. re_search uses
- the fastmap, if there is one, to skip over impossible
- starting points for matches. */
+ /* Pointer to a fastmap, if any, otherwise zero. re_search uses the
+ fastmap, if there is one, to skip over impossible starting points
+ for matches. */
char *fastmap;
- /* Either a translate table to apply to all characters before
- comparing them, or zero for no translation. The translation
- is applied to a pattern when it is compiled and to a string
- when it is matched. */
+ /* Either a translate table to apply to all characters before
+ comparing them, or zero for no translation. The translation is
+ applied to a pattern when it is compiled and to a string when it
+ is matched. */
RE_TRANSLATE_TYPE translate;
- /* Number of subexpressions found by the compiler. */
+ /* Number of subexpressions found by the compiler. */
size_t re_nsub;
- /* Zero if this pattern cannot match the empty string, one else.
- Well, in truth it's used only in `re_search_2', to see
- whether or not we should use the fastmap, so we don't set
- this absolutely perfectly; see `re_compile_fastmap' (the
- `duplicate' case). */
+ /* Zero if this pattern cannot match the empty string, one else.
+ Well, in truth it's used only in `re_search_2', to see whether or
+ not we should use the fastmap, so we don't set this absolutely
+ perfectly; see `re_compile_fastmap' (the `duplicate' case). */
unsigned can_be_null : 1;
- /* If REGS_UNALLOCATED, allocate space in the `regs' structure
- for `max (RE_NREGS, re_nsub + 1)' groups.
- If REGS_REALLOCATE, reallocate space if necessary.
- If REGS_FIXED, use what's there. */
+ /* If REGS_UNALLOCATED, allocate space in the `regs' structure
+ for `max (RE_NREGS, re_nsub + 1)' groups.
+ If REGS_REALLOCATE, reallocate space if necessary.
+ If REGS_FIXED, use what's there. */
#define REGS_UNALLOCATED 0
#define REGS_REALLOCATE 1
#define REGS_FIXED 2
unsigned regs_allocated : 2;
- /* Set to zero when `regex_compile' compiles a pattern; set to one
- by `re_compile_fastmap' if it updates the fastmap. */
+ /* Set to zero when `regex_compile' compiles a pattern; set to one
+ by `re_compile_fastmap' if it updates the fastmap. */
unsigned fastmap_accurate : 1;
- /* If set, `re_match_2' does not return information about
- subexpressions. */
+ /* If set, `re_match_2' does not return information about
+ subexpressions. */
unsigned no_sub : 1;
- /* If set, a beginning-of-line anchor doesn't match at the
- beginning of the string. */
+ /* If set, a beginning-of-line anchor doesn't match at the beginning
+ of the string. */
unsigned not_bol : 1;
- /* Similarly for an end-of-line anchor. */
+ /* Similarly for an end-of-line anchor. */
unsigned not_eol : 1;
- /* If true, an anchor at a newline matches. */
+ /* If true, an anchor at a newline matches. */
unsigned newline_anchor : 1;
-
-/* [[[end pattern_buffer]]] */
};
typedef struct re_pattern_buffer regex_t;
@@ -454,19 +450,19 @@ typedef struct
/* Sets the current default syntax to SYNTAX, and return the old syntax.
You can also simply assign to the `re_syntax_options' variable. */
-extern reg_syntax_t re_set_syntax (reg_syntax_t syntax);
+extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
/* Compile the regular expression PATTERN, with length LENGTH
and syntax given by the global `re_syntax_options', into the buffer
BUFFER. Return NULL if successful, and an error string if not. */
-extern const char *re_compile_pattern (const char *pattern, size_t length,
- struct re_pattern_buffer *buffer);
+extern const char *re_compile_pattern (const char *__pattern, size_t __length,
+ struct re_pattern_buffer *__buffer);
/* Compile a fastmap for the compiled pattern in BUFFER; used to
accelerate searches. Return 0 if successful and -2 if was an
internal error. */
-extern int re_compile_fastmap (struct re_pattern_buffer *buffer);
+extern int re_compile_fastmap (struct re_pattern_buffer *__buffer);
/* Search in the string STRING (with length LENGTH) for the pattern
@@ -474,29 +470,30 @@ extern int re_compile_fastmap (struct re_pattern_buffer *buffer);
characters. Return the starting position of the match, -1 for no
match, or -2 for an internal error. Also return register
information in REGS (if REGS and BUFFER->no_sub are nonzero). */
-extern int re_search (struct re_pattern_buffer *buffer, const char *string,
- int length, int start, int range,
- struct re_registers *regs);
+extern int re_search (struct re_pattern_buffer *__buffer, const char *__string,
+ int __length, int __start, int __range,
+ struct re_registers *__regs);
/* Like `re_search', but search in the concatenation of STRING1 and
STRING2. Also, stop searching at index START + STOP. */
-extern int re_search_2 (struct re_pattern_buffer *buffer, const char *string1,
- int length1, const char *string2, int length2,
- int start, int range, struct re_registers *regs,
- int stop);
+extern int re_search_2 (struct re_pattern_buffer *__buffer,
+ const char *__string1, int __length1,
+ const char *__string2, int __length2, int __start,
+ int __range, struct re_registers *__regs, int __stop);
/* Like `re_search', but return how many characters in STRING the regexp
in BUFFER matched, starting at position START. */
-extern int re_match (struct re_pattern_buffer *buffer, const char *string,
- int length, int start, struct re_registers *regs);
+extern int re_match (struct re_pattern_buffer *__buffer, const char *__string,
+ int __length, int __start, struct re_registers *__regs);
/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
-extern int re_match_2 (struct re_pattern_buffer *buffer, const char *string1,
- int length1, const char *string2, int length2,
- int start, struct re_registers *regs, int stop);
+extern int re_match_2 (struct re_pattern_buffer *__buffer,
+ const char *__string1, int __length1,
+ const char *__string2, int __length2, int __start,
+ struct re_registers *__regs, int __stop);
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
@@ -511,9 +508,10 @@ extern int re_match_2 (struct re_pattern_buffer *buffer, const char *string1,
Unless this function is called, the first search or match using
PATTERN_BUFFER will allocate its own register data, without
freeing the old data. */
-extern void re_set_registers (struct re_pattern_buffer *buffer,
- struct re_registers *regs, unsigned num_regs,
- regoff_t *starts, regoff_t *ends);
+extern void re_set_registers (struct re_pattern_buffer *__buffer,
+ struct re_registers *__regs,
+ unsigned int __num_regs,
+ regoff_t *__starts, regoff_t *__ends);
#if defined _REGEX_RE_COMP || defined _LIBC
# ifndef _CRAY
@@ -564,11 +562,3 @@ extern void regfree (regex_t *__preg);
#endif /* C++ */
#endif /* regex.h */
-
-/*
-Local variables:
-make-backup-files: t
-version-control: t
-trim-versions-without-asking: nil
-End:
-*/
diff --git a/posix/regex_internal.c b/posix/regex_internal.c
index 240e8872b3..2b3725f3dd 100644
--- a/posix/regex_internal.c
+++ b/posix/regex_internal.c
@@ -187,7 +187,7 @@ re_string_construct_common (str, len, pstr, trans, icase, dfa)
pstr->raw_mbs = (const unsigned char *) str;
pstr->len = len;
pstr->raw_len = len;
- pstr->trans = (unsigned RE_TRANSLATE_TYPE) trans;
+ pstr->trans = trans;
pstr->icase = icase ? 1 : 0;
pstr->mbs_allocated = (trans != NULL || icase);
pstr->mb_cur_max = dfa->mb_cur_max;
diff --git a/posix/regex_internal.h b/posix/regex_internal.h
index debbe0db3b..681be1f52b 100644
--- a/posix/regex_internal.h
+++ b/posix/regex_internal.h
@@ -39,6 +39,9 @@
#if defined HAVE_WCTYPE_H || defined _LIBC
# include <wctype.h>
#endif /* HAVE_WCTYPE_H || _LIBC */
+#if defined HAVE_STDBOOL_H || defined _LIBC
+# include <stdbool.h>
+#endif /* HAVE_STDBOOL_H || _LIBC */
#if defined _LIBC
# include <bits/libc-lock.h>
#else
@@ -120,26 +123,31 @@
extern const char __re_error_msgid[] attribute_hidden;
extern const size_t __re_error_msgid_idx[] attribute_hidden;
-/* Number of bits in an unsinged int. */
-#define UINT_BITS (sizeof (unsigned int) * CHAR_BIT)
-/* Number of unsigned int in an bit_set. */
-#define BITSET_UINTS ((SBC_MAX + UINT_BITS - 1) / UINT_BITS)
-typedef unsigned int bitset[BITSET_UINTS];
-typedef unsigned int *re_bitset_ptr_t;
-typedef const unsigned int *re_const_bitset_ptr_t;
-
-#define bitset_set(set,i) (set[i / UINT_BITS] |= 1u << i % UINT_BITS)
-#define bitset_clear(set,i) (set[i / UINT_BITS] &= ~(1u << i % UINT_BITS))
-#define bitset_contain(set,i) (set[i / UINT_BITS] & (1u << i % UINT_BITS))
-#define bitset_empty(set) memset (set, 0, sizeof (unsigned int) * BITSET_UINTS)
-#define bitset_set_all(set) \
- memset (set, 255, sizeof (unsigned int) * BITSET_UINTS)
-#define bitset_copy(dest,src) \
- memcpy (dest, src, sizeof (unsigned int) * BITSET_UINTS)
-static inline void bitset_not (bitset set);
-static inline void bitset_merge (bitset dest, const bitset src);
-static inline void bitset_not_merge (bitset dest, const bitset src);
-static inline void bitset_mask (bitset dest, const bitset src);
+/* An integer used to represent a set of bits. It must be unsigned,
+ and must be at least as wide as unsigned int. */
+typedef unsigned long int bitset_word_t;
+/* All bits set in a bitset_word_t. */
+#define BITSET_WORD_MAX ULONG_MAX
+/* Number of bits in a bitset_word_t. */
+#define BITSET_WORD_BITS (sizeof (bitset_word_t) * CHAR_BIT)
+/* Number of bitset_word_t in a bit_set. */
+#define BITSET_WORDS (SBC_MAX / BITSET_WORD_BITS)
+typedef bitset_word_t bitset_t[BITSET_WORDS];
+typedef bitset_word_t *re_bitset_ptr_t;
+typedef const bitset_word_t *re_const_bitset_ptr_t;
+
+#define bitset_set(set,i) \
+ (set[i / BITSET_WORD_BITS] |= (bitset_word_t) 1 << i % BITSET_WORD_BITS)
+#define bitset_clear(set,i) \
+ (set[i / BITSET_WORD_BITS] &= ~((bitset_word_t) 1 << i % BITSET_WORD_BITS))
+#define bitset_contain(set,i) \
+ (set[i / BITSET_WORD_BITS] & ((bitset_word_t) 1 << i % BITSET_WORD_BITS))
+#define bitset_empty(set) memset (set, '\0', sizeof (bitset_t))
+#define bitset_set_all(set) memset (set, '\xff', sizeof (bitset_t))
+#define bitset_copy(dest,src) memcpy (dest, src, sizeof (bitset_t))
+static inline void bitset_not (bitset_t set);
+static inline void bitset_merge (bitset_t dest, const bitset_t src);
+static inline void bitset_mask (bitset_t dest, const bitset_t src);
#define PREV_WORD_CONSTRAINT 0x0001
#define PREV_NOTWORD_CONSTRAINT 0x0002
@@ -345,7 +353,7 @@ struct re_string_t
the beginning of the input string. */
unsigned int tip_context;
/* The translation passed as a part of an argument of re_compile_pattern. */
- unsigned RE_TRANSLATE_TYPE trans;
+ RE_TRANSLATE_TYPE trans;
/* Copy of re_dfa_t's word_char. */
re_const_bitset_ptr_t word_char;
/* 1 if REG_ICASE. */
@@ -648,8 +656,8 @@ struct re_dfa_t
int nbackref; /* The number of backreference in this dfa. */
/* Bitmap expressing which backreference is used. */
- unsigned int used_bkref_map;
- unsigned int completed_bkref_map;
+ bitset_word_t used_bkref_map;
+ bitset_word_t completed_bkref_map;
unsigned int has_plural_match : 1;
/* If this dfa has "multibyte node", which is a backreference or
@@ -660,7 +668,7 @@ struct re_dfa_t
unsigned int map_notascii : 1;
unsigned int word_ops_used : 1;
int mb_cur_max;
- bitset word_char;
+ bitset_t word_char;
reg_syntax_t syntax;
int *subexp_map;
#ifdef DEBUG
@@ -734,34 +742,26 @@ typedef struct
/* Inline functions for bitset operation. */
static inline void
-bitset_not (bitset set)
+bitset_not (bitset_t set)
{
int bitset_i;
- for (bitset_i = 0; bitset_i < BITSET_UINTS; ++bitset_i)
+ for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
set[bitset_i] = ~set[bitset_i];
}
static inline void
-bitset_merge (bitset dest, const bitset src)
+bitset_merge (bitset_t dest, const bitset_t src)
{
int bitset_i;
- for (bitset_i = 0; bitset_i < BITSET_UINTS; ++bitset_i)
+ for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
dest[bitset_i] |= src[bitset_i];
}
static inline void
-bitset_not_merge (bitset dest, const bitset src)
-{
- int i;
- for (i = 0; i < BITSET_UINTS; ++i)
- dest[i] |= ~src[i];
-}
-
-static inline void
-bitset_mask (bitset dest, const bitset src)
+bitset_mask (bitset_t dest, const bitset_t src)
{
int bitset_i;
- for (bitset_i = 0; bitset_i < BITSET_UINTS; ++bitset_i)
+ for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
dest[bitset_i] &= src[bitset_i];
}
diff --git a/posix/regexec.c b/posix/regexec.c
index 78042727f9..74a24867a2 100644
--- a/posix/regexec.c
+++ b/posix/regexec.c
@@ -213,7 +213,7 @@ static unsigned int find_collation_sequence_value (const unsigned char *mbs,
static int group_nodes_into_DFAstates (const re_dfa_t *dfa,
const re_dfastate_t *state,
re_node_set *states_node,
- bitset *states_ch) internal_function;
+ bitset_t *states_ch) internal_function;
static int check_node_accept (const re_match_context_t *mctx,
const re_token_t *node, int idx)
internal_function;
@@ -657,7 +657,7 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
#endif
char *fastmap = (preg->fastmap != NULL && preg->fastmap_accurate
&& range && !preg->can_be_null) ? preg->fastmap : NULL;
- unsigned RE_TRANSLATE_TYPE t = (unsigned RE_TRANSLATE_TYPE) preg->translate;
+ RE_TRANSLATE_TYPE t = preg->translate;
#if !(defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
memset (&mctx, '\0', sizeof (re_match_context_t));
@@ -1798,7 +1798,7 @@ update_cur_sifted_state (mctx, sctx, str_idx, dest_nodes)
re_node_set *dest_nodes;
{
const re_dfa_t *const dfa = mctx->dfa;
- reg_errcode_t err;
+ reg_errcode_t err = REG_NOERROR;
const re_node_set *candidates;
candidates = ((mctx->state_log[str_idx] == NULL) ? NULL
: &mctx->state_log[str_idx]->nodes);
@@ -1980,9 +1980,9 @@ check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx, from_node, bkref_idx)
if (ent->node != node)
continue;
- if (subexp_idx
- < CHAR_BIT * sizeof ent->eps_reachable_subexps_map
- && !(ent->eps_reachable_subexps_map & (1u << subexp_idx)))
+ if (subexp_idx < BITSET_WORD_BITS
+ && !(ent->eps_reachable_subexps_map
+ & ((bitset_word_t) 1 << subexp_idx)))
continue;
/* Recurse trying to reach the OP_OPEN_SUBEXP and
@@ -2008,9 +2008,9 @@ check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx, from_node, bkref_idx)
if (cpos == 0 && (boundaries & 2))
return 0;
- if (subexp_idx
- < CHAR_BIT * sizeof ent->eps_reachable_subexps_map)
- ent->eps_reachable_subexps_map &= ~(1u << subexp_idx);
+ if (subexp_idx < BITSET_WORD_BITS)
+ ent->eps_reachable_subexps_map
+ &= ~((bitset_word_t) 1 << subexp_idx);
}
while (ent++->more);
}
@@ -2477,8 +2477,9 @@ check_subexp_matching_top (mctx, cur_nodes, str_idx)
{
int node = cur_nodes->elems[node_idx];
if (dfa->nodes[node].type == OP_OPEN_SUBEXP
- && dfa->nodes[node].opr.idx < CHAR_BIT * sizeof dfa->used_bkref_map
- && dfa->used_bkref_map & (1u << dfa->nodes[node].opr.idx))
+ && dfa->nodes[node].opr.idx < BITSET_WORD_BITS
+ && (dfa->used_bkref_map
+ & ((bitset_word_t) 1 << dfa->nodes[node].opr.idx)))
{
err = match_ctx_add_subtop (mctx, node, str_idx);
if (BE (err != REG_NOERROR, 0))
@@ -2931,7 +2932,7 @@ check_arrival (mctx, path, top_node, top_str, last_node, last_str,
int top_node, top_str, last_node, last_str, type;
{
const re_dfa_t *const dfa = mctx->dfa;
- reg_errcode_t err;
+ reg_errcode_t err = REG_NOERROR;
int subexp_num, backup_cur_idx, str_idx, null_cnt;
re_dfastate_t *cur_state = NULL;
re_node_set *cur_nodes, next_nodes;
@@ -3095,7 +3096,7 @@ check_arrival_add_next_nodes (mctx, str_idx, cur_nodes, next_nodes)
const re_dfa_t *const dfa = mctx->dfa;
int result;
int cur_idx;
- reg_errcode_t err;
+ reg_errcode_t err = REG_NOERROR;
re_node_set union_set;
re_node_set_init_empty (&union_set);
for (cur_idx = 0; cur_idx < cur_nodes->nelem; ++cur_idx)
@@ -3363,31 +3364,37 @@ build_trtable (dfa, state)
{
reg_errcode_t err;
int i, j, ch, need_word_trtable = 0;
- unsigned int elem, mask;
- int dests_node_malloced = 0, dest_states_malloced = 0;
+ bitset_word_t elem, mask;
+ bool dests_node_malloced = false;
+ bool dest_states_malloced = false;
int ndests; /* Number of the destination states from `state'. */
re_dfastate_t **trtable;
re_dfastate_t **dest_states = NULL, **dest_states_word, **dest_states_nl;
re_node_set follows, *dests_node;
- bitset *dests_ch;
- bitset acceptable;
+ bitset_t *dests_ch;
+ bitset_t acceptable;
+
+ struct dests_alloc
+ {
+ re_node_set dests_node[SBC_MAX];
+ bitset_t dests_ch[SBC_MAX];
+ } *dests_alloc;
/* We build DFA states which corresponds to the destination nodes
from `state'. `dests_node[i]' represents the nodes which i-th
destination state contains, and `dests_ch[i]' represents the
characters which i-th destination state accepts. */
- if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX))
- dests_node = (re_node_set *)
- alloca ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX);
+ if (__libc_use_alloca (sizeof (struct dests_alloc)))
+ dests_alloc = (struct dests_alloc *) alloca (sizeof (struct dests_alloc));
else
{
- dests_node = (re_node_set *)
- malloc ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX);
- if (BE (dests_node == NULL, 0))
+ dests_alloc = re_malloc (struct dests_alloc, 1);
+ if (BE (dests_alloc == NULL, 0))
return 0;
- dests_node_malloced = 1;
+ dests_node_malloced = true;
}
- dests_ch = (bitset *) (dests_node + SBC_MAX);
+ dests_node = dests_alloc->dests_node;
+ dests_ch = dests_alloc->dests_ch;
/* Initialize transiton table. */
state->word_trtable = state->trtable = NULL;
@@ -3398,7 +3405,7 @@ build_trtable (dfa, state)
if (BE (ndests <= 0, 0))
{
if (dests_node_malloced)
- free (dests_node);
+ free (dests_alloc);
/* Return 0 in case of an error, 1 otherwise. */
if (ndests == 0)
{
@@ -3413,7 +3420,7 @@ build_trtable (dfa, state)
if (BE (err != REG_NOERROR, 0))
goto out_free;
- if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX
+ if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX
+ ndests * 3 * sizeof (re_dfastate_t *)))
dest_states = (re_dfastate_t **)
alloca (ndests * 3 * sizeof (re_dfastate_t *));
@@ -3430,10 +3437,10 @@ out_free:
for (i = 0; i < ndests; ++i)
re_node_set_free (dests_node + i);
if (dests_node_malloced)
- free (dests_node);
+ free (dests_alloc);
return 0;
}
- dest_states_malloced = 1;
+ dest_states_malloced = true;
}
dest_states_word = dest_states + ndests;
dest_states_nl = dest_states_word + ndests;
@@ -3495,8 +3502,8 @@ out_free:
goto out_free;
/* For all characters ch...: */
- for (i = 0; i < BITSET_UINTS; ++i)
- for (ch = i * UINT_BITS, elem = acceptable[i], mask = 1;
+ for (i = 0; i < BITSET_WORDS; ++i)
+ for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
elem;
mask <<= 1, elem >>= 1, ++ch)
if (BE (elem & 1, 0))
@@ -3526,8 +3533,8 @@ out_free:
goto out_free;
/* For all characters ch...: */
- for (i = 0; i < BITSET_UINTS; ++i)
- for (ch = i * UINT_BITS, elem = acceptable[i], mask = 1;
+ for (i = 0; i < BITSET_WORDS; ++i)
+ for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
elem;
mask <<= 1, elem >>= 1, ++ch)
if (BE (elem & 1, 0))
@@ -3568,7 +3575,7 @@ out_free:
re_node_set_free (dests_node + i);
if (dests_node_malloced)
- free (dests_node);
+ free (dests_alloc);
return 1;
}
@@ -3583,13 +3590,13 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
const re_dfa_t *dfa;
const re_dfastate_t *state;
re_node_set *dests_node;
- bitset *dests_ch;
+ bitset_t *dests_ch;
{
reg_errcode_t err;
int result;
int i, j, k;
int ndests; /* Number of the destinations from `state'. */
- bitset accepts; /* Characters a node can accept. */
+ bitset_t accepts; /* Characters a node can accept. */
const re_node_set *cur_nodes = &state->nodes;
bitset_empty (accepts);
ndests = 0;
@@ -3624,7 +3631,7 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
#ifdef RE_ENABLE_I18N
else if (type == OP_UTF8_PERIOD)
{
- memset (accepts, 255, sizeof (unsigned int) * BITSET_UINTS / 2);
+ memset (accepts, '\xff', sizeof (bitset_t) / 2);
if (!(dfa->syntax & RE_DOT_NEWLINE))
bitset_clear (accepts, '\n');
if (dfa->syntax & RE_DOT_NOT_NULL)
@@ -3640,7 +3647,7 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
{
if (constraint & NEXT_NEWLINE_CONSTRAINT)
{
- int accepts_newline = bitset_contain (accepts, NEWLINE_CHAR);
+ bool accepts_newline = bitset_contain (accepts, NEWLINE_CHAR);
bitset_empty (accepts);
if (accepts_newline)
bitset_set (accepts, NEWLINE_CHAR);
@@ -3655,7 +3662,7 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
if (constraint & NEXT_WORD_CONSTRAINT)
{
- unsigned int any_set = 0;
+ bitset_word_t any_set = 0;
if (type == CHARACTER && !node->word_char)
{
bitset_empty (accepts);
@@ -3663,18 +3670,18 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
}
#ifdef RE_ENABLE_I18N
if (dfa->mb_cur_max > 1)
- for (j = 0; j < BITSET_UINTS; ++j)
+ for (j = 0; j < BITSET_WORDS; ++j)
any_set |= (accepts[j] &= (dfa->word_char[j] | ~dfa->sb_char[j]));
else
#endif
- for (j = 0; j < BITSET_UINTS; ++j)
+ for (j = 0; j < BITSET_WORDS; ++j)
any_set |= (accepts[j] &= dfa->word_char[j]);
if (!any_set)
continue;
}
if (constraint & NEXT_NOTWORD_CONSTRAINT)
{
- unsigned int any_set = 0;
+ bitset_word_t any_set = 0;
if (type == CHARACTER && node->word_char)
{
bitset_empty (accepts);
@@ -3682,11 +3689,11 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
}
#ifdef RE_ENABLE_I18N
if (dfa->mb_cur_max > 1)
- for (j = 0; j < BITSET_UINTS; ++j)
+ for (j = 0; j < BITSET_WORDS; ++j)
any_set |= (accepts[j] &= ~(dfa->word_char[j] & dfa->sb_char[j]));
else
#endif
- for (j = 0; j < BITSET_UINTS; ++j)
+ for (j = 0; j < BITSET_WORDS; ++j)
any_set |= (accepts[j] &= ~dfa->word_char[j]);
if (!any_set)
continue;
@@ -3697,10 +3704,10 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
state. Above, we make sure that accepts is not empty. */
for (j = 0; j < ndests; ++j)
{
- bitset intersec; /* Intersection sets, see below. */
- bitset remains;
+ bitset_t intersec; /* Intersection sets, see below. */
+ bitset_t remains;
/* Flags, see below. */
- int has_intersec, not_subset, not_consumed;
+ bitset_word_t has_intersec, not_subset, not_consumed;
/* Optimization, skip if this state doesn't accept the character. */
if (type == CHARACTER && !bitset_contain (dests_ch[j], node->opr.c))
@@ -3708,7 +3715,7 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
/* Enumerate the intersection set of this state and `accepts'. */
has_intersec = 0;
- for (k = 0; k < BITSET_UINTS; ++k)
+ for (k = 0; k < BITSET_WORDS; ++k)
has_intersec |= intersec[k] = accepts[k] & dests_ch[j][k];
/* And skip if the intersection set is empty. */
if (!has_intersec)
@@ -3716,7 +3723,7 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
/* Then check if this state is a subset of `accepts'. */
not_subset = not_consumed = 0;
- for (k = 0; k < BITSET_UINTS; ++k)
+ for (k = 0; k < BITSET_WORDS; ++k)
{
not_subset |= remains[k] = ~accepts[k] & dests_ch[j][k];
not_consumed |= accepts[k] = accepts[k] & ~dests_ch[j][k];
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 372d46c79a..d7a58eab13 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991-1994,1996-2001,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1994,1996-2001,2003,2004,2005
+ 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
@@ -42,11 +43,11 @@ __BEGIN_DECLS
as well as POSIX.1 use of `int' for the status word. */
# if defined __GNUC__ && !defined __cplusplus
-# define __WAIT_INT(status) \
- (__extension__ ({ union { __typeof(status) __in; int __i; } __u; \
- __u.__in = (status); __u.__i; }))
+# define __WAIT_INT(status) \
+ (__extension__ (((union { __typeof(status) __in; int __i; }) \
+ { .__in = (status) }).__i))
# else
-# define __WAIT_INT(status) (*(int *) &(status))
+# define __WAIT_INT(status) (*(__const int *) &(status))
# endif
/* This is the type of the argument to `wait'. The funky union
diff --git a/posix/tst-rfc3484.c b/posix/tst-rfc3484.c
new file mode 100644
index 0000000000..378e43a011
--- /dev/null
+++ b/posix/tst-rfc3484.c
@@ -0,0 +1,98 @@
+#include <stdbool.h>
+#include <stdio.h>
+
+/* Internal definitions used in the libc code. */
+#define __getservbyname_r getservbyname_r
+#define __socket socket
+#define __getsockname getsockname
+#define __inet_aton inet_aton
+#define __gethostbyaddr_r gethostbyaddr_r
+#define __gethostbyname2_r gethostbyname2_r
+
+void
+attribute_hidden
+__check_pf (bool *p1, bool *p2)
+{
+ *p1 = *p2 = true;
+}
+int
+__idna_to_ascii_lz (const char *input, char **output, int flags)
+{
+ return 0;
+}
+int
+__idna_to_unicode_lzlz (const char *input, char **output, int flags)
+{
+ return 0;
+}
+
+#include "../sysdeps/posix/getaddrinfo.c"
+
+service_user *__nss_hosts_database attribute_hidden;
+
+
+/* This is the beginning of the real test code. The above defines
+ (among other things) the function rfc3484_sort. */
+
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define h(n) n
+#else
+# define h(n) __bswap_constant_32 (n)
+#endif
+
+struct sockaddr_in addrs[] =
+{
+ { .sin_family = AF_INET, .sin_addr = { h (0xc0a86d1d) } },
+ { .sin_family = AF_INET, .sin_addr = { h (0xc0a85d03) } },
+ { .sin_family = AF_INET, .sin_addr = { h (0xc0a82c3d) } },
+ { .sin_family = AF_INET, .sin_addr = { h (0xc0a86002) } },
+ { .sin_family = AF_INET, .sin_addr = { h (0xc0a802f3) } },
+ { .sin_family = AF_INET, .sin_addr = { h (0xc0a80810) } },
+ { .sin_family = AF_INET, .sin_addr = { h (0xc0a85e02) } }
+};
+#define naddrs (sizeof (addrs) / sizeof (addrs[0]))
+static struct addrinfo ais[naddrs];
+static struct sort_result results[naddrs];
+
+static int expected[naddrs] =
+ {
+ 6, 1, 0, 3, 2, 4, 5
+ };
+
+
+static int
+do_test (void)
+{
+ struct sockaddr_in so;
+ so.sin_family = AF_INET;
+ so.sin_addr.s_addr = h (0xc0a85f19);
+
+ for (int i = 0; i < naddrs; ++i)
+ {
+ ais[i].ai_family = AF_INET;
+ ais[i].ai_addr = (struct sockaddr *) &addrs[i];
+ results[i].dest_addr = &ais[i];
+ results[i].got_source_addr = true;
+ memcpy(&results[i].source_addr, &so, sizeof (so));
+ results[i].source_addr_len = sizeof (so);
+ }
+
+ qsort (results, naddrs, sizeof (results[0]), rfc3484_sort);
+
+ int result = 0;
+ for (int i = 0; i < naddrs; ++i)
+ {
+ struct in_addr addr = ((struct sockaddr_in *) (results[i].dest_addr->ai_addr))->sin_addr;
+
+ int here = memcmp (&addr, &addrs[expected[i]].sin_addr,
+ sizeof (struct in_addr));
+ printf ("[%d] = %s: %s\n", i, inet_ntoa (addr), here ? "FAIL" : "OK");
+ result |= here;
+ }
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/scripts/begin-end-check.pl b/scripts/begin-end-check.pl
new file mode 100644
index 0000000000..1616931bb0
--- /dev/null
+++ b/scripts/begin-end-check.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# Check __BEGIN_NAMESPACE ... __END_NAMESPACE pairing in an include file.
+
+my $code = 0;
+for my $path (@ARGV) {
+ my $localcode = 0;
+ my @stack;
+
+ open my $in, '<', $path
+ or die "open $path failed: $!";
+
+ while (<$in>) {
+ if ( /^\s*__BEGIN_(.*)\b/ ) {
+ push @stack, $1;
+ }
+ elsif ( /^\s*__END_(.*)\b/ ) {
+ if (@stack) {
+ my $tag = pop @stack;
+ if ($1 ne $tag) {
+ print "$path:$.: BEGIN $tag paired with END $1\n";
+ $localcode = 1;
+ }
+ }
+ else {
+ print "$path:$.: END $1 does not match a begin\n";
+ $localcode = 1;
+ }
+ }
+ }
+
+ if (@stack) {
+ print "$path: Unmatched begin tags " . join (' ', @stack) ."\n";
+ $localcode = 1;
+ }
+
+ if ($localcode == 0) {
+ print "$path: OK\n";
+ } else {
+ $code = $localcode;
+ }
+}
+
+exit $code;
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 39c7d9db52..119323617c 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -53,7 +53,8 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \
tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \
tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 \
- tst-popen tst-unlockedio tst-fmemopen2 tst-put-error
+ tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
+ tst-fwrite
test-srcs = tst-unbputc tst-printf
diff --git a/stdio-common/tst-fgets.c b/stdio-common/tst-fgets.c
new file mode 100644
index 0000000000..b8e205c7dc
--- /dev/null
+++ b/stdio-common/tst-fgets.c
@@ -0,0 +1,20 @@
+/* Derived from the test case in
+ http://sourceware.org/bugzilla/show_bug.cgi?id=713. */
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+ FILE *fp = fmemopen ("hello", 5, "r");
+ char buf[2];
+ char *bp = fgets (buf, sizeof (buf), fp);
+ printf ("fgets: %s\n", bp == buf ? "OK" : "ERROR");
+ int res = bp != buf;
+ bp = fgets_unlocked (buf, sizeof (buf), fp);
+ printf ("fgets_unlocked: %s\n", bp == buf ? "OK" : "ERROR");
+ res |= bp != buf;
+ return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/tst-fwrite.c b/stdio-common/tst-fwrite.c
new file mode 100644
index 0000000000..2986c8932a
--- /dev/null
+++ b/stdio-common/tst-fwrite.c
@@ -0,0 +1,70 @@
+/* Derived from the test case in
+ http://sourceware.org/bugzilla/show_bug.cgi?id=1078. */
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define OUT_SIZE 10000
+
+
+static int fd;
+
+static void prepare (void);
+#define PREPARE(argc, argv) prepare ()
+
+static int do_test (void);
+#define TEST_FUNCTION do_test ()
+
+#include "../test-skeleton.c"
+
+
+static void
+prepare (void)
+{
+ fd = create_temp_file ("tst-fwrite.", NULL);
+ if (fd == -1)
+ {
+ puts ("cannot create temporary file");
+ exit (1);
+ }
+}
+
+
+static int
+do_test (void)
+{
+ FILE* f = fdopen (fd, "w+");
+ if (f == NULL) {
+ puts ("cannot create stream");
+ return 1;
+ }
+ puts ("Opened temp file");
+
+ if (fwrite ("a", 1, 1, f) != 1)
+ {
+ puts ("1st fwrite failed");
+ return 1;
+ }
+ puts ("Wrote a byte");
+ fflush (f);
+
+ char buffer[10000];
+ size_t i = fread (buffer, 1, sizeof (buffer), f);
+ printf ("Read %zu bytes\n", i);
+
+ for (i = 0; i < OUT_SIZE; i++)
+ {
+ if (fwrite ("n", 1, 1, f) != 1)
+ {
+ printf ("fwrite in loop round %zu failed\n", i);
+ return 1;
+ }
+
+ if ((i + 1) % 1000 == 0)
+ printf ("wrote %zu bytes ...\n", i + 1);
+ }
+
+ printf ("Wrote %i bytes [done]\n", OUT_SIZE);
+
+ return 0;
+}
diff --git a/stdlib/Depend b/stdlib/Depend
new file mode 100644
index 0000000000..f3e1156a4e
--- /dev/null
+++ b/stdlib/Depend
@@ -0,0 +1 @@
+localedata
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 509a7b2228..9a9ff8bd45 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -63,7 +63,7 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \
test-canon test-canon2 tst-strtoll tst-environ \
tst-xpg-basename tst-random tst-random2 tst-bsearch \
tst-limits tst-rand48 bug-strtod tst-setcontext \
- test-a64l tst-qsort tst-system testmb2
+ test-a64l tst-qsort tst-system testmb2 bug-strtod2
include ../Makeconfig
diff --git a/stdlib/bug-strtod2.c b/stdlib/bug-strtod2.c
new file mode 100644
index 0000000000..a1f037cdc8
--- /dev/null
+++ b/stdlib/bug-strtod2.c
@@ -0,0 +1,46 @@
+#include <locale.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static const char *tests[] =
+ {
+ "inf", "Inf", "iNf", "inF", "INf", "iNF", "INF", "InF",
+ "infinity", "Infinity", "InfInity", "INFINITY"
+ };
+#define ntests (sizeof (tests) / sizeof (tests[0]))
+
+static int
+do_test (void)
+{
+ /* The Turkish locale is notorious because tolower() maps 'I' to the
+ dotless lowercase 'i' and toupper() maps 'i' to an 'I' with a dot
+ above. */
+ if (setlocale (LC_ALL, "tr_TR.UTF-8") == NULL)
+ {
+ puts ("cannot set locale");
+ return 0;
+ }
+
+ int res = 0;
+ for (int i = 0; i < ntests; ++i)
+ {
+ char *endp;
+ double d = strtod (tests[i], &endp);
+ if (*endp != '\0')
+ {
+ printf ("did not consume all of '%s'\n", tests[i]);
+ res = 1;
+ }
+ if (!isinf (d))
+ {
+ printf ("'%s' does not pass isinf\n", tests[i]);
+ res = 1;
+ }
+ }
+
+ return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/cxa_atexit.c b/stdlib/cxa_atexit.c
index a3d4c5037d..490776105f 100644
--- a/stdlib/cxa_atexit.c
+++ b/stdlib/cxa_atexit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2005 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
@@ -16,8 +16,10 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <bits/libc-lock.h>
+#include <assert.h>
#include <stdlib.h>
+
+#include <bits/libc-lock.h>
#include "exit.h"
#undef __cxa_atexit
@@ -52,45 +54,60 @@ struct exit_function_list *__exit_funcs = &initial;
struct exit_function *
__new_exitfn (void)
{
+ struct exit_function_list *p = NULL;
struct exit_function_list *l;
+ struct exit_function *r = NULL;
size_t i = 0;
__libc_lock_lock (lock);
- for (l = __exit_funcs; l != NULL; l = l->next)
+ for (l = __exit_funcs; l != NULL; p = l, l = l->next)
{
- for (i = 0; i < l->idx; ++i)
- if (l->fns[i].flavor == ef_free)
+ for (i = l->idx; i > 0; --i)
+ if (l->fns[i - 1].flavor != ef_free)
break;
- if (i < l->idx)
+
+ if (i > 0)
break;
- if (l->idx < sizeof (l->fns) / sizeof (l->fns[0]))
- {
- i = l->idx++;
- break;
- }
+ /* This block is completely unused. */
+ l->idx = 0;
}
- if (l == NULL)
+ if (l == NULL || i == sizeof (l->fns) / sizeof (l->fns[0]))
{
- l = (struct exit_function_list *)
- malloc (sizeof (struct exit_function_list));
- if (l != NULL)
+ /* The last entry in a block is used. Use the first entry in
+ the previous block if it exists. Otherwise create a new one. */
+ if (p == NULL)
{
- l->next = __exit_funcs;
- __exit_funcs = l;
+ assert (l != NULL);
+ p = (struct exit_function_list *)
+ calloc (1, sizeof (struct exit_function_list));
+ if (p != NULL)
+ {
+ p->next = __exit_funcs;
+ __exit_funcs = p;
+ }
+ }
- l->idx = 1;
- i = 0;
+ if (p != NULL)
+ {
+ r = &p->fns[0];
+ p->idx = 1;
}
}
+ else
+ {
+ /* There is more room in the block. */
+ r = &l->fns[i];
+ l->idx = i + 1;
+ }
/* Mark entry as used, but we don't know the flavor now. */
- if (l != NULL)
- l->fns[i].flavor = ef_us;
+ if (r != NULL)
+ r->flavor = ef_us;
__libc_lock_unlock (lock);
- return l == NULL ? NULL : &l->fns[i];
+ return r;
}
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index bff7722e2c..085130cafa 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -188,7 +188,7 @@ extern long int strtol (__const char *__restrict __nptr,
extern unsigned long int strtoul (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__THROW __nonnull ((1)) __wur;
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
#if defined __GLIBC_HAVE_LONG_LONG && defined __USE_BSD
/* Convert a string to a quadword integer. */
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
index a656789f4c..3a1c1ebd4b 100644
--- a/stdlib/strtod_l.c
+++ b/stdlib/strtod_l.c
@@ -1,5 +1,5 @@
/* Convert string representing a number to float value, using given locale.
- Copyright (C) 1997,98,2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1997,98,2002,2004,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -100,7 +100,9 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
# define ISDIGIT(Ch) __iswdigit_l ((Ch), loc)
# define ISXDIGIT(Ch) __iswxdigit_l ((Ch), loc)
# define TOLOWER(Ch) __towlower_l ((Ch), loc)
-# define STRNCASECMP(S1, S2, N) __wcsncasecmp_l ((S1), (S2), (N), loc)
+# define TOLOWER_C(Ch) __towlower_l ((Ch), &_nl_C_locobj)
+# define STRNCASECMP(S1, S2, N) \
+ __wcsncasecmp_l ((S1), (S2), (N), &_nl_C_locobj)
# define STRTOULL(S, E, B) ____wcstoull_l_internal ((S), (E), (B), 0, loc)
#else
# define STRING_TYPE char
@@ -110,7 +112,9 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
# define ISDIGIT(Ch) __isdigit_l ((Ch), loc)
# define ISXDIGIT(Ch) __isxdigit_l ((Ch), loc)
# define TOLOWER(Ch) __tolower_l ((Ch), loc)
-# define STRNCASECMP(S1, S2, N) __strncasecmp_l ((S1), (S2), (N), loc)
+# define TOLOWER_C(Ch) __tolower_l ((Ch), &_nl_C_locobj)
+# define STRNCASECMP(S1, S2, N) \
+ __strncasecmp_l ((S1), (S2), (N), &_nl_C_locobj)
# define STRTOULL(S, E, B) ____strtoull_l_internal ((S), (E), (B), 0, loc)
#endif
@@ -554,7 +558,7 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc)
else if (c < L_('0') || c > L_('9'))
{
/* Check for `INF' or `INFINITY'. */
- if (TOLOWER (c) == L_('i') && STRNCASECMP (cp, L_("inf"), 3) == 0)
+ if (TOLOWER_C (c) == L_('i') && STRNCASECMP (cp, L_("inf"), 3) == 0)
{
/* Return +/- infinity. */
if (endptr != NULL)
@@ -565,7 +569,7 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc)
return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
}
- if (TOLOWER (c) == L_('n') && STRNCASECMP (cp, L_("nan"), 3) == 0)
+ if (TOLOWER_C (c) == L_('n') && STRNCASECMP (cp, L_("nan"), 3) == 0)
{
/* Return NaN. */
FLOAT retval = NAN;
diff --git a/sysdeps/alpha/ldiv.S b/sysdeps/alpha/ldiv.S
index 3909672782..0a971a7ed0 100644
--- a/sysdeps/alpha/ldiv.S
+++ b/sysdeps/alpha/ldiv.S
@@ -214,3 +214,5 @@ $divbyzero:
ret
.end ldiv
+
+weak_alias (ldiv, lldiv)
diff --git a/sysdeps/unix/sysv/i386/sigreturn.S b/sysdeps/generic/fdopendir.c
index edf4418c5b..597ccd5a5e 100644
--- a/sysdeps/unix/sysv/i386/sigreturn.S
+++ b/sysdeps/generic/fdopendir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 2005 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
@@ -16,12 +16,18 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdep.h>
+#include <errno.h>
+#include <stddef.h>
+#include <dirent.h>
-.text
-ENTRY (__sigreturn)
- addl $4, %esp /* Pop the return PC. */
- lcall $0xf, $0 /* Do the magic sigreturn trap. */
- /* NOTREACHED */
-weak_alias (__sigreturn, sigreturn)
+/* Open a directory stream on FD. */
+DIR *
+fdopendir (int fd)
+{
+ __set_errno (ENOSYS);
+ return NULL;
+}
+
+stub_warning (fdopendir)
+#include <stub-tag.h>
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 302ca77812..e5a4cdf7ed 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -149,7 +149,9 @@ float: 1
idouble: 1
ifloat: 1
Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
# cexp
@@ -354,7 +356,9 @@ ifloat: 1
ildouble: 2
ldouble: 2
Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
@@ -377,7 +381,9 @@ Test "Real part of: ctan (0.75 + 1.25 i) == 0.1608077859162064267251660581734386
ildouble: 1
ldouble: 1
Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
ildouble: 3
ldouble: 3
@@ -395,7 +401,9 @@ Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
float: 1
ifloat: 1
Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
+double: 1
float: 1
+idouble: 1
ifloat: 1
Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
double: 1
@@ -504,7 +512,9 @@ Test "j1 (0.75) == 0.349243602174862192523281016426251335":
double: 1
idouble: 1
Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
+double: 1
float: 1
+idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
@@ -551,7 +561,9 @@ Test "jn (1, 0.75) == 0.349243602174862192523281016426251335":
double: 1
idouble: 1
Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
+double: 1
float: 1
+idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
@@ -682,6 +694,7 @@ ldouble: 1
# sinh
Test "sinh (0.75) == 0.822316731935829980703661634446913849":
+double: 1
ildouble: 1
# tan
@@ -1087,7 +1100,9 @@ ildouble: 3
ldouble: 3
Function: Real part of "ctanh":
+double: 1
float: 1
+idouble: 1
ifloat: 1
ildouble: 5
ldouble: 5
@@ -1179,6 +1194,7 @@ ildouble: 1
ldouble: 1
Function: "sinh":
+double: 1
ildouble: 1
Function: "tan":
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index d97b95b5e0..934aae009c 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -1266,7 +1266,7 @@ match_prefix (const struct sockaddr_storage *ss, const struct prefixlist *list,
uint8_t *mask = list[idx].prefix.s6_addr;
uint8_t *val = in6->sin6_addr.s6_addr;
- while (bits > 8)
+ while (bits >= 8)
{
if (*mask != *val)
break;
@@ -1304,6 +1304,19 @@ get_precedence (const struct sockaddr_storage *ss)
}
+/* Find last bit set in a word. */
+static int
+fls (uint32_t a)
+{
+ uint32_t mask;
+ int n = 0;
+ for (n = 0, mask = 1 << 31; n < 32; mask >>= 1, ++n)
+ if ((a & mask) != 0)
+ break;
+ return n;
+}
+
+
static int
rfc3484_sort (const void *p1, const void *p2)
{
@@ -1407,8 +1420,10 @@ rfc3484_sort (const void *p1, const void *p2)
in2_dst = (struct sockaddr_in *) a2->dest_addr->ai_addr;
in2_src = (struct sockaddr_in *) &a2->source_addr;
- bit1 = ffs (in1_dst->sin_addr.s_addr ^ in1_src->sin_addr.s_addr);
- bit2 = ffs (in2_dst->sin_addr.s_addr ^ in2_src->sin_addr.s_addr);
+ bit1 = fls (ntohl (in1_dst->sin_addr.s_addr
+ ^ in1_src->sin_addr.s_addr));
+ bit2 = fls (ntohl (in2_dst->sin_addr.s_addr
+ ^ in2_src->sin_addr.s_addr));
}
else if (a1->dest_addr->ai_family == PF_INET6)
{
@@ -1435,10 +1450,10 @@ rfc3484_sort (const void *p1, const void *p2)
if (i < 4)
{
- bit1 = ffs (in1_dst->sin6_addr.s6_addr32[i]
- ^ in1_src->sin6_addr.s6_addr32[i]);
- bit2 = ffs (in2_dst->sin6_addr.s6_addr32[i]
- ^ in2_src->sin6_addr.s6_addr32[i]);
+ bit1 = fls (ntohl (in1_dst->sin6_addr.s6_addr32[i]
+ ^ in1_src->sin6_addr.s6_addr32[i]));
+ bit2 = fls (ntohl (in2_dst->sin6_addr.s6_addr32[i]
+ ^ in2_src->sin6_addr.s6_addr32[i]));
}
}
diff --git a/sysdeps/posix/spawni.c b/sysdeps/posix/spawni.c
index 69106c480e..27699f4df8 100644
--- a/sysdeps/posix/spawni.c
+++ b/sysdeps/posix/spawni.c
@@ -1,5 +1,5 @@
/* Guts of POSIX spawn interface. Generic POSIX.1 version.
- Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2000,2001,2002,2003,2004,2005 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
@@ -81,7 +81,15 @@ __spawni (pid_t *pid, const char *file,
short int flags = attrp == NULL ? 0 : attrp->__flags;
/* Generate the new process. */
- if (flags & POSIX_SPAWN_USEVFORK)
+ if ((flags & POSIX_SPAWN_USEVFORK) != 0
+ /* If no major work is done, allow using vfork. Note that we
+ might perform the path searching. But this would be done by
+ a call to execvp(), too, and such a call must be OK according
+ to POSIX. */
+ || ((flags & (POSIX_SPAWN_SETSIGMASK | POSIX_SPAWN_SETSIGDEF
+ | POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER
+ | POSIX_SPAWN_SETPGROUP | POSIX_SPAWN_RESETIDS)) == 0
+ && file_actions == NULL))
new_pid = __vfork ();
else
new_pid = __fork ();
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index 1ea3b60d9d..272431307c 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -535,6 +535,12 @@ idouble: 1
ifloat: 1
# y1
+Test "y1 (0.125) == -5.19993611253477499595928744876579921":
+double: 1
+idouble: 1
+Test "y1 (1.5) == -0.412308626973911295952829820633445323":
+float: 1
+ifloat: 1
Test "y1 (10.0) == 0.249015424206953883923283474663222803":
double: 3
float: 1
@@ -575,6 +581,12 @@ double: 1
float: 1
idouble: 1
ifloat: 1
+Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
+double: 1
+idouble: 1
+Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
+float: 2
+ifloat: 2
Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
double: 3
float: 1
@@ -590,6 +602,12 @@ double: 1
float: 2
idouble: 1
ifloat: 2
+Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
+double: 1
+idouble: 1
+Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
+double: 1
+idouble: 1
Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
double: 1
float: 2
diff --git a/sysdeps/powerpc/nofpu/Dist b/sysdeps/powerpc/nofpu/Dist
deleted file mode 100644
index 35a33ab2d5..0000000000
--- a/sysdeps/powerpc/nofpu/Dist
+++ /dev/null
@@ -1,3 +0,0 @@
-sim-full.c
-fenv_const.c
-soft-supp.h
diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
deleted file mode 100644
index f85cb0b7a3..0000000000
--- a/sysdeps/powerpc/nofpu/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# Makefile fragment for PowerPC with no FPU.
-
-ifeq ($(subdir),soft-fp)
-sysdep_routines += $(gcc-single-routines) $(gcc-double-routines) sim-full
-endif
-
-ifeq ($(subdir),math)
-libm-support += fenv_const fe_nomask
-endif
diff --git a/sysdeps/powerpc/nofpu/Versions b/sysdeps/powerpc/nofpu/Versions
deleted file mode 100644
index 4103db50bf..0000000000
--- a/sysdeps/powerpc/nofpu/Versions
+++ /dev/null
@@ -1,13 +0,0 @@
-libc {
- GLIBC_2.3.2 {
- __sim_exceptions; __sim_disabled_exceptions; __sim_round_mode;
- __adddf3; __addsf3; __divdf3; __divsf3; __eqdf2; __eqsf2;
- __extendsfdf2; __fixdfdi; __fixdfsi; __fixsfdi; __fixsfsi;
- __fixtfdi; __fixtfsi;
- __fixunsdfdi; __fixunsdfsi; __fixunssfdi; __fixunssfsi;
- __floatdidf; __floatdisf; __floatsidf; __floatsisf;
- __gedf2; __gesf2; __ledf2; __lesf2; __muldf3; __mulsf3;
- __negdf2; __negsf2; __sqrtdf2; __sqrtsf2; __subdf3;
- __subsf3; __truncdfsf2; __trunctfsf2;
- }
-}
diff --git a/sysdeps/powerpc/nofpu/fclrexcpt.c b/sysdeps/powerpc/nofpu/fclrexcpt.c
deleted file mode 100644
index 16e96baeaf..0000000000
--- a/sysdeps/powerpc/nofpu/fclrexcpt.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Clear floating-point exceptions (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__feclearexcept (int x)
-{
- __sim_exceptions &= ~x;
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feclearexcept, __old_feclearexcept)
-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fedisblxcpt.c b/sysdeps/powerpc/nofpu/fedisblxcpt.c
deleted file mode 100644
index 3d8dd4462f..0000000000
--- a/sysdeps/powerpc/nofpu/fedisblxcpt.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Disable exceptions (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <fenv.h>
-
-int
-fedisableexcept (int x)
-{
- int old_exceptions = ~__sim_disabled_exceptions & FE_ALL_EXCEPT;
-
- __sim_disabled_exceptions |= x;
-
- return old_exceptions;
-}
diff --git a/sysdeps/powerpc/nofpu/fegetenv.c b/sysdeps/powerpc/nofpu/fegetenv.c
deleted file mode 100644
index 3cc8b13dac..0000000000
--- a/sysdeps/powerpc/nofpu/fegetenv.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Store current floating-point environment (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <bp-sym.h>
-
-extern int __sim_exceptions;
-extern int __sim_disabled_exceptions;
-extern int __sim_round_mode;
-
-int
-__fegetenv (fenv_t *envp)
-{
- fenv_union_t u;
-
- u.l[0] = __sim_exceptions;
- u.l[0] |= __sim_round_mode;
- u.l[1] = __sim_disabled_exceptions;
-
- *envp = u.fenv;
-
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetenv, __old_fegetenv)
-compat_symbol (libm, BP_SYM (__old_fegetenv), BP_SYM (fegetenv), GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, BP_SYM (__fegetenv), BP_SYM (fegetenv), GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/feholdexcpt.c b/sysdeps/powerpc/nofpu/feholdexcpt.c
deleted file mode 100644
index 786c691a4b..0000000000
--- a/sysdeps/powerpc/nofpu/feholdexcpt.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Store current floating-point environment and clear exceptions
- (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-feholdexcept (fenv_t *envp)
-{
- fenv_union_t u;
-
- /* Get the current state. */
- fegetenv (envp);
-
- u.fenv = *envp;
- /* Clear everything except the rounding mode. */
- u.l[0] &= 0x3;
-
- /* ?? Should we clear the disabled exceptions as well ?? */
-
- /* Put the new state in effect. */
- fesetenv (envp);
-
- return 0;
-}
diff --git a/sysdeps/powerpc/nofpu/fenv_const.c b/sysdeps/powerpc/nofpu/fenv_const.c
deleted file mode 100644
index 7dc2e817c8..0000000000
--- a/sysdeps/powerpc/nofpu/fenv_const.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Constants for fenv_bits.h (soft float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* We want to specify the bit pattern of the __fe_*_env constants, so
- pretend they're really `long long' instead of `double'. */
-
-/* If the default argument is used we use this value. Disable all
- signalling exceptions as default. */
-const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
-0x000000003e000000ULL;
-
-/* Floating-point environment where none of the exceptions are masked. */
-const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) =
-0xfff80000000000f8ULL;
-
-/* Floating-point environment with the NI bit set. */
-const unsigned long long __fe_nonieee_env __attribute__ ((aligned (8))) =
-0xfff8000000000004ULL;
diff --git a/sysdeps/powerpc/nofpu/fesetenv.c b/sysdeps/powerpc/nofpu/fesetenv.c
deleted file mode 100644
index 43d03a45e2..0000000000
--- a/sysdeps/powerpc/nofpu/fesetenv.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Set floating point environment (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <bp-sym.h>
-
-extern int __sim_exceptions attribute_hidden;
-extern int __sim_disabled_exceptions attribute_hidden;
-extern int __sim_round_mode attribute_hidden;
-
-int
-__fesetenv (const fenv_t *envp)
-{
- fenv_union_t u;
-
- u.fenv = *envp;
- __sim_exceptions = u.l[0] & FE_ALL_EXCEPT;
- __sim_round_mode = u.l[0] & 0x3;
- __sim_disabled_exceptions = u.l[1];
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetenv, __old_fesetenv)
-compat_symbol (libm, BP_SYM (__old_fesetenv), BP_SYM (fesetenv), GLIBC_2_1);
-#endif
-
-libm_hidden_ver (__fesetenv, fesetenv)
-versioned_symbol (libm, BP_SYM (__fesetenv), BP_SYM (fesetenv), GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/feupdateenv.c b/sysdeps/powerpc/nofpu/feupdateenv.c
deleted file mode 100644
index 5073776e7d..0000000000
--- a/sysdeps/powerpc/nofpu/feupdateenv.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Install given floating-point environment and raise exceptions
- (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <bp-sym.h>
-
-int
-__feupdateenv (const fenv_t *envp)
-{
- fenv_union_t u;
- int saved_exceptions;
-
- /* Save currently set exceptions. */
- saved_exceptions = __sim_exceptions;
-
- /* Set environment. */
- fesetenv (envp);
-
- /* Raise old exceptions. */
- __sim_exceptions |= saved_exceptions;
-
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feupdateenv, __old_feupdateenv)
-compat_symbol (libm, BP_SYM (__old_feupdateenv), BP_SYM (feupdateenv), GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, BP_SYM (__feupdateenv), BP_SYM (feupdateenv), GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fgetexcptflg.c b/sysdeps/powerpc/nofpu/fgetexcptflg.c
deleted file mode 100644
index 713bd92881..0000000000
--- a/sysdeps/powerpc/nofpu/fgetexcptflg.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Store current representation for exceptions (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <bp-sym.h>
-
-__fegetexceptflag (fexcept_t *flagp, int excepts)
-{
- *flagp = (fexcept_t) __sim_exceptions & excepts & FE_ALL_EXCEPT;
-
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetexceptflag, __old_fegetexceptflag)
-compat_symbol (libm, BP_SYM (__old_fegetexceptflag), BP_SYM (fegetexceptflag), GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, BP_SYM (__fegetexceptflag), BP_SYM (fegetexceptflag), GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fraiseexcpt.c b/sysdeps/powerpc/nofpu/fraiseexcpt.c
deleted file mode 100644
index cd915027e1..0000000000
--- a/sysdeps/powerpc/nofpu/fraiseexcpt.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Raise given exceptions (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <signal.h>
-#include <bp-sym.h>
-
-#undef feraiseexcept
-int
-__feraiseexcept (int x)
-{
- __sim_exceptions |= x;
- if (x == 0 || __sim_disabled_exceptions & x)
- /* Ignore exception. */
- ;
- else
- raise (SIGFPE);
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feraiseexcept, __old_feraiseexcept)
-compat_symbol (libm, BP_SYM (__old_feraiseexcept), BP_SYM (feraiseexcept), GLIBC_2_1);
-#endif
-
-libm_hidden_ver (__feraiseexcept, feraiseexcept)
-versioned_symbol (libm, BP_SYM (__feraiseexcept), BP_SYM (feraiseexcept), GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fsetexcptflg.c b/sysdeps/powerpc/nofpu/fsetexcptflg.c
deleted file mode 100644
index 85fd88f01f..0000000000
--- a/sysdeps/powerpc/nofpu/fsetexcptflg.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Set floating-point environment exception handling (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <bp-sym.h>
-
-int
-__fesetexceptflag(const fexcept_t *flagp, int excepts)
-{
- /* Ignore exceptions not listed in 'excepts'. */
- __sim_exceptions = *flagp & excepts;
-
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetexceptflag, __old_fesetexceptflag)
-compat_symbol (libm, BP_SYM (__old_fesetexceptflag), BP_SYM (fesetexceptflag), GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, BP_SYM (__fesetexceptflag), BP_SYM (fesetexceptflag), GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/ftestexcept.c b/sysdeps/powerpc/nofpu/ftestexcept.c
deleted file mode 100644
index ce8044fe0a..0000000000
--- a/sysdeps/powerpc/nofpu/ftestexcept.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Test floating-point exceptions (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-fetestexcept (int x)
-{
- return __sim_exceptions & x;
-}
diff --git a/sysdeps/powerpc/nofpu/libm-test-ulps b/sysdeps/powerpc/nofpu/libm-test-ulps
deleted file mode 100644
index 73172b49a0..0000000000
--- a/sysdeps/powerpc/nofpu/libm-test-ulps
+++ /dev/null
@@ -1,890 +0,0 @@
-# Begin of automatic generation
-
-# atan2
-Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
-float: 3
-ifloat: 3
-Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
-float: 3
-ifloat: 3
-Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
-float: 1
-ifloat: 1
-
-# atanh
-Test "atanh (0.75) == 0.972955074527656652552676371721589865":
-float: 1
-ifloat: 1
-
-# cacosh
-Test "Real part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
-double: 1
-float: 7
-idouble: 1
-ifloat: 7
-Test "Imaginary part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-
-# casin
-Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# casinh
-Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
-double: 3
-float: 6
-idouble: 3
-ifloat: 6
-Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# catan
-Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
-float: 3
-ifloat: 3
-Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
-float: 4
-ifloat: 4
-
-# catanh
-Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
-double: 4
-idouble: 4
-Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
-float: 4
-ifloat: 4
-Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-double: 1
-idouble: 1
-Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-float: 6
-ifloat: 6
-
-# cbrt
-Test "cbrt (-27.0) == -3.0":
-double: 1
-idouble: 1
-Test "cbrt (0.75) == 0.908560296416069829445605878163630251":
-double: 1
-idouble: 1
-Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217":
-double: 1
-idouble: 1
-
-# ccos
-Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
-float: 1
-ifloat: 1
-Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-float: 1
-ifloat: 1
-
-# ccosh
-Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
-float: 1
-ifloat: 1
-Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-float: 1
-ifloat: 1
-
-# cexp
-Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
-float: 1
-ifloat: 1
-Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
-float: 1
-ifloat: 1
-
-# clog
-Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
-float: 3
-ifloat: 3
-Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
-float: 1
-ifloat: 1
-
-# clog10
-Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
-double: 1
-float: 5
-idouble: 1
-ifloat: 5
-Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
-float: 1
-ifloat: 1
-Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
-float: 1
-ifloat: 1
-
-# cos
-Test "cos (M_PI_6l * 2.0) == 0.5":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "cos (M_PI_6l * 4.0) == -0.5":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "cos (pi/2) == 0":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# cpow
-Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-float: 1
-ifloat: 1
-Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-# csinh
-Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
-double: 1
-idouble: 1
-Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-float: 1
-ifloat: 1
-
-# csqrt
-Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
-float: 1
-ifloat: 1
-Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
-float: 1
-ifloat: 1
-
-# ctan
-Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-double: 1
-idouble: 1
-
-# ctanh
-Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
-double: 1
-idouble: 1
-
-# erf
-Test "erf (1.25) == 0.922900128256458230136523481197281140":
-double: 1
-idouble: 1
-
-# erfc
-Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
-double: 1
-idouble: 1
-Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
-double: 1
-idouble: 1
-
-# exp10
-Test "exp10 (-1) == 0.1":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "exp10 (3) == 1000":
-double: 6
-float: 2
-idouble: 6
-ifloat: 2
-
-# expm1
-Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
-double: 1
-idouble: 1
-Test "expm1 (1) == M_El - 1.0":
-float: 1
-ifloat: 1
-
-# hypot
-Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-
-# j0
-Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "j0 (0.75) == 0.864242275166648623555731103820923211":
-float: 1
-ifloat: 1
-Test "j0 (10.0) == -0.245935764451348335197760862485328754":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "j0 (2.0) == 0.223890779141235668051827454649948626":
-float: 2
-ifloat: 2
-Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "j0 (8.0) == 0.171650807137553906090869407851972001":
-float: 1
-ifloat: 1
-
-# j1
-Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
-float: 2
-ifloat: 2
-Test "j1 (2.0) == 0.576724807756873387202448242269137087":
-double: 1
-idouble: 1
-Test "j1 (8.0) == 0.234636346853914624381276651590454612":
-double: 1
-idouble: 1
-
-# jn
-Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
-float: 1
-ifloat: 1
-Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
-float: 2
-ifloat: 2
-Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
-float: 1
-ifloat: 1
-Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
-float: 2
-ifloat: 2
-Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
-double: 1
-idouble: 1
-Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
-double: 1
-idouble: 1
-Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
-float: 4
-ifloat: 4
-Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-# lgamma
-Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-# log10
-Test "log10 (0.75) == -0.124938736608299953132449886193870744":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "log10 (e) == log10(e)":
-float: 1
-ifloat: 1
-
-# log1p
-Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
-float: 1
-ifloat: 1
-
-# sincos
-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
-float: 1
-ifloat: 1
-
-# tan
-Test "tan (pi/4) == 1":
-double: 1
-idouble: 1
-
-# tgamma
-Test "tgamma (-0.5) == -2 sqrt (pi)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0.5) == sqrt (pi)":
-float: 1
-ifloat: 1
-Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# y0
-Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "y0 (1.5) == 0.382448923797758843955068554978089862":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
-float: 1
-ifloat: 1
-Test "y0 (8.0) == 0.223521489387566220527323400498620359":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# y1
-Test "y1 (0.125) == -5.19993611253477499595928744876579921":
-double: 1
-idouble: 1
-Test "y1 (1.5) == -0.412308626973911295952829820633445323":
-float: 1
-ifloat: 1
-Test "y1 (10.0) == 0.249015424206953883923283474663222803":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "y1 (2.0) == -0.107032431540937546888370772277476637":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "y1 (8.0) == -0.158060461731247494255555266187483550":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-# yn
-Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
-float: 1
-ifloat: 1
-Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
-double: 1
-idouble: 1
-Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
-float: 1
-ifloat: 1
-Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
-double: 1
-idouble: 1
-Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
-double: 1
-idouble: 1
-Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
-double: 2
-idouble: 2
-Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
-double: 1
-idouble: 1
-Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
-double: 1
-idouble: 1
-
-# Maximal error of functions:
-Function: "atan2":
-float: 3
-ifloat: 3
-
-Function: "atanh":
-float: 1
-ifloat: 1
-
-Function: Real part of "cacosh":
-double: 1
-float: 7
-idouble: 1
-ifloat: 7
-
-Function: Imaginary part of "cacosh":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-
-Function: Real part of "casin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "casinh":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-
-Function: Imaginary part of "casinh":
-double: 3
-float: 6
-idouble: 3
-ifloat: 6
-
-Function: Real part of "catan":
-float: 4
-ifloat: 4
-
-Function: Imaginary part of "catan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "catanh":
-double: 4
-idouble: 4
-
-Function: Imaginary part of "catanh":
-float: 6
-ifloat: 6
-
-Function: "cbrt":
-double: 1
-idouble: 1
-
-Function: Real part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "ccos":
-float: 1
-ifloat: 1
-
-Function: Real part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "ccosh":
-float: 1
-ifloat: 1
-
-Function: Real part of "cexp":
-float: 1
-ifloat: 1
-
-Function: Imaginary part of "cexp":
-float: 1
-ifloat: 1
-
-Function: Real part of "clog":
-float: 1
-ifloat: 1
-
-Function: Imaginary part of "clog":
-float: 3
-ifloat: 3
-
-Function: Real part of "clog10":
-float: 1
-ifloat: 1
-
-Function: Imaginary part of "clog10":
-double: 1
-float: 5
-idouble: 1
-ifloat: 5
-
-Function: "cos":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: Real part of "cpow":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-
-Function: Imaginary part of "cpow":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-Function: Real part of "csinh":
-float: 1
-ifloat: 1
-
-Function: Imaginary part of "csinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "csqrt":
-float: 1
-ifloat: 1
-
-Function: Real part of "ctan":
-double: 1
-idouble: 1
-
-Function: Imaginary part of "ctan":
-double: 1
-idouble: 1
-
-Function: Real part of "ctanh":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: Imaginary part of "ctanh":
-float: 1
-ifloat: 1
-
-Function: "erf":
-double: 1
-idouble: 1
-
-Function: "erfc":
-double: 1
-idouble: 1
-
-Function: "exp10":
-double: 6
-float: 2
-idouble: 6
-ifloat: 2
-
-Function: "expm1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "hypot":
-float: 1
-ifloat: 1
-
-Function: "j0":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-
-Function: "j1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "jn":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-
-Function: "lgamma":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "log10":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-Function: "log1p":
-float: 1
-ifloat: 1
-
-Function: "sincos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "tan":
-double: 1
-idouble: 1
-
-Function: "tgamma":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: "y0":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: "y1":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-
-Function: "yn":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-
-# end of automatic generation
diff --git a/sysdeps/powerpc/nofpu/sim-full.c b/sysdeps/powerpc/nofpu/sim-full.c
deleted file mode 100644
index d018240e6d..0000000000
--- a/sysdeps/powerpc/nofpu/sim-full.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Software floating-point exception handling emulation.
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <signal.h>
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-/* Global to store sticky exceptions. */
-int __sim_exceptions __attribute__ ((nocommon));
-libc_hidden_data_def (__sim_exceptions);
-
-/* By default, no exceptions should trap. */
-int __sim_disabled_exceptions = 0xffffffff;
-libc_hidden_data_def (__sim_disabled_exceptions);
-
-int __sim_round_mode __attribute__ ((nocommon));
-libc_hidden_data_def (__sim_round_mode);
-
-void
-__simulate_exceptions (int x)
-{
- __sim_exceptions |= x;
- if (x == 0 || __sim_disabled_exceptions & x)
- /* Ignore exception. */
- ;
- else
- raise (SIGFPE);
-}
diff --git a/sysdeps/powerpc/nofpu/soft-supp.h b/sysdeps/powerpc/nofpu/soft-supp.h
deleted file mode 100644
index 3922426bd0..0000000000
--- a/sysdeps/powerpc/nofpu/soft-supp.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Internal support stuff for complete soft float.
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv.h>
-
-typedef union
-{
- fenv_t fenv;
- unsigned int l[2];
-} fenv_union_t;
-
-
-extern int __sim_exceptions;
-libc_hidden_proto (__sim_exceptions);
-extern int __sim_disabled_exceptions;
-libc_hidden_proto (__sim_disabled_exceptions);
-extern int __sim_round_mode;
-libc_hidden_proto (__sim_round_mode);
-
-extern void __simulate_exceptions (int x) attribute_hidden;
diff --git a/sysdeps/unix/alpha/sysdep.h b/sysdeps/unix/alpha/sysdep.h
index f9f1dd6e41..a154db8e41 100644
--- a/sysdeps/unix/alpha/sysdep.h
+++ b/sysdeps/unix/alpha/sysdep.h
@@ -242,9 +242,10 @@ __LABEL(name) \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_16 __asm__("$16"); \
register long _sc_19 __asm__("$19"); \
+ register long _tmp_16 = (long) (arg1); \
\
_sc_0 = name; \
- _sc_16 = (long) (arg1); \
+ _sc_16 = _tmp_16; \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3" \
: inline_syscall_r0_out_constraint (_sc_0), \
@@ -261,10 +262,12 @@ __LABEL(name) \
register long _sc_16 __asm__("$16"); \
register long _sc_17 __asm__("$17"); \
register long _sc_19 __asm__("$19"); \
+ register long _tmp_16 = (long) (arg1); \
+ register long _tmp_17 = (long) (arg2); \
\
_sc_0 = name; \
- _sc_16 = (long) (arg1); \
- _sc_17 = (long) (arg2); \
+ _sc_16 = _tmp_16; \
+ _sc_17 = _tmp_17; \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4" \
: inline_syscall_r0_out_constraint (_sc_0), \
@@ -282,11 +285,14 @@ __LABEL(name) \
register long _sc_17 __asm__("$17"); \
register long _sc_18 __asm__("$18"); \
register long _sc_19 __asm__("$19"); \
+ register long _tmp_16 = (long) (arg1); \
+ register long _tmp_17 = (long) (arg2); \
+ register long _tmp_18 = (long) (arg3); \
\
_sc_0 = name; \
- _sc_16 = (long) (arg1); \
- _sc_17 = (long) (arg2); \
- _sc_18 = (long) (arg3); \
+ _sc_16 = _tmp_16; \
+ _sc_17 = _tmp_17; \
+ _sc_18 = _tmp_18; \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4 %5" \
: inline_syscall_r0_out_constraint (_sc_0), \
@@ -305,12 +311,16 @@ __LABEL(name) \
register long _sc_17 __asm__("$17"); \
register long _sc_18 __asm__("$18"); \
register long _sc_19 __asm__("$19"); \
+ register long _tmp_16 = (long) (arg1); \
+ register long _tmp_17 = (long) (arg2); \
+ register long _tmp_18 = (long) (arg3); \
+ register long _tmp_19 = (long) (arg4); \
\
_sc_0 = name; \
- _sc_16 = (long) (arg1); \
- _sc_17 = (long) (arg2); \
- _sc_18 = (long) (arg3); \
- _sc_19 = (long) (arg4); \
+ _sc_16 = _tmp_16; \
+ _sc_17 = _tmp_17; \
+ _sc_18 = _tmp_18; \
+ _sc_19 = _tmp_19; \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4 %5 %6" \
: inline_syscall_r0_out_constraint (_sc_0), \
@@ -330,13 +340,18 @@ __LABEL(name) \
register long _sc_18 __asm__("$18"); \
register long _sc_19 __asm__("$19"); \
register long _sc_20 __asm__("$20"); \
+ register long _tmp_16 = (long) (arg1); \
+ register long _tmp_17 = (long) (arg2); \
+ register long _tmp_18 = (long) (arg3); \
+ register long _tmp_19 = (long) (arg4); \
+ register long _tmp_20 = (long) (arg5); \
\
_sc_0 = name; \
- _sc_16 = (long) (arg1); \
- _sc_17 = (long) (arg2); \
- _sc_18 = (long) (arg3); \
- _sc_19 = (long) (arg4); \
- _sc_20 = (long) (arg5); \
+ _sc_16 = _tmp_16; \
+ _sc_17 = _tmp_17; \
+ _sc_18 = _tmp_18; \
+ _sc_19 = _tmp_19; \
+ _sc_20 = _tmp_20; \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7" \
: inline_syscall_r0_out_constraint (_sc_0), \
@@ -357,14 +372,20 @@ __LABEL(name) \
register long _sc_19 __asm__("$19"); \
register long _sc_20 __asm__("$20"); \
register long _sc_21 __asm__("$21"); \
+ register long _tmp_16 = (long) (arg1); \
+ register long _tmp_17 = (long) (arg2); \
+ register long _tmp_18 = (long) (arg3); \
+ register long _tmp_19 = (long) (arg4); \
+ register long _tmp_20 = (long) (arg5); \
+ register long _tmp_21 = (long) (arg6); \
\
_sc_0 = name; \
- _sc_16 = (long) (arg1); \
- _sc_17 = (long) (arg2); \
- _sc_18 = (long) (arg3); \
- _sc_19 = (long) (arg4); \
- _sc_20 = (long) (arg5); \
- _sc_21 = (long) (arg6); \
+ _sc_16 = _tmp_16; \
+ _sc_17 = _tmp_17; \
+ _sc_18 = _tmp_18; \
+ _sc_19 = _tmp_19; \
+ _sc_20 = _tmp_20; \
+ _sc_21 = _tmp_21; \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7 %8" \
: inline_syscall_r0_out_constraint (_sc_0), \
diff --git a/sysdeps/powerpc/nofpu/feenablxcpt.c b/sysdeps/unix/fdopendir.c
index 060e450590..3c481fcf0d 100644
--- a/sysdeps/powerpc/nofpu/feenablxcpt.c
+++ b/sysdeps/unix/fdopendir.c
@@ -1,6 +1,4 @@
-/* Enable exceptions (soft-float edition).
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
+/* Copyright (C) 2005 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
@@ -18,16 +16,27 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <fenv.h>
+#include <dirent.h>
+#include <errno.h>
+#include <sys/stat.h>
-extern int __sim_disabled_exceptions;
+#include <not-cancel.h>
-int
-feenableexcept (int exceptions)
-{
- int old_exceptions = ~__sim_disabled_exceptions & FE_ALL_EXCEPT;
-
- __sim_disabled_exceptions &= ~exceptions;
- return old_exceptions;
+DIR *
+fdopendir (int fd)
+{
+ struct stat64 statbuf;
+
+ if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &statbuf), 0) < 0)
+ goto out;
+ if (__builtin_expect (! S_ISDIR (statbuf.st_mode), 0))
+ {
+ __set_errno (ENOTDIR);
+ out:
+ close_not_cancel_no_status (fd);
+ return NULL;
+ }
+
+ return __alloc_dir (fd, &statbuf);
}
diff --git a/sysdeps/unix/opendir.c b/sysdeps/unix/opendir.c
index 5e03ed9b20..366670b79c 100644
--- a/sysdeps/unix/opendir.c
+++ b/sysdeps/unix/opendir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1996,98,2000-2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1996,98,2000-2003,2005 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
@@ -78,11 +78,7 @@ tryopen_o_directory (void)
DIR *
__opendir (const char *name)
{
- DIR *dirp;
struct stat64 statbuf;
- int fd;
- size_t allocation;
- int save_errno;
if (__builtin_expect (name[0], '\1') == '\0')
{
@@ -113,7 +109,7 @@ __opendir (const char *name)
}
}
- fd = open_not_cancel_2 (name, O_RDONLY|O_NDELAY|EXTRA_FLAGS|O_LARGEFILE);
+ int fd = open_not_cancel_2 (name, O_RDONLY|O_NDELAY|EXTRA_FLAGS|O_LARGEFILE);
if (__builtin_expect (fd, 0) < 0)
return NULL;
@@ -129,18 +125,30 @@ __opendir (const char *name)
{
if (__builtin_expect (! S_ISDIR (statbuf.st_mode), 0))
{
- save_errno = ENOTDIR;
- goto lose;
+ __set_errno (ENOTDIR);
+ lose:
+ close_not_cancel_no_status (fd);
+ return NULL;
}
}
+ return __alloc_dir (fd, &statbuf);
+}
+weak_alias (__opendir, opendir)
+
+
+DIR *
+internal_function
+__alloc_dir (int fd, struct stat64 *statp)
+{
if (__builtin_expect (__fcntl (fd, F_SETFD, FD_CLOEXEC), 0) < 0)
goto lose;
+ size_t allocation;
#ifdef _STATBUF_ST_BLKSIZE
- if (__builtin_expect ((size_t) statbuf.st_blksize >= sizeof (struct dirent64),
+ if (__builtin_expect ((size_t) statp->st_blksize >= sizeof (struct dirent64),
1))
- allocation = statbuf.st_blksize;
+ allocation = statp->st_blksize;
else
#endif
allocation = (BUFSIZ < sizeof (struct dirent64)
@@ -148,11 +156,11 @@ __opendir (const char *name)
const int pad = -sizeof (DIR) % __alignof__ (struct dirent64);
- dirp = (DIR *) malloc (sizeof (DIR) + allocation + pad);
+ DIR *dirp = (DIR *) malloc (sizeof (DIR) + allocation + pad);
if (dirp == NULL)
lose:
{
- save_errno = errno;
+ int save_errno = errno;
close_not_cancel_no_status (fd);
__set_errno (save_errno);
return NULL;
@@ -166,4 +174,3 @@ __opendir (const char *name)
return dirp;
}
-weak_alias (__opendir, opendir)
diff --git a/sysdeps/unix/sockatmark.c b/sysdeps/unix/sockatmark.c
index 306ab36ee1..a2476415ac 100644
--- a/sysdeps/unix/sockatmark.c
+++ b/sysdeps/unix/sockatmark.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005 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
@@ -24,5 +24,7 @@ int
sockatmark (fd)
int fd;
{
- return __ioctl (fd, SIOCATMARK);
+ int answ;
+
+ return __ioctl (fd, SIOCATMARK, &answ) == -1 ? -1 : answ;
}
diff --git a/sysdeps/unix/sysv/i386/signal.S b/sysdeps/unix/sysv/i386/signal.S
deleted file mode 100644
index af51bc5182..0000000000
--- a/sysdeps/unix/sysv/i386/signal.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 1992, 1997 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-
-/* This is just a standard system call, except we need to load %edx
- with the address of the `__sigreturn' function. */
-
- .globl syscall_error
- .globl C_SYMBOL_NAME(__sigreturn)
-ENTRY (signal)
- lea SYS_signal, %eax
- lea C_SYMBOL_NAME(__sigreturn), %edx
- .byte 0x9a, 0, 0, 0, 0, 7, 0 /* lcall $7, $0 -- GAS bug. */
- jb syscall_error
- ret
diff --git a/sysdeps/unix/sysv/linux/lddlibc4.c b/sysdeps/unix/sysv/linux/lddlibc4.c
index f7b208e7d8..7683ec2efd 100644
--- a/sysdeps/unix/sysv/linux/lddlibc4.c
+++ b/sysdeps/unix/sysv/linux/lddlibc4.c
@@ -1,5 +1,5 @@
/* Stub for ldd script to print Linux libc4 dependencies.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -84,5 +84,5 @@ main (int argc, char *argv[])
putenv (buf);
/* Now we can execute the binary. */
- return execl (filename, NULL) ? 4 : 0;
+ return execv (filename, &argv[argc]) ? 4 : 0;
}
diff --git a/sysdeps/unix/sysv/linux/mips/brk.c b/sysdeps/unix/sysv/linux/mips/brk.c
index 4be88a9c5f..5c31bec5ee 100644
--- a/sysdeps/unix/sysv/linux/mips/brk.c
+++ b/sysdeps/unix/sysv/linux/mips/brk.c
@@ -1,5 +1,5 @@
/* brk system call for Linux/MIPS.
- Copyright (C) 2000 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2005 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
@@ -37,9 +37,10 @@ __brk (void *addr)
register long int res __asm__ ("$2");
asm ("move\t$4,%2\n\t"
+ "li\t%0,%1\n\t"
"syscall" /* Perform the system call. */
: "=r" (res)
- : "0" (SYS_ify (brk)), "r" (addr)
+ : "I" (SYS_ify (brk)), "r" (addr)
: "$4", "$7");
newbrk = (void *) res;
}
diff --git a/sysdeps/unix/sysv/linux/mips/getpagesize.c b/sysdeps/unix/sysv/linux/mips/getpagesize.c
new file mode 100644
index 0000000000..49492e5137
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/getpagesize.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/ia64/getpagesize.c>
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S b/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S
index 7b14089bcb..e4b4f00a8c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S
@@ -1,4 +1,4 @@
-/* Copyright 2003 Free Software Foundation, Inc.
+/* Copyright 2003, 2005 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
@@ -25,16 +25,16 @@
.text
ENTRY (__ioctl)
+ sll a1, a1, 0
li v0, __NR_ioctl
- sll a1,a1,0
syscall /* Do the system call. */
bne a3, zero, L(error)
ret
L(error):
- .cpsetup t9, a0, __ioctl
- PTR_LA t9,__syscall_error
- .cprestore
+ SETUP_GP64 (a0, __ioctl)
+ PTR_LA t9, __syscall_error
+ RESTORE_GP64
jr t9
PSEUDO_END (__ioctl)
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/syscall.S b/sysdeps/unix/sysv/linux/mips/mips64/syscall.S
index ea5bf491d6..3c6aaac810 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/syscall.S
+++ b/sysdeps/unix/sysv/linux/mips/mips64/syscall.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2003, 2005 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
@@ -20,17 +20,20 @@
#include <sys/asm.h>
-/* Please consult the file sysdeps/unix/sysv/linux/x86-64/sysdep.h for
- more information about the value -4095 used below. */
+/* Usage:
+ long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
-/* Usage: long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5)
- We need to do some arg shifting, the syscall_number will be in
- rax. */
+ We need to do some arg shifting, syscall_number will be in v0. */
.text
-ENTRY (syscall)
- move v0, a0 /* Syscall number -> v0 */
+NESTED (syscall, SZREG, ra)
+ .mask 0x00010000, -SZREG
+ .fmask 0x00000000, 0
+ PTR_ADDIU sp, -SZREG
+ REG_S s0, (sp)
+
+ move s0, a0
move a0, a1 /* shift arg1 - arg7. */
move a1, a2
move a2, a3
@@ -39,15 +42,19 @@ ENTRY (syscall)
move a5, a6
move a6, a7
+ move v0, s0 /* Syscall number -> v0 */
syscall /* Do the system call. */
+
+ REG_L s0, (sp)
+ PTR_ADDIU sp, SZREG
bne a3, zero, L(error)
ret
L(error):
- .cpsetup t9, a0, syscall
- PTR_LA t9,__syscall_error
- .cprestore
+ SETUP_GP64 (a0, syscall)
+ PTR_LA t9, __syscall_error
+ RESTORE_GP64
jr t9
-PSEUDO_END (syscall)
+END (syscall)
diff --git a/timezone/zdump.c b/timezone/zdump.c
index 659f572b98..d767d75fb7 100644
--- a/timezone/zdump.c
+++ b/timezone/zdump.c
@@ -12,6 +12,7 @@ static char elsieid[] = "@(#)zdump.c 7.66";
#include "time.h" /* for struct tm */
#include "stdlib.h" /* for exit, malloc, atoi */
#include "float.h" /* for FLT_MAX and DBL_MAX */
+#include <ctype.h> /* for isascii, isalpha, isdigit */
#ifndef ZDUMP_LO_YEAR
#define ZDUMP_LO_YEAR (-500)
diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
index 78b3e5b4e7..65de855837 100644
--- a/wcsmbs/Makefile
+++ b/wcsmbs/Makefile
@@ -40,7 +40,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
wcsmbsload mbsrtowcs_l
tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
- tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h
+ tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2
include ../Rules
diff --git a/wcsmbs/tst-mbrtowc2.c b/wcsmbs/tst-mbrtowc2.c
new file mode 100644
index 0000000000..4314bdb137
--- /dev/null
+++ b/wcsmbs/tst-mbrtowc2.c
@@ -0,0 +1,67 @@
+/* Derived from the test case in http://sourceware.org/bugzilla/show_bug.cgi?id=714 */
+#include <locale.h>
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+
+
+static struct
+{
+ const char *chp;
+ size_t nchp;
+ const char *loc;
+} tests[] =
+{
+ { (const char[]) { 0x8F, 0xA2, 0xAF }, 3, "ja_JP.EUC-JP" },
+ { (const char[]) { 0xD1, 0xA5 }, 2, "ja_JP.EUC-JP" },
+ { (const char[]) { 0x8E, 0xA5 }, 2, "ja_JP.EUC-JP" },
+ { (const char[]) { 0x8E, 0xA2, 0xA1, 0xA1 }, 4, "zh_TW.EUC-TW" },
+ { (const char[]) { 0xA1, 0xA1 }, 2, "zh_TW.EUC-TW" },
+ { (const char[]) { 0xE3, 0x80, 0x80 }, 3, "en_US.UTF-8" },
+ { (const char[]) { 0xC3, 0xA4 }, 2, "en_US.UTF-8" }
+};
+#define ntests (sizeof (tests) / sizeof (tests[0]))
+
+
+static int t (const char *ch, size_t nch, const char *loc);
+
+static int
+do_test (void)
+{
+ int r = 0;
+ for (int i = 0; i < ntests; ++i)
+ r |= t (tests[i].chp, tests[i].nchp, tests[i].loc);
+ return r;
+}
+
+static int
+t (const char *ch, size_t nch, const char *loc)
+{
+ int i;
+ wchar_t wch;
+ wchar_t wch2;
+ mbstate_t mbs;
+ int n = 0;
+
+ setlocale (LC_ALL, loc);
+
+ memset (&mbs, '\0', sizeof (mbstate_t));
+ for (i = 0; i < nch; i++)
+ {
+ n = mbrtowc (&wch, ch + i, 1, &mbs);
+ if (n >= 0)
+ break;
+ }
+ printf ("n = %d, count = %d, wch = %08lX\n", n, i, (unsigned long int) wch);
+
+ memset (&mbs, '\0', sizeof (mbstate_t));
+ n = mbrtowc (&wch2, ch, nch, &mbs);
+ printf ("n = %d, wch = %08lX\n", n, (unsigned long int) wch2);
+
+ int ret = n != nch || i + 1 != nch || n != nch || wch != wch2;
+ puts (ret ? "FAIL\n" : "OK\n");
+ return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/wctype/wctype.h b/wctype/wctype.h
index f5519aa4eb..5bfe43895c 100644
--- a/wctype/wctype.h
+++ b/wctype/wctype.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2002, 2005 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
@@ -44,7 +44,6 @@ typedef unsigned int wint_t;
# ifdef __USE_ISOC99
__USING_NAMESPACE_C99(wint_t)
# endif
-__END_NAMESPACE_C99
# endif
/* Constant expression of type `wint_t' whose value does not correspond