]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Updated to fedora-glibc-20051003T2040
authorJakub Jelinek <jakub@redhat.com>
Mon, 3 Oct 2005 20:44:20 +0000 (20:44 +0000)
committerJakub Jelinek <jakub@redhat.com>
Mon, 3 Oct 2005 20:44:20 +0000 (20:44 +0000)
269 files changed:
BUGS
ChangeLog
Makefile
argp/argp-eexst.c
argp/argp-fmtstream.c
argp/argp-fmtstream.h
argp/argp-fs-xinl.c
argp/argp-xinl.c
debug/xtrace.sh
dirent/Makefile
dirent/Versions
dirent/dirent.h
dirent/tst-fdopendir.c [new file with mode: 0644]
dlfcn/Makefile
dlfcn/bug-atexit1-lib.c [new file with mode: 0644]
dlfcn/bug-atexit1.c [new file with mode: 0644]
dlfcn/bug-atexit2-lib.c [new file with mode: 0644]
dlfcn/bug-atexit2.c [new file with mode: 0644]
elf/dl-load.c
elf/dl-tsd.c
elf/rtld.c
fedora/branch.mk
iconv/loop.c
iconvdata/Makefile
iconvdata/TESTS
iconvdata/gconv-modules
iconvdata/ibm1008.c [new file with mode: 0644]
iconvdata/ibm1008.h [new file with mode: 0644]
iconvdata/ibm1008_420.c [new file with mode: 0644]
iconvdata/ibm1097.c [new file with mode: 0644]
iconvdata/ibm1097.h [new file with mode: 0644]
iconvdata/ibm1112.c [new file with mode: 0644]
iconvdata/ibm1112.h [new file with mode: 0644]
iconvdata/ibm1123.c [new file with mode: 0644]
iconvdata/ibm1123.h [new file with mode: 0644]
iconvdata/ibm1130.c [new file with mode: 0644]
iconvdata/ibm1130.h [new file with mode: 0644]
iconvdata/ibm1140.c [new file with mode: 0644]
iconvdata/ibm1140.h [new file with mode: 0644]
iconvdata/ibm1141.c [new file with mode: 0644]
iconvdata/ibm1141.h [new file with mode: 0644]
iconvdata/ibm1142.c [new file with mode: 0644]
iconvdata/ibm1142.h [new file with mode: 0644]
iconvdata/ibm1143.c [new file with mode: 0644]
iconvdata/ibm1143.h [new file with mode: 0644]
iconvdata/ibm1144.c [new file with mode: 0644]
iconvdata/ibm1144.h [new file with mode: 0644]
iconvdata/ibm1145.c [new file with mode: 0644]
iconvdata/ibm1145.h [new file with mode: 0644]
iconvdata/ibm1146.c [new file with mode: 0644]
iconvdata/ibm1146.h [new file with mode: 0644]
iconvdata/ibm1147.c [new file with mode: 0644]
iconvdata/ibm1147.h [new file with mode: 0644]
iconvdata/ibm1148.c [new file with mode: 0644]
iconvdata/ibm1148.h [new file with mode: 0644]
iconvdata/ibm1149.c [new file with mode: 0644]
iconvdata/ibm1149.h [new file with mode: 0644]
iconvdata/ibm1166.c [new file with mode: 0644]
iconvdata/ibm1166.h [new file with mode: 0644]
iconvdata/ibm1167.c [new file with mode: 0644]
iconvdata/ibm1167.h [new file with mode: 0644]
iconvdata/ibm12712.c [new file with mode: 0644]
iconvdata/ibm12712.h [new file with mode: 0644]
iconvdata/ibm16804.c [new file with mode: 0644]
iconvdata/ibm16804.h [new file with mode: 0644]
iconvdata/ibm4517.c [new file with mode: 0644]
iconvdata/ibm4517.h [new file with mode: 0644]
iconvdata/ibm4899.c [new file with mode: 0644]
iconvdata/ibm4899.h [new file with mode: 0644]
iconvdata/ibm4909.c [new file with mode: 0644]
iconvdata/ibm4909.h [new file with mode: 0644]
iconvdata/ibm4971.c [new file with mode: 0644]
iconvdata/ibm4971.h [new file with mode: 0644]
iconvdata/ibm5347.c [new file with mode: 0644]
iconvdata/ibm5347.h [new file with mode: 0644]
iconvdata/ibm803.c [new file with mode: 0644]
iconvdata/ibm803.h [new file with mode: 0644]
iconvdata/ibm901.c [moved from sysdeps/powerpc/nofpu/fesetround.c with 70% similarity]
iconvdata/ibm901.h [new file with mode: 0644]
iconvdata/ibm902.c [moved from sysdeps/powerpc/nofpu/fegetexcept.c with 69% similarity]
iconvdata/ibm902.h [new file with mode: 0644]
iconvdata/ibm9030.c [new file with mode: 0644]
iconvdata/ibm9030.h [new file with mode: 0644]
iconvdata/ibm9066.c [new file with mode: 0644]
iconvdata/ibm9066.h [new file with mode: 0644]
iconvdata/ibm921.c [moved from sysdeps/powerpc/nofpu/fegetround.c with 69% similarity]
iconvdata/ibm921.h [new file with mode: 0644]
iconvdata/ibm9448.c [new file with mode: 0644]
iconvdata/ibm9448.h [new file with mode: 0644]
iconvdata/jis0208.c
iconvdata/jis0208.h
iconvdata/run-iconv-test.sh
iconvdata/testdata/IBM1008 [new file with mode: 0644]
iconvdata/testdata/IBM1008..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1097 [new file with mode: 0644]
iconvdata/testdata/IBM1097..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1112 [new file with mode: 0644]
iconvdata/testdata/IBM1112..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1123 [new file with mode: 0644]
iconvdata/testdata/IBM1123..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1130 [new file with mode: 0644]
iconvdata/testdata/IBM1130..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1140 [new file with mode: 0644]
iconvdata/testdata/IBM1140..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1141 [new file with mode: 0644]
iconvdata/testdata/IBM1141..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1142 [new file with mode: 0644]
iconvdata/testdata/IBM1142..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1143 [new file with mode: 0644]
iconvdata/testdata/IBM1143..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1144 [new file with mode: 0644]
iconvdata/testdata/IBM1144..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1145 [new file with mode: 0644]
iconvdata/testdata/IBM1145..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1146 [new file with mode: 0644]
iconvdata/testdata/IBM1146..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1147 [new file with mode: 0644]
iconvdata/testdata/IBM1147..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1148 [new file with mode: 0644]
iconvdata/testdata/IBM1148..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1149 [new file with mode: 0644]
iconvdata/testdata/IBM1149..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1166 [new file with mode: 0644]
iconvdata/testdata/IBM1166..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM1167 [new file with mode: 0644]
iconvdata/testdata/IBM1167..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM12712 [new file with mode: 0644]
iconvdata/testdata/IBM12712..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM16804 [new file with mode: 0644]
iconvdata/testdata/IBM16804..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM4517 [new file with mode: 0644]
iconvdata/testdata/IBM4517..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM4899 [new file with mode: 0644]
iconvdata/testdata/IBM4899..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM4909 [new file with mode: 0644]
iconvdata/testdata/IBM4909..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM4971 [new file with mode: 0644]
iconvdata/testdata/IBM4971..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM5347 [new file with mode: 0644]
iconvdata/testdata/IBM5347..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM803 [new file with mode: 0644]
iconvdata/testdata/IBM803..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM901 [new file with mode: 0644]
iconvdata/testdata/IBM901..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM902 [new file with mode: 0644]
iconvdata/testdata/IBM902..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM9030 [new file with mode: 0644]
iconvdata/testdata/IBM9030..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM9066 [new file with mode: 0644]
iconvdata/testdata/IBM9066..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM921 [new file with mode: 0644]
iconvdata/testdata/IBM921..UTF8 [new file with mode: 0644]
iconvdata/testdata/IBM9448 [new file with mode: 0644]
iconvdata/testdata/IBM9448..UTF8 [new file with mode: 0644]
include/dirent.h
inet/getnetgrent_r.c
libio/fileops.c
libio/fmemopen.c
libio/iofclose.c
libio/iofgets.c
libio/iofgets_u.c
libio/iofgetws.c
libio/iofgetws_u.c
libio/iofopncook.c
libio/iogetline.c
libio/oldfileops.c
libio/oldiofclose.c
locale/iso-4217.def
locale/iso-639.def
locale/programs/ld-address.c
localedata/ChangeLog
localedata/Makefile
localedata/SUPPORTED
localedata/locales/af_ZA
localedata/locales/az_AZ
localedata/locales/be_BY@latin [new file with mode: 0644]
localedata/locales/bn_BD
localedata/locales/bs_BA
localedata/locales/el_GR
localedata/locales/en_US
localedata/locales/es_US
localedata/locales/hsb_DE [new file with mode: 0644]
localedata/locales/km_KH [new file with mode: 0644]
localedata/locales/ky_KG [new file with mode: 0644]
localedata/locales/mg_MG [new file with mode: 0644]
localedata/locales/ru_RU
localedata/locales/sid_ET
localedata/locales/sq_AL
localedata/locales/st_ZA
localedata/locales/tg_TJ
localedata/locales/wa_BE
localedata/locales/xh_ZA
localedata/locales/yi_US
localedata/locales/zh_CN
localedata/locales/zu_ZA
malloc/Makefile
malloc/arena.c
malloc/malloc.c
malloc/memusage.c
malloc/obstack.h
malloc/tst-mallocfork.c [new file with mode: 0644]
manual/llio.texi
manual/memory.texi
manual/stdio.texi
manual/time.texi
nptl/ChangeLog
nptl/allocatestack.c
nptl/descr.h
nptl/init.c
nptl/perf.c
nptl/pthread_create.c
nscd/dbg_log.c
nscd/nscd_getpw_r.c
posix/Makefile
posix/getconf.c
posix/regcomp.c
posix/regex.h
posix/regex_internal.c
posix/regex_internal.h
posix/regexec.c
posix/sys/wait.h
posix/tst-rfc3484.c [new file with mode: 0644]
scripts/begin-end-check.pl [new file with mode: 0644]
stdio-common/Makefile
stdio-common/tst-fgets.c [new file with mode: 0644]
stdio-common/tst-fwrite.c [new file with mode: 0644]
stdlib/Depend [new file with mode: 0644]
stdlib/Makefile
stdlib/bug-strtod2.c [new file with mode: 0644]
stdlib/cxa_atexit.c
stdlib/stdlib.h
stdlib/strtod_l.c
sysdeps/alpha/ldiv.S
sysdeps/generic/fdopendir.c [moved from sysdeps/unix/sysv/i386/sigreturn.S with 75% similarity]
sysdeps/i386/fpu/libm-test-ulps
sysdeps/posix/getaddrinfo.c
sysdeps/posix/spawni.c
sysdeps/powerpc/fpu/libm-test-ulps
sysdeps/powerpc/nofpu/Dist [deleted file]
sysdeps/powerpc/nofpu/Makefile [deleted file]
sysdeps/powerpc/nofpu/Versions [deleted file]
sysdeps/powerpc/nofpu/fclrexcpt.c [deleted file]
sysdeps/powerpc/nofpu/fedisblxcpt.c [deleted file]
sysdeps/powerpc/nofpu/fegetenv.c [deleted file]
sysdeps/powerpc/nofpu/feholdexcpt.c [deleted file]
sysdeps/powerpc/nofpu/fenv_const.c [deleted file]
sysdeps/powerpc/nofpu/fesetenv.c [deleted file]
sysdeps/powerpc/nofpu/feupdateenv.c [deleted file]
sysdeps/powerpc/nofpu/fgetexcptflg.c [deleted file]
sysdeps/powerpc/nofpu/fraiseexcpt.c [deleted file]
sysdeps/powerpc/nofpu/fsetexcptflg.c [deleted file]
sysdeps/powerpc/nofpu/ftestexcept.c [deleted file]
sysdeps/powerpc/nofpu/libm-test-ulps [deleted file]
sysdeps/powerpc/nofpu/sim-full.c [deleted file]
sysdeps/powerpc/nofpu/soft-supp.h [deleted file]
sysdeps/unix/alpha/sysdep.h
sysdeps/unix/fdopendir.c [moved from sysdeps/powerpc/nofpu/feenablxcpt.c with 62% similarity]
sysdeps/unix/opendir.c
sysdeps/unix/sockatmark.c
sysdeps/unix/sysv/i386/signal.S [deleted file]
sysdeps/unix/sysv/linux/lddlibc4.c
sysdeps/unix/sysv/linux/mips/brk.c
sysdeps/unix/sysv/linux/mips/getpagesize.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S
sysdeps/unix/sysv/linux/mips/mips64/syscall.S
timezone/zdump.c
wcsmbs/Makefile
wcsmbs/tst-mbrtowc2.c [new file with mode: 0644]
wctype/wctype.h

diff --git a/BUGS b/BUGS
index 9ff95155ef8dbc94c175f60c3e71a17411b80b49..d0d5056ffc0b8f761d00b9c941c73dda53dc9ac7 100644 (file)
--- 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.
 
index fe2a06010b458bf489df08e75e382a984bba231d..ac0c43b789653b24f065e34389b03ccd31eb844e 100644 (file)
--- 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.
 
index 734687cf3dc88fef1cf82d5314646209ba425ec0..f2d0b1bed0bad9e91e822e95c3c6f2700bbfc51d 100644 (file)
--- 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
index 151f89a1c0d8c497cd45407b842b4187f8e9e587..84df089e035018678f93beb6cc025b75c72301ea 100644 (file)
@@ -19,7 +19,7 @@
    02111-1307 USA.  */
 
 #ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
 #endif
 
 #include <sysexits.h>
index 1004e6762a6eb254470f650a2008ccf69e845cb6..55ac7f91839bd3d88d47c272e73cf5f098aa8946 100644 (file)
@@ -22,7 +22,7 @@
    don't have that.  */
 
 #ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
 #endif
 
 #include <stdlib.h>
index 5d0d5eac92a783b8a48df5c3a677405ebac9fe22..f94207a20b0fa0c2c8529df4e768c633d9661b4c 100644 (file)
 #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>
index 3cf1f9827db1328ae4bc33d2f09144d3c4fb4755..442ffa05d1ff14c118e8f6d72c446d950a5afe5a 100644 (file)
@@ -19,7 +19,7 @@
    02111-1307 USA.  */
 
 #ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
 #endif
 
 #define ARGP_FS_EI
index 73177585e840d319bbdf9313eb6f143346cec04b..7913b061ace7933118e49f89c15697cc97ad8713 100644 (file)
@@ -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
index 811d6ba9a617c374fd1129674ce29d068736995b..077b58bd1f3e86531f8152e01c94dc257fffe2a1 100755 (executable)
@@ -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)
index df150bcedcd2210b8a887d3bfbd6379a5204c60e..ba492ca781a6da7f7ccdce2252a3a115830d53ad 100644 (file)
@@ -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)
index 9d96caeb361853e2638a85368601db10677abc9d..41c15844266ae4402dbbf99fe445880251684df6 100644 (file)
@@ -41,4 +41,7 @@ libc {
     # g*
     getdirentries64;
   }
+  GLIBC_2.4 {
+    fdopendir;
+  }
 }
index a5e8a004e2343715ed7dd2479191f7160ad1289a..ed4147dbcaacb0c7a7ba250889ecb600d67c3487 100644 (file)
@@ -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 (file)
index 0000000..3cf315d
--- /dev/null
@@ -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"
index 7b538fed2b0ab9529c6980d60e7e2998a2390272..3f1a8fa6aea5ea8c15589fcd407837550b023f80 100644 (file)
@@ -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 (file)
index 0000000..715bb40
--- /dev/null
@@ -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 (file)
index 0000000..3bdb558
--- /dev/null
@@ -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 (file)
index 0000000..ca39657
--- /dev/null
@@ -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 (file)
index 0000000..15e9f7a
--- /dev/null
@@ -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"
index 58b0f9173137f4643b44b74b16e7a6e7c8ad55ff..0ed670d1582055fa757ffae73ef97c8d521f2652 100644 (file)
@@ -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"));
index f44fa7d365b8614a3a0c1d9e7f506f22d948c9a9..f01f8d652e7027b611b5788c505d983dfd9e2d7c 100644 (file)
@@ -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;
 }
 
index 21365af2ba2359a202120e984fb194bab549a2fb..a89f89b3a532b746dbb36ea3033f30ad76e979c5 100644 (file)
@@ -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
 {
index dd93d8d799f62c816e4a9dbcedca45cb225f98a8..60d6344425fc9f5d95141b4ce5034d7cc5a6a7db 100644 (file)
@@ -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
index 1918fe5007e4b1fe64105669834cad479bcdf3cd..9785bf865ca4b436d5a883ec819a54cebcc1b764 100644 (file)
@@ -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
index a45c7a9b3d1a6be9a9e52aa4c13f94f2494b950f..2ea0fcfcce288d008b7c88ebbb190147aa1d6a52 100644 (file)
@@ -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))
index 8ff19125c3a7e6600809ec355abfa0c31d651aca..05b0837558522690847faab9f09743fcd5b89553 100644 (file)
@@ -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
index 75d4228497a5f6519323cea56bb5235dc2247c44..e03795f529dc6867e0f316e382af4d2989f5c8b3 100644 (file)
@@ -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 (file)
index 0000000..57028cc
--- /dev/null
@@ -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 (file)
index 0000000..b824cd4
--- /dev/null
@@ -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 (file)
index 0000000..7dd964a
--- /dev/null
@@ -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 (file)
index 0000000..20eebe7
--- /dev/null
@@ -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 (file)
index 0000000..4d985b6
--- /dev/null
@@ -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 (file)
index 0000000..1a36423
--- /dev/null
@@ -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 (file)
index 0000000..d3776b1
--- /dev/null
@@ -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 (file)
index 0000000..41110dc
--- /dev/null
@@ -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 (file)
index 0000000..846f98e
--- /dev/null
@@ -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 (file)
index 0000000..6c0048e
--- /dev/null
@@ -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 (file)
index 0000000..fe536d0
--- /dev/null
@@ -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 (file)
index 0000000..9cff5e0
--- /dev/null
@@ -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 (file)
index 0000000..3513a40
--- /dev/null
@@ -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 (file)
index 0000000..0998060
--- /dev/null
@@ -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 (file)
index 0000000..1b427b6
--- /dev/null
@@ -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 (file)
index 0000000..147784c
--- /dev/null
@@ -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 (file)
index 0000000..04dd4c3
--- /dev/null
@@ -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 (file)
index 0000000..5c7c208
--- /dev/null
@@ -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 (file)
index 0000000..2a5112c
--- /dev/null
@@ -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 (file)
index 0000000..a05436a
--- /dev/null
@@ -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 (file)
index 0000000..df39a73
--- /dev/null
@@ -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 (file)
index 0000000..b3af001
--- /dev/null
@@ -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 (file)
index 0000000..fabc28f
--- /dev/null
@@ -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 (file)
index 0000000..72e6e69
--- /dev/null
@@ -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 (file)
index 0000000..3b58e93
--- /dev/null
@@ -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 (file)
index 0000000..5c47102
--- /dev/null
@@ -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 (file)
index 0000000..3dbb3fe
--- /dev/null
@@ -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 (file)
index 0000000..85d6fed
--- /dev/null
@@ -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 (file)
index 0000000..7f0cfe0
--- /dev/null
@@ -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 (file)
index 0000000..a91652b
--- /dev/null
@@ -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 (file)
index 0000000..1debebf
--- /dev/null
@@ -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 (file)
index 0000000..75ff337
--- /dev/null
@@ -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 (file)
index 0000000..9eaa63e
--- /dev/null
@@ -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 (file)
index 0000000..5a05d79
--- /dev/null
@@ -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 (file)
index 0000000..b19e268
--- /dev/null
@@ -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 (file)
index 0000000..8bc0760
--- /dev/null
@@ -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 (file)
index 0000000..1c42e6f
--- /dev/null
@@ -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 (file)
index 0000000..2e5f65e
--- /dev/null
@@ -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 (file)
index 0000000..699ef65
--- /dev/null
@@ -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 (file)
index 0000000..5871724
--- /dev/null
@@ -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 (file)
index 0000000..59e9f83
--- /dev/null
@@ -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 (file)
index 0000000..7ee0e8b
--- /dev/null
@@ -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 (file)
index 0000000..bb49a8f
--- /dev/null
@@ -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 (file)
index 0000000..da35689
--- /dev/null
@@ -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 (file)
index 0000000..3be8932
--- /dev/null
@@ -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 (file)
index 0000000..0b362b6
--- /dev/null
@@ -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 (file)
index 0000000..936b3e1
--- /dev/null
@@ -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 (file)
index 0000000..79d4b7f
--- /dev/null
@@ -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 (file)
index 0000000..4ef71a8
--- /dev/null
@@ -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 (file)
index 0000000..d55dc59
--- /dev/null
@@ -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 (file)
index 0000000..6dc45aa
--- /dev/null
@@ -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'
+};
similarity index 70%
rename from sysdeps/powerpc/nofpu/fesetround.c
rename to iconvdata/ibm901.c
index 842614a97407fc9027f56c33975fda2acdc4c521..0e095ed69e0df7845959645bdb6da262942a8636 100644 (file)
@@ -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
    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 (file)
index 0000000..393d2d7
--- /dev/null
@@ -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'
+};
similarity index 69%
rename from sysdeps/powerpc/nofpu/fegetexcept.c
rename to iconvdata/ibm902.c
index 0a47a09ac033b4f78c5ad93d47d88097bd765107..46fab92dd6017fb9206263a0f8501d24e0df9402 100644 (file)
@@ -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
    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 (file)
index 0000000..ebc7d96
--- /dev/null
@@ -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 (file)
index 0000000..f2fd93e
--- /dev/null
@@ -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 (file)
index 0000000..8c1b10b
--- /dev/null
@@ -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 (file)
index 0000000..dd14e36
--- /dev/null
@@ -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 (file)
index 0000000..b1f2604
--- /dev/null
@@ -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'
+};
similarity index 69%
rename from sysdeps/powerpc/nofpu/fegetround.c
rename to iconvdata/ibm921.c
index 0d01e4411fa211f45fa6b2fcb513923a5070b34d..5fb925ac9435c409bb590602d2ab8bdef1c7ade2 100644 (file)
@@ -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
    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 (file)
index 0000000..7fbdf0f
--- /dev/null
@@ -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 (file)
index 0000000..d3694ca
--- /dev/null
@@ -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 (file)
index 0000000..ffedf3e
--- /dev/null
@@ -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'
+};
index ef7aeb175a57848e1a5775172299c971e9c82200..16823f22d5994fd50ef1da76397eceee8e31183d 100644 (file)
@@ -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"
 };
 
 
index 8255bafc62f97e2abcff628b6631a68fb61bc86e..329e30f9b2d5a656048ecdda8dbac1fcd7a39f58 100644 (file)
@@ -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
index 8cceef8880e6e65616e8ba00999f196db52f837a..91216447ba7231489a1cc3a9255b6554b40ae3bf 100755 (executable)
@@ -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 (file)
index 0000000..11cb306
Binary files /dev/null and b/iconvdata/testdata/IBM1008 differ
diff --git a/iconvdata/testdata/IBM1008..UTF8 b/iconvdata/testdata/IBM1008..UTF8
new file mode 100644 (file)
index 0000000..625f280
Binary files /dev/null and b/iconvdata/testdata/IBM1008..UTF8 differ
diff --git a/iconvdata/testdata/IBM1097 b/iconvdata/testdata/IBM1097
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1097 differ
diff --git a/iconvdata/testdata/IBM1097..UTF8 b/iconvdata/testdata/IBM1097..UTF8
new file mode 100644 (file)
index 0000000..66ef4b6
Binary files /dev/null and b/iconvdata/testdata/IBM1097..UTF8 differ
diff --git a/iconvdata/testdata/IBM1112 b/iconvdata/testdata/IBM1112
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1112 differ
diff --git a/iconvdata/testdata/IBM1112..UTF8 b/iconvdata/testdata/IBM1112..UTF8
new file mode 100644 (file)
index 0000000..5c09c29
Binary files /dev/null and b/iconvdata/testdata/IBM1112..UTF8 differ
diff --git a/iconvdata/testdata/IBM1123 b/iconvdata/testdata/IBM1123
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1123 differ
diff --git a/iconvdata/testdata/IBM1123..UTF8 b/iconvdata/testdata/IBM1123..UTF8
new file mode 100644 (file)
index 0000000..f29be51
Binary files /dev/null and b/iconvdata/testdata/IBM1123..UTF8 differ
diff --git a/iconvdata/testdata/IBM1130 b/iconvdata/testdata/IBM1130
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1130 differ
diff --git a/iconvdata/testdata/IBM1130..UTF8 b/iconvdata/testdata/IBM1130..UTF8
new file mode 100644 (file)
index 0000000..33aed2e
Binary files /dev/null and b/iconvdata/testdata/IBM1130..UTF8 differ
diff --git a/iconvdata/testdata/IBM1140 b/iconvdata/testdata/IBM1140
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1140 differ
diff --git a/iconvdata/testdata/IBM1140..UTF8 b/iconvdata/testdata/IBM1140..UTF8
new file mode 100644 (file)
index 0000000..0890f06
Binary files /dev/null and b/iconvdata/testdata/IBM1140..UTF8 differ
diff --git a/iconvdata/testdata/IBM1141 b/iconvdata/testdata/IBM1141
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1141 differ
diff --git a/iconvdata/testdata/IBM1141..UTF8 b/iconvdata/testdata/IBM1141..UTF8
new file mode 100644 (file)
index 0000000..fdda825
Binary files /dev/null and b/iconvdata/testdata/IBM1141..UTF8 differ
diff --git a/iconvdata/testdata/IBM1142 b/iconvdata/testdata/IBM1142
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1142 differ
diff --git a/iconvdata/testdata/IBM1142..UTF8 b/iconvdata/testdata/IBM1142..UTF8
new file mode 100644 (file)
index 0000000..d1e853b
Binary files /dev/null and b/iconvdata/testdata/IBM1142..UTF8 differ
diff --git a/iconvdata/testdata/IBM1143 b/iconvdata/testdata/IBM1143
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1143 differ
diff --git a/iconvdata/testdata/IBM1143..UTF8 b/iconvdata/testdata/IBM1143..UTF8
new file mode 100644 (file)
index 0000000..3023e60
Binary files /dev/null and b/iconvdata/testdata/IBM1143..UTF8 differ
diff --git a/iconvdata/testdata/IBM1144 b/iconvdata/testdata/IBM1144
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1144 differ
diff --git a/iconvdata/testdata/IBM1144..UTF8 b/iconvdata/testdata/IBM1144..UTF8
new file mode 100644 (file)
index 0000000..c9d8e96
Binary files /dev/null and b/iconvdata/testdata/IBM1144..UTF8 differ
diff --git a/iconvdata/testdata/IBM1145 b/iconvdata/testdata/IBM1145
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1145 differ
diff --git a/iconvdata/testdata/IBM1145..UTF8 b/iconvdata/testdata/IBM1145..UTF8
new file mode 100644 (file)
index 0000000..b99321e
Binary files /dev/null and b/iconvdata/testdata/IBM1145..UTF8 differ
diff --git a/iconvdata/testdata/IBM1146 b/iconvdata/testdata/IBM1146
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1146 differ
diff --git a/iconvdata/testdata/IBM1146..UTF8 b/iconvdata/testdata/IBM1146..UTF8
new file mode 100644 (file)
index 0000000..6c9181c
Binary files /dev/null and b/iconvdata/testdata/IBM1146..UTF8 differ
diff --git a/iconvdata/testdata/IBM1147 b/iconvdata/testdata/IBM1147
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1147 differ
diff --git a/iconvdata/testdata/IBM1147..UTF8 b/iconvdata/testdata/IBM1147..UTF8
new file mode 100644 (file)
index 0000000..5d42f28
Binary files /dev/null and b/iconvdata/testdata/IBM1147..UTF8 differ
diff --git a/iconvdata/testdata/IBM1148 b/iconvdata/testdata/IBM1148
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1148 differ
diff --git a/iconvdata/testdata/IBM1148..UTF8 b/iconvdata/testdata/IBM1148..UTF8
new file mode 100644 (file)
index 0000000..2d6e0fb
Binary files /dev/null and b/iconvdata/testdata/IBM1148..UTF8 differ
diff --git a/iconvdata/testdata/IBM1149 b/iconvdata/testdata/IBM1149
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1149 differ
diff --git a/iconvdata/testdata/IBM1149..UTF8 b/iconvdata/testdata/IBM1149..UTF8
new file mode 100644 (file)
index 0000000..2bfeb6d
Binary files /dev/null and b/iconvdata/testdata/IBM1149..UTF8 differ
diff --git a/iconvdata/testdata/IBM1166 b/iconvdata/testdata/IBM1166
new file mode 100644 (file)
index 0000000..a67fa4c
Binary files /dev/null and b/iconvdata/testdata/IBM1166 differ
diff --git a/iconvdata/testdata/IBM1166..UTF8 b/iconvdata/testdata/IBM1166..UTF8
new file mode 100644 (file)
index 0000000..4f90aaa
Binary files /dev/null and b/iconvdata/testdata/IBM1166..UTF8 differ
diff --git a/iconvdata/testdata/IBM1167 b/iconvdata/testdata/IBM1167
new file mode 100644 (file)
index 0000000..897a3c1
Binary files /dev/null and b/iconvdata/testdata/IBM1167 differ
diff --git a/iconvdata/testdata/IBM1167..UTF8 b/iconvdata/testdata/IBM1167..UTF8
new file mode 100644 (file)
index 0000000..61446b0
Binary files /dev/null and b/iconvdata/testdata/IBM1167..UTF8 differ
diff --git a/iconvdata/testdata/IBM12712 b/iconvdata/testdata/IBM12712
new file mode 100644 (file)
index 0000000..ddfe4a9
Binary files /dev/null and b/iconvdata/testdata/IBM12712 differ
diff --git a/iconvdata/testdata/IBM12712..UTF8 b/iconvdata/testdata/IBM12712..UTF8
new file mode 100644 (file)
index 0000000..b541c12
Binary files /dev/null and b/iconvdata/testdata/IBM12712..UTF8 differ
diff --git a/iconvdata/testdata/IBM16804 b/iconvdata/testdata/IBM16804
new file mode 100644 (file)
index 0000000..25864af
Binary files /dev/null and b/iconvdata/testdata/IBM16804 differ
diff --git a/iconvdata/testdata/IBM16804..UTF8 b/iconvdata/testdata/IBM16804..UTF8
new file mode 100644 (file)
index 0000000..4442243
Binary files /dev/null and b/iconvdata/testdata/IBM16804..UTF8 differ
diff --git a/iconvdata/testdata/IBM4517 b/iconvdata/testdata/IBM4517
new file mode 100644 (file)
index 0000000..ba54f83
Binary files /dev/null and b/iconvdata/testdata/IBM4517 differ
diff --git a/iconvdata/testdata/IBM4517..UTF8 b/iconvdata/testdata/IBM4517..UTF8
new file mode 100644 (file)
index 0000000..86c4a1c
Binary files /dev/null and b/iconvdata/testdata/IBM4517..UTF8 differ
diff --git a/iconvdata/testdata/IBM4899 b/iconvdata/testdata/IBM4899
new file mode 100644 (file)
index 0000000..5e0b080
Binary files /dev/null and b/iconvdata/testdata/IBM4899 differ
diff --git a/iconvdata/testdata/IBM4899..UTF8 b/iconvdata/testdata/IBM4899..UTF8
new file mode 100644 (file)
index 0000000..9e9966b
Binary files /dev/null and b/iconvdata/testdata/IBM4899..UTF8 differ
diff --git a/iconvdata/testdata/IBM4909 b/iconvdata/testdata/IBM4909
new file mode 100644 (file)
index 0000000..3492eb6
Binary files /dev/null and b/iconvdata/testdata/IBM4909 differ
diff --git a/iconvdata/testdata/IBM4909..UTF8 b/iconvdata/testdata/IBM4909..UTF8
new file mode 100644 (file)
index 0000000..7b8c9c9
Binary files /dev/null and b/iconvdata/testdata/IBM4909..UTF8 differ
diff --git a/iconvdata/testdata/IBM4971 b/iconvdata/testdata/IBM4971
new file mode 100644 (file)
index 0000000..9669304
Binary files /dev/null and b/iconvdata/testdata/IBM4971 differ
diff --git a/iconvdata/testdata/IBM4971..UTF8 b/iconvdata/testdata/IBM4971..UTF8
new file mode 100644 (file)
index 0000000..6b1833c
Binary files /dev/null and b/iconvdata/testdata/IBM4971..UTF8 differ
diff --git a/iconvdata/testdata/IBM5347 b/iconvdata/testdata/IBM5347
new file mode 100644 (file)
index 0000000..897a3c1
Binary files /dev/null and b/iconvdata/testdata/IBM5347 differ
diff --git a/iconvdata/testdata/IBM5347..UTF8 b/iconvdata/testdata/IBM5347..UTF8
new file mode 100644 (file)
index 0000000..d494150
Binary files /dev/null and b/iconvdata/testdata/IBM5347..UTF8 differ
diff --git a/iconvdata/testdata/IBM803 b/iconvdata/testdata/IBM803
new file mode 100644 (file)
index 0000000..02aa2d5
Binary files /dev/null and b/iconvdata/testdata/IBM803 differ
diff --git a/iconvdata/testdata/IBM803..UTF8 b/iconvdata/testdata/IBM803..UTF8
new file mode 100644 (file)
index 0000000..de338b4
Binary files /dev/null and b/iconvdata/testdata/IBM803..UTF8 differ
diff --git a/iconvdata/testdata/IBM901 b/iconvdata/testdata/IBM901
new file mode 100644 (file)
index 0000000..897a3c1
Binary files /dev/null and b/iconvdata/testdata/IBM901 differ
diff --git a/iconvdata/testdata/IBM901..UTF8 b/iconvdata/testdata/IBM901..UTF8
new file mode 100644 (file)
index 0000000..c64a4a2
Binary files /dev/null and b/iconvdata/testdata/IBM901..UTF8 differ
diff --git a/iconvdata/testdata/IBM902 b/iconvdata/testdata/IBM902
new file mode 100644 (file)
index 0000000..897a3c1
Binary files /dev/null and b/iconvdata/testdata/IBM902 differ
diff --git a/iconvdata/testdata/IBM902..UTF8 b/iconvdata/testdata/IBM902..UTF8
new file mode 100644 (file)
index 0000000..a43cadf
Binary files /dev/null and b/iconvdata/testdata/IBM902..UTF8 differ
diff --git a/iconvdata/testdata/IBM9030 b/iconvdata/testdata/IBM9030
new file mode 100644 (file)
index 0000000..e5e254d
Binary files /dev/null and b/iconvdata/testdata/IBM9030 differ
diff --git a/iconvdata/testdata/IBM9030..UTF8 b/iconvdata/testdata/IBM9030..UTF8
new file mode 100644 (file)
index 0000000..4acc340
Binary files /dev/null and b/iconvdata/testdata/IBM9030..UTF8 differ
diff --git a/iconvdata/testdata/IBM9066 b/iconvdata/testdata/IBM9066
new file mode 100644 (file)
index 0000000..9787fee
Binary files /dev/null and b/iconvdata/testdata/IBM9066 differ
diff --git a/iconvdata/testdata/IBM9066..UTF8 b/iconvdata/testdata/IBM9066..UTF8
new file mode 100644 (file)
index 0000000..b07de63
Binary files /dev/null and b/iconvdata/testdata/IBM9066..UTF8 differ
diff --git a/iconvdata/testdata/IBM921 b/iconvdata/testdata/IBM921
new file mode 100644 (file)
index 0000000..897a3c1
Binary files /dev/null and b/iconvdata/testdata/IBM921 differ
diff --git a/iconvdata/testdata/IBM921..UTF8 b/iconvdata/testdata/IBM921..UTF8
new file mode 100644 (file)
index 0000000..135fc3e
Binary files /dev/null and b/iconvdata/testdata/IBM921..UTF8 differ
diff --git a/iconvdata/testdata/IBM9448 b/iconvdata/testdata/IBM9448
new file mode 100644 (file)
index 0000000..42e142e
Binary files /dev/null and b/iconvdata/testdata/IBM9448 differ
diff --git a/iconvdata/testdata/IBM9448..UTF8 b/iconvdata/testdata/IBM9448..UTF8
new file mode 100644 (file)
index 0000000..22bb688
Binary files /dev/null and b/iconvdata/testdata/IBM9448..UTF8 differ
index f09a88f21ce9bced9bcb9f9ab8f3b1c806d8d840..b040a042d31dea27385330ea02410369587774ae 100644 (file)
@@ -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
index 4dbccd94ea3aa8121f1fa7966c5f4e191e770b52..97b2b809f0ff9e003a51cdf036d01f2e9927025f 100644 (file)
@@ -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)
index 3ad9b74011ee94adaf3dcd14430e7ad6f80a2f48..74d5cd0dbc222e97735a75da13e8c4c1dc12725a 100644 (file)
@@ -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)
     {
index 7c8769a130892826ddccfb3d001c553828af04ca..b847f62c9a874b44b0be021a387fbc2cc19dc94d 100644 (file)
@@ -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;
     }
index a372ae2b246396330b6602be71039704774dd5e2..aa2ba400646b38961be23cf096ff40de03aa39f0 100644 (file)
@@ -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
index 879cc975a3c72909b3a60f3e90b1b5e7a8da479c..601b1746a10d482e51058d8f2a437365ce4f8b66 100644 (file)
@@ -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
index ded2a7c83c897f272a7ce17742b1ebfd4f1be10e..4fb5b1c0fd5d3b0b5f9063c73efedf1bf5704cec 100644 (file)
@@ -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. */
index 654c051a2878790d252d2b2c45b6c34696f5d4ee..775391137a2f5e35b2e60ec6b088caefe93cd714 100644 (file)
@@ -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
index 125356456616325fa3050e3a56af1bdad4de802b..9fb8a5cac125c1870b301bfa4c41e0cb9b6a2183 100644 (file)
@@ -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. */
index 9c5503d1f2741986e215cd50a0e02e148be0e3cd..976ff5093a007b266dd6c4894b8e6df0d71abe48 100644 (file)
@@ -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
index eca38cf7735c183d301680812d6c11c953a40e73..022a444f7776b26aaaec7c78dbdbdda5259a3e57 100644 (file)
@@ -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;
 }
index 2dd618215bf16d90671dc9f6e0197d9a3f91b743..cd54ea58111744fe3c54d33649bd4e64d95d2c50 100644 (file)
@@ -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)
     {
index 8dd321b05429c13a64fcd5468d6fb399d07878fa..62c31541188eda020a056dab4806acf4352e26d3 100644 (file)
@@ -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)
index b7c05a351d0296a8e2f5caf61a9b30d5c04727a8..fff5e40584415672eab2ca8618f1b00a94b84fae 100644 (file)
@@ -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  */
index 3805b8ef535375c7cf414ddf66cfd494846b271e..0507ba5c91c8513d86a78c067ff54b3bfdf927cc 100644 (file)
@@ -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)
index 079aa0094da0f1336638c48ebe68923196746c94..5a7d821de63bea2bee39ae1343f42fb65541fe7b 100644 (file)
@@ -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]))
index c456ec6ed552745623e792809894bc6b6ed92a2d..5c6f3e6b82ee49654a24422d375d890227c3184f 100644 (file)
@@ -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.
index 5c314f9121151b722585d5085c0b17827463f291..ed76a897d036fcb1c06dd1557942a82133a7ad75 100644 (file)
@@ -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)
index 5f8acd14c159c757360aed9272862f475d74ce1e..d3fcf74e82a2f5a3456ca6c727d36aad8a60a097 100644 (file)
@@ -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 \
index b5699bc77b51c797ea8126a4de7350a0801a591e..ca1fdfb36f331955cdb5465e03a2e9262c84480e 100644 (file)
@@ -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
index 231ab49166b982719caab2dae7a678c2c216fe34..98404a6e469e0845596c9dc3ada890567f689a47 100644 (file)
@@ -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 (file)
index 0000000..6dbbfad
--- /dev/null
@@ -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
index 85641dc8556d608e9a331b7591fc2600c7191f00..15d5920691b31f22f69a8403f7fa48eb832a7317 100644 (file)
@@ -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
index 92cb2f9ab8f1ee58431ef299b94d4ec6d0621f58..80cc49ffdabeb3a72edcbaa761c1d39a9a1e2d06 100644 (file)
@@ -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
index 95278657a38a5473da881e176c4c5bb4e5119f4d..d729d43298380198e721741eb35420b565284011 100644 (file)
@@ -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
index 7aaa09953a6b8a31d36272b5adf0bbb483a09561..b2ad72d5ce7f00c5d41fd59c5b5c47601518a095 100644 (file)
@@ -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>"
index 0b12c6e203b764092d5f818c2cd8ef597919a0c3..85e9d50ae8aa85ee836c33f51ac1743fb6e165e4 100644 (file)
@@ -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 (file)
index 0000000..aba9254
--- /dev/null
@@ -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 (file)
index 0000000..07052af
--- /dev/null
@@ -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 (file)
index 0000000..6441884
--- /dev/null
@@ -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 (file)
index 0000000..1490e5d
--- /dev/null
@@ -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
index 04bbc4d25d617a38a026d8f431f40df721ac7145..2fdffb12cb8d3fcc02f7b6fc59d7da4fde5127ca 100644 (file)
@@ -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>";/
index 03727ab1b9316635cad4b924a0f04b3d8aebe896..8ce3234a5da41023d3fc83fae317e310bfb081e1 100644 (file)
@@ -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>"
 %
index 1c9846515f9d472793be2cceea042ce4bff63f9f..17f1fdb702c076f44b5d3dea3d66f0280b9c7fae 100644 (file)
@@ -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
index 004d8d7181083374fd35d6f57b84cc7ff09872ed..798de4cf6627ba512536684c702dd92c28257c7e 100644 (file)
@@ -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
 
index c288a0d88c9ae7c780db3417b5758f6a4796c5b9..3f9b58a1fb5ec2d9016a2cb2f0549d6d48632ae1 100644 (file)
@@ -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
+
index 061e32842174084261770b8d9d472a76e476685d..63537b0d1afac0d21d0071cf52be55ec9ac5c24f 100644 (file)
@@ -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 :-(
index 62f0554a4d139226e9628627c89905bf52b6ce48..806f87820bc11ac72218ca783bfa1fbb75ae62b8 100644 (file)
@@ -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
 
index f993d0c6772a1d57d7934e9198b9a4206fde7f2b..625758b82191ae5a5c79dda3759d42c8e6fd4308 100644 (file)
@@ -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
 
index 152411da10d6b0baf1c59547295a8736b6326af1..89fcf3b819958e61d5b43ce55a6ca7959f384c80 100644 (file)
@@ -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
index 7fb25bb6ec8502717071f3c35426cbdc1114677b..45da1e5b790e5a73dea6d73899469499251f01a2 100644 (file)
@@ -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
 
index ca427077f3d2ad49b25bde2b9bb996b0ff2517c9..c479da39b71ed9db204e638b4c94f6c2a5a54e0f 100644 (file)
@@ -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 \
index 8db255966d7c9c882c4c0b6e0cac051e86c6109c..a844392a6b5f02d2345febc47240ef79ed25de0b 100644 (file)
@@ -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;
index 64050b42663f41ebb699f6c8b448aaafb0e858b2..594d9c4d7af99d274e71a869c402dbc2dfee244e 100644 (file)
@@ -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;
     }
 
index 49bcc6f289418ea8974f27856bfacd9476ab6c75..f586ea61ba78d5079fca0e658e07bea78815107d 100644 (file)
@@ -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
index d18ef40b6e82c5fc2967081893b97b4af720c1e9..03f6ccb2cebcd57d2bf98e87d371f808651fa278 100644 (file)
@@ -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 (file)
index 0000000..abbc9d8
--- /dev/null
@@ -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"
index 4ac6c5fa4f5a5684dfab47acdb39aa6d7930241e..863b3b4316b0331138b49176434e0349901e5324 100644 (file)
@@ -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
index ee2cd75c440fe4ee246fb386868b9eca9dcbe38e..0f28806a22a47803ea1dccd32c309665378f246c 100644 (file)
@@ -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 */
index 39fd4fb123bc7b1c6f6303403a901c5ad855a2cb..29de41a16754409ce01797cea7561a5c68fe4a9e 100644 (file)
@@ -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}.
index 7fc9448a324f887405bd353118fe8d9d7038cf16..9b87d3eed0612f1ac0a1c81cda2605870a6c7067 100644 (file)
@@ -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.
 
index 8da47cb54c91b67d82c7dea26c5156ba017d8a9f..c17d058c3bdc11d912ff5a4bae5e38db467c7406 100644 (file)
@@ -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,
index fcb6c6e475680c7c97f60a186ded19871bcbb4ed..f0dddf051d7846179d375c89798ed3930325af4c 100644 (file)
@@ -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;
index 77251d5e45d97dcd3e1066d7a47cee53bc6e2d34..aaef9bc621a9706d4485ba5506ec6f7c6a2c3497 100644 (file)
@@ -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;
index 86745af8d1db5dc440619b7af444eb747e24c8a2..de704122d1ce46afc2b962b9248fd1c12792f7be 100644 (file)
@@ -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);
 }
 
 
index 5b920d719d26719359158678672d1cb81babfbfe..f0dbc29ca0a812910f50d07538b8ccd564106b9f 100644 (file)
@@ -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
index 122778bddf366e9fe4be0a49164d3d79415b4fbd..f2f206be5a73fb77cec90d9ef3ec836770bc8707 100644 (file)
@@ -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
index afa06dcbe91e32a8fcc56da1dbd3a49ccdaa05cf..4b8843037b21d0882f68b55102698319817a8a9e 100644 (file)
@@ -44,7 +44,7 @@ init_logfile (void)
 {
   if (logfilename)
     {
-      dbgout = fopen (logfilename, "a");
+      dbgout = fopen64 (logfilename, "a");
       return dbgout == NULL ? 0 : 1;
     }
   return 1;
index 61a712c6b41b8b5c83dbc4d96c1072cc6d8780c2..e8e4d7364faff8b2ed004db2a0271b8cdc6c9ce3 100644 (file)
@@ -227,8 +227,6 @@ nscd_getpw_r (const char *key, size_t keylen, request_type type,
          mapped = NO_MAPPING;
        }
 
-      free (resultbuf);
-
       goto retry;
     }
 
index cabc1d44d0fc2360635565dd62bf09484ca0dfb6..7bcd69b1c40431dbb43338a561097a238a12d63b 100644 (file)
@@ -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
index 0cc0c0d7b5dbb7eb98cefe7ac040cd894b8fda3c..da8e538ad3319e7f4e71694fd0f480a0aa338220 100644 (file)
@@ -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 ();
 
index c93f79ea242674fa2748b07a53e3c16ee61ec30d..fde262b83ca1fcbff9d529f47c8d5382b89bfe3e 100644 (file)
@@ -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 */
index e5ec398106bd5ab553f06a3ea9787584f6b2a864..f6c145d209a20814399853ad4cd565092a112130 100644 (file)
@@ -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 */
-\f
-/*
-Local variables:
-make-backup-files: t
-version-control: t
-trim-versions-without-asking: nil
-End:
-*/
index 240e8872b3df5c1409148c1ebe47ff70f9517281..2b3725f3ddef52ae9aa890b56b93a1fcd60092fb 100644 (file)
@@ -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;
index debbe0db3b055f51df537535079da7169fd0e625..681be1f52b638861034ed2b721dd2ad08e68ba68 100644 (file)
@@ -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
 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];
 }
 
index 78042727f9b17df88b92988d6c2f74596611d784..74a24867a2cf05e128129af00438997d3554f35a 100644 (file)
@@ -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];
index 372d46c79a0c86eea29fc5089cd0bb3a8da3ad10..d7a58eab1381322f99b9d215540c65939fb669fe 100644 (file)
@@ -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 (file)
index 0000000..378e43a
--- /dev/null
@@ -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 (file)
index 0000000..1616931
--- /dev/null
@@ -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;
index 39c7d9db52ff9fc71ba29a10c7fd3aff35ce9e69..119323617c06dcdf97036274ffbfeabd99078dcf 100644 (file)
@@ -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 (file)
index 0000000..b8e205c
--- /dev/null
@@ -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 (file)
index 0000000..2986c89
--- /dev/null
@@ -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 (file)
index 0000000..f3e1156
--- /dev/null
@@ -0,0 +1 @@
+localedata
index 509a7b2228a883e410576294fd3b12a945b0043d..9a9ff8bd457f36f7c1efdb778130589a2210fccc 100644 (file)
@@ -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 (file)
index 0000000..a1f037c
--- /dev/null
@@ -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"
index a3d4c5037dc53ac0068fc7f839276fd8ddf59f32..490776105f6f0f32cff3aaad76f2ef694587988f 100644 (file)
@@ -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
    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;
 }
index bff7722e2ccf58561d6867b03e8788fd03cbff92..085130cafa6f8efed047071148de6ef8fed5e2c6 100644 (file)
@@ -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.  */
index a656789f4c17072dc59965b98d0d48e48b626eea..3a1c1ebd4b6a3e6396ec95cb7da34ed2b46d6c0a 100644 (file)
@@ -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;
index 390967278245820e447c424344bbc876acf4bf5f..0a971a7ed000e947f7995944f3ba4d7831791ae6 100644 (file)
@@ -214,3 +214,5 @@ $divbyzero:
        ret
 
        .end    ldiv
+
+weak_alias (ldiv, lldiv)
similarity index 75%
rename from sysdeps/unix/sysv/i386/sigreturn.S
rename to sysdeps/generic/fdopendir.c
index edf4418c5bedca4ac976586375d474877d186983..597ccd5a5e3c6311822d517be1d8feb25d8270e9 100644 (file)
@@ -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
    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>
index 302ca778122936e6beee22558b175545e1aed596..e5a4cdf7edeafa747cf159ff22f8100fa17de967 100644 (file)
@@ -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":
index d97b95b5e03c3849211a7fc4e1944eda544c1946..934aae009cc34461b33b95c34c3ba1b12b9e3375 100644 (file)
@@ -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]));
            }
        }
 
index 69106c480ed6c66fdd2d02484edd4c15ef3a201e..27699f4df8243796c387313eb68b8e224dfb583a 100644 (file)
@@ -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 ();
index 1ea3b60d9dd5227fedfbb051dad93c211681c37e..272431307ce4bba20fbe7ed25cbd0da9dc4d551c 100644 (file)
@@ -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 (file)
index 35a33ab..0000000
+++ /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 (file)
index f85cb0b..0000000
+++ /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 (file)
index 4103db5..0000000
+++ /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 (file)
index 16e96ba..0000000
+++ /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 (file)
index 3d8dd44..0000000
+++ /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 (file)
index 3cc8b13..0000000
+++ /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 (file)
index 786c691..0000000
+++ /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 (file)
index 7dc2e81..0000000
+++ /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 (file)
index 43d03a4..0000000
+++ /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 (file)
index 5073776..0000000
+++ /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 (file)
index 713bd92..0000000
+++ /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 (file)
index cd91502..0000000
+++ /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 (file)
index 85fd88f..0000000
+++ /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 (file)
index ce8044f..0000000
+++ /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 (file)
index 73172b4..0000000
+++ /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 (file)
index d018240..0000000
+++ /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 (file)
index 3922426..0000000
+++ /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;
index f9f1dd6e41b4b43ceed1daa26b7de9a6bb4cfe36..a154db8e4116d39947ae0e717261a3d376addd6f 100644 (file)
@@ -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),          \
similarity index 62%
rename from sysdeps/powerpc/nofpu/feenablxcpt.c
rename to sysdeps/unix/fdopendir.c
index 060e450590a9cbb60c2342a932ee131fb4a197e5..3c481fcf0d821a8e75687a2cf9ea8159c73d285f 100644 (file)
@@ -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
    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);
 }
index 5e03ed9b20fa6ee9788e98d65a7bbb7162619930..366670b79ca811adb57f12599821e515cd24803a 100644 (file)
@@ -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)
index 306ab36ee1fb367ee6bd93aec99b85227473806d..a2476415acc200be3960ced58d4e96d912a8f58e 100644 (file)
@@ -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 (file)
index af51bc5..0000000
+++ /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
index f7b208e7d8465220ac1a70025bb97ab417436407..7683ec2efdd0974ebfe00c5efe111753d4a9becb 100644 (file)
@@ -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;
 }
index 4be88a9c5fc10e54e000a4247716622aee37d461..5c31bec5ee624839ed8f3533b17c82bd58bf28d7 100644 (file)
@@ -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 (file)
index 0000000..49492e5
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/ia64/getpagesize.c>
index 7b14089bcbcd347013b920d3d8c9652a1b8ab828..e4b4f00a8c282621603685232cc795eff097f2c1 100644 (file)
@@ -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
 
        .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)
index ea5bf491d6920f5ed9164db59db548848f97785b..3c6aaac8103caa9dd82f5df856be463e3cf97b20 100644 (file)
@@ -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
 
 #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)
index 659f572b98c57928cd66f4a7b4a3059f1f8d4ba5..d767d75fb749389d637b5452d8d03964d53a86c3 100644 (file)
@@ -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)
index 78b3e5b4e7094f2d83740af6b89c8217d6becabc..65de8558372b8c40fd184d26ab1f9c59a585c0c9 100644 (file)
@@ -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 (file)
index 0000000..4314bdb
--- /dev/null
@@ -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"
index f5519aa4eb79b8e0f46cf7dc4221f931cc76256a..5bfe43895c5e03f42c0bf81d40c3383a6b03a84e 100644 (file)
@@ -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