Updated to fedora-glibc-20080515T0735 fedora-glibc-2_8_90-1
authorjakub <jakub>
Thu, 15 May 2008 07:57:41 +0000 (07:57 +0000)
committerjakub <jakub>
Thu, 15 May 2008 07:57:41 +0000 (07:57 +0000)
124 files changed:
ChangeLog
NEWS
bits/byteswap.h
bits/termios.h
configure
configure.in
elf/dl-conflict.c
elf/dl-reloc.c
elf/dl-tls.c
elf/dynamic-link.h
elf/elf.h
elf/tlsdeschtab.h [new file with mode: 0644]
fedora/branch.mk
fedora/glibc.spec.in
fedora/glibc_post_upgrade.c
iconv/gconv_simple.c
iconvdata/Makefile
iconvdata/bug-iconv6.c
iconvdata/run-iconv-test.sh
include/arpa/nameser_compat.h
include/inline-hashtab.h [new file with mode: 0644]
include/resolv.h
inet/netinet/in.h
io/openat.c
io/openat64.c
localedata/ChangeLog
localedata/charmaps/UTF-8
localedata/locales/be_BY
localedata/locales/i18n
localedata/locales/iso14651_t1_common
math/libm-test.inc
misc/truncate64.c
nis/Versions
nis/nss_nis/nis-hosts.c
nis/nss_nisplus/nisplus-hosts.c
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
nscd/Makefile
nscd/aicache.c
nscd/cache.c
nscd/grpcache.c
nscd/hstcache.c
nscd/initgrcache.c
nscd/mem.c
nscd/pwdcache.c
nscd/servicescache.c
nss/Versions
nss/getent.c
nss/nss.h
nss/nss_files/files-hosts.c
po/lt.po [new file with mode: 0644]
posix/regcomp.c
posix/regex_internal.c
posix/tst-rfc3484-2.c
posix/tst-rfc3484-3.c
posix/tst-rfc3484.c
resolv/Versions
resolv/gethnamaddr.c
resolv/nss_dns/dns-canon.c
resolv/nss_dns/dns-host.c
resolv/nss_dns/dns-network.c
resolv/res_mkquery.c
resolv/res_query.c
resolv/res_send.c
stdlib/tst-setcontext.c
string/Makefile
string/endian.h
string/memmem.c
string/str-two-way.h [new file with mode: 0644]
string/strcasestr.c
string/strstr.c
string/tester.c
string/tst-endian.c [new file with mode: 0644]
sysdeps/i386/Makefile
sysdeps/i386/bits/byteswap.h
sysdeps/i386/bits/linkmap.h
sysdeps/i386/dl-lookupcfg.h [new file with mode: 0644]
sysdeps/i386/dl-machine.h
sysdeps/i386/dl-tls.h
sysdeps/i386/dl-tlsdesc.S [new file with mode: 0644]
sysdeps/i386/dl-tlsdesc.h [new file with mode: 0644]
sysdeps/i386/tlsdesc.c [new file with mode: 0644]
sysdeps/i386/tlsdesc.sym [new file with mode: 0644]
sysdeps/ia64/bits/byteswap.h
sysdeps/ieee754/flt-32/w_expf.c
sysdeps/ieee754/ldbl-128/e_j0l.c
sysdeps/ieee754/ldbl-128/e_j1l.c
sysdeps/ieee754/ldbl-128/s_expm1l.c
sysdeps/ieee754/ldbl-128/s_log1pl.c
sysdeps/mach/hurd/bits/ioctls.h
sysdeps/posix/getaddrinfo.c
sysdeps/s390/bits/byteswap.h
sysdeps/sparc/sparc32/Makefile
sysdeps/sparc/sparc64/Makefile
sysdeps/unix/sysv/linux/alpha/bits/resource.h
sysdeps/unix/sysv/linux/bits/resource.h
sysdeps/unix/sysv/linux/bits/socket.h
sysdeps/unix/sysv/linux/dl-osinfo.h
sysdeps/unix/sysv/linux/sparc/bits/resource.h
sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
sysdeps/unix/sysv/linux/sparc/sparc32/getcontext.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/sparc32/swapcontext.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S
sysdeps/unix/sysv/linux/sparc/sparc32/ucontext_i.sym [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S
sysdeps/unix/sysv/linux/sys/user.h
sysdeps/unix/sysv/linux/times.c [new file with mode: 0644]
sysdeps/x86_64/Makefile
sysdeps/x86_64/bits/byteswap.h
sysdeps/x86_64/bits/linkmap.h
sysdeps/x86_64/dl-lookupcfg.h [new file with mode: 0644]
sysdeps/x86_64/dl-machine.h
sysdeps/x86_64/dl-tls.h
sysdeps/x86_64/dl-tlsdesc.S [new file with mode: 0644]
sysdeps/x86_64/dl-tlsdesc.h [new file with mode: 0644]
sysdeps/x86_64/tlsdesc.c [new file with mode: 0644]
sysdeps/x86_64/tlsdesc.sym [new file with mode: 0644]
version.h

index 826b080..097f317 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,291 @@
+2008-05-14  Ulrich Drepper  <drepper@redhat.com>
+
+       * string/Makefile (distribute): Add str-two-way.h.
+
+2008-03-29  Eric Blake <ebb9@byu.net>
+
+       Rewrite string searches to O(n) rather than O(n^2).
+       * string/str-two-way.h: New file.  For linear fixed-allocation
+       string searching.
+       * string/memmem.c: New implementation.
+       * string/strstr.c: New implementation.
+       * string/strcasestr.c: New implementation.
+
+2008-04-11  Paolo Bonzini  <bonzini@gnu.org>
+
+       * posix/regcomp.c (optimize_utf8): Add a note on why we test
+       opr.ctx_type.
+       (calc_first): Initialize constraint field.
+       (duplicate_node_closure): Use it instead of special casing ANCHORS.
+       Use search_duplicated_node to avoid loops.  Fix grammar.
+       (duplicate_node): Merge constraint field for all node types.
+       (calc_eclosure_iter): Look at constraint field for all node types.
+       * posix/regex_internal.c (create_cd_newstate): Don't look at
+       create_cd_newstate.
+
+2008-05-14  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #6428]
+       * configure.in: Don't use $CFLAGS when assembling, use $ASFLAGS.
+
+       [BZ #6442]
+       * string/endian.h: Add macros for fixed-size endian conversion.
+       * bits/byteswap.h: Allow inclusion from <endian.h>.
+       * sysdeps/i386/bits/byteswap.h: Likewise.
+       * sysdeps/ia64/bits/byteswap.h: Likewise.
+       * sysdeps/s390/bits/byteswap.h: Likewise.
+       * sysdeps/x86_64/bits/byteswap.h: Likewise.
+       * string/Makefile (tests): Add tst-endian.
+       * string/tst-endian.c: New file.
+
+       * iconvdata/run-iconv-test.sh: Use = instead of == in test.
+       Patch by Reuben Thomas.
+
+2008-05-14  Joseph Myers  <joseph@codesourcery.com>
+
+       * iconvdata/Makefile (bug-iconv6-ENV, tst-iconv7-ENV): Define.
+
+2008-05-14  Ulrich Drepper  <drepper@redhat.com>
+
+       * iconvdata/bug-iconv6.c (do_test): Use de_DE.UTF-8 locale.
+
+       [BZ #6461]
+       * iconv/gconv_simple.c (BODY for __gconv_transform_ascii_internal):
+       Add missing braces.
+       (BODY for __gconv_transform_internal_ascii): Likewise.
+
+       [BZ #6472]
+       * sysdeps/posix/getaddrinfo.c (get_scope): Loopback addresses have
+       to be treated like link-local addresses.
+       (match_prefix): Don't treat IPv4 loopback address special when
+       converting to v4 mapped addressed.
+
+       * sysdeps/posix/getaddrinfo.c (getaddrinfo): Call _res_hconf_init
+       if necessary.
+       * posix/tst-rfc3484.c: Add dummy definition of _res_hconf_init.
+       * posix/tst-rfc3484-2.c: Likewise.
+       * posix/tst-rfc3484-3.c: Likewise.
+
+       * sysdeps/posix/getaddrinfo.c: Implement handling of DCCP, UDPlite,
+       and SCTP.
+
+       * nss/getent.c (ahosts_keys_int): Handle all known socket types.
+
+       * inet/netinet/in.h (IPPIPPROTO_DCCP, IPPROTO_UDPLITE): Define.
+
+       * sysdeps/unix/sysv/linux/bits/socket.h (SOCK_DCCP): Define.
+
+2008-05-13  Ulrich Drepper  <drepper@redhat.com>
+
+       * po/lt.po: New file.  From Lituanian translation team.
+
+2008-01-30  Alexandre Oliva  <aoliva@redhat.com>
+
+       Introduce TLS descriptors for i386 and x86_64.
+       * include/inline-hashtab.h: New file, copied from 2005's
+       libiberty, with fix for memory leak imported afterwards by
+       Glauber de Oliveira Costa.
+       * elf/tlsdeschtab.h: New file.
+       * elf/dl-reloc.c (_dl_try_allocate_static_tls): Extract from...
+       (_dl_allocate_static_tls): ... here.  Rearrange failure path.
+       (CHECK_STATIC_TLS): Move to...
+       * elf/dynamic-link.h: ... this file.
+       (TRY_STATIC_TLS): New macro.
+       * elf/dl-conflict.c (CHECK_STATIC_TLS, TRY_STATIC_TLS): Override.
+       * elf/elf.h (R_386_TLS_GOTDESC, R_386_TLS_DESC_CALL,
+       R_386_TLS_DESC): Define.
+       (R_X86_64_PC64, R_X86_GOTOFF64, R_X86_64_GOTPC32): Merge from
+       binutils.
+       (R_X86_64_GOTPC32_TLSDESC, R_X86_64_TLSDESC_CALL,
+       R_X86_64_TLSDESC): Define.
+       (R_386_NUM, R_X86_64_NUM): Adjust.
+       * sysdeps/i386/Makefile (sysdep-dl-routines, sysdep_routines,
+       sysdep-rtld-routines): Add tlsdesc and dl-tlsdesc for elf subdir.
+       (gen-as-const-headers): Add tlsdesc.sym to csu subdir.
+       * sysdeps/i386/dl-lookupcfg.h: New file.  Introduce _dl_unmap to
+       release tlsdesc_table.
+       * sysdeps/i386/dl-machine.h: Include dl-tlsdesc.h.
+       (elf_machine_type_class): Mark R_386_TLS_DESC as PLT class.
+       (elf_machine_rel): Handle R_386_TLS_DESC.
+       (elf_machine_rela): Likewise.
+       (elf_machine_lazy_rel): Likewise.
+       (elf_machine_lazy_rela): Likewise.
+       * sysdeps/i386/dl-tls.h (struct dl_tls_index): Name it.
+       * sysdeps/i386/dl-tlsdesc.S: New file.
+       * sysdeps/i386/dl-tlsdesc.h: New file.
+       * sysdeps/i386/tlsdesc.c: New file.
+       * sysdeps/i386/tlsdesc.sym: New file.
+       * sysdeps/i386/bits/linkmap.h (struct link_map_machine): Add
+       tlsdesc_table.
+       * sysdeps/x86_64/Makefile (sysdep-dl-routines, sysdep_routines,
+       sysdep-rtld-routines): Add tlsdesc and dl-tlsdesc for elf subdir.
+       (gen-as-const-headers): Add tlsdesc.sym to csu subdir.
+       * sysdeps/x86_64/dl-lookupcfg.h: New file.  Introduce _dl_unmap to
+       release tlsdesc_table.
+       * sysdeps/x86_64/dl-machine.h: Include dl-tlsdesc.h.
+       (elf_machine_runtime_setup): Set up lazy TLSDESC GOT entry.
+       (elf_machine_type_class): Mark R_X86_64_TLSDESC as PLT class.
+       (elf_machine_rel): Handle R_X86_64_TLSDESC.
+       (elf_machine_rela): Likewise.
+       (elf_machine_lazy_rel): Likewise.
+       * sysdeps/x86_64/dl-tls.h (struct dl_tls_index): Name it.
+       (__tls_get_addr): Do not declare for non-shared compiles.
+       * sysdeps/x86_64/dl-tlsdesc.S: New file.
+       * sysdeps/x86_64/dl-tlsdesc.h: New file.
+       * sysdeps/x86_64/tlsdesc.c: New file.
+       * sysdeps/x86_64/tlsdesc.sym: New file.
+       * sysdeps/x86_64/bits/linkmap.h (struct link_map_machine): Add
+       tlsdesc_table for both 32- and 64-bit structs.
+
+2008-05-11  Ulrich Drepper  <drepper@redhat.com>
+
+       * elf/dl-tls.c (__tls_get_addr): Optimize by moving slow path in
+       its own function.  This reduces the frame setup costs and more.
+
+2008-02-11  Joseph Myers  <joseph@codesourcery.com>
+
+       [BZ #3406]
+       * sysdeps/ieee754/flt-32/w_expf.c (o_threshold): Correct value.
+       * math/libm-test.inc (exp_test): Test 88.72269439697265625.
+
+2008-05-11  Ulrich Drepper  <drepper@redhat.com>
+
+       * io/openat.c (__openat_2): Also pass fd to __openat.
+       * io/openat64.c (__openat64_2): Also pass fd to __openat64.
+       Patch by Kristian Van Der Vliet <vanders@liqwyd.com>.
+
+       * string/tester.c (test_memcmp): Add a few more tests.
+       Patch by Mats Erik Andersson <ynglingatal@comhem.se>.
+
+2008-05-10  Ulrich Drepper  <drepper@redhat.com>
+
+       * nscd/cache.c (cache_add): Before returning with failure and this
+       is the first use of the record, mark it as unusable.
+       * nscd/aicache.c: Don't touch the dataset after cache_add returns
+       reporting a failure.
+       * nscd/grpcache.c: Likewise
+       * nscd/hstcache.c: Likewise.
+       * nscd/initgrcache.c: Likewise.
+       * nscd/pwdcache.c: Likewise.
+       * nscd/servicecache.c: Likewise.
+
+2008-05-10  Roland McGrath  <roland@redhat.com>
+
+       [BZ #6505]
+       * sysdeps/unix/sysv/linux/sys/user.h: Replace with #error stub.
+
+2008-05-08  David S. Miller  <davem@davemloft.net>
+
+       * misc/truncate64.c (truncate64): Use __truncate not truncate.
+
+       * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee751_j0l): Use __finitel.
+       (__ieee754_y0l): Likewise.
+       * sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l): Likewise.
+       (__ieee754_y1l): Likewise.
+       * sysdeps/ieee754/ldbl-128/s_expm1l.c (__expm1l): Use __ldexpl.
+       * sysdeps/ieee754/ldbl-128/s_log1pl.c: Kill bogus prototypes for
+       frexpl and ldexpl.  math_private.h provides them and the latter
+       is not even used.
+       (__log1pl): Use __frexpl.
+
+2008-05-10  Ulrich Drepper  <drepper@redhat.com>
+
+       * include/resolv.h: Adjust __libc_res_nquery and __libc_res_nsend
+       prototypes.
+       * include/arpa/nameser_compat.h: Define T_UNSPEC.
+       * nis/Versions (libnss_nis): Export _nss_nis_gethostbyname4_r.
+       (libnss_nisplus): Export _nss_nisplus_gethostbyname4_r.
+       * nis/nss_nis/nis-hosts.c (LINE_PARSER): Change to also handle
+       af==AF_UNSPEC.
+       (_nss_nis_gethostbyname4_r): New function.
+       * nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_parse_hostent):
+       Change to also handle af==AF_UNSPEC.
+       (get_tablename): New function.  Use it to avoid duplication.
+       (_nss_nisplus_gethostbyname4_r): New function.
+       * nscd/aicache.c (addhstaiX): Use gethostbyname4_r function is
+       available.
+       * nss/Versions (libnss_files): Export _nss_files_gethostbyname4_r.
+       * nss/nss.h: Define struct gaih_addrtuple.
+       * nss/nss_files/files-hosts.c (LINE_PARSER): Change to also handle
+       af==AF_UNSPEC.
+       (_nss_files_gethostbyname4_r): New function.
+       * resolv/Versions (libnss_dns): Export _nss_dns_gethostbyname4_r.
+       * resolv/gethnmaddr.c: Adjust __libc_res_nsearch and __libc_res_nquery
+       calls.
+       * resolv/res_query.c (__libc_res_nquery): Take two additional
+       parameters for second answer buffer.  Handle type=T_UNSPEC to mean
+       look up IPv4 and IPv6.
+       Change all callers.
+       * resolv/res_send.c (__libc_res_nsend): Take five aditional parameters
+       for an additional query and answer buffer.  Pass to send_vc and
+       send_dg.
+       (send_vc): Send possibly two requests and receive two answers.
+       (send_dg): Likewise.
+       * resolv/nss_dns/dns-host.c: Adjust calls to __libc_res_nsearch and
+       __libc_res_nquery.
+       (_nss_dns_gethostbyname4_r): New function.
+       (gaih_getanswer_slice): Likewise.
+       (gaih_getanswer): Likewise.
+       * resolv/nss_dns/dns-canon.c (_nss_dns_getcanonname_r): Adjust
+       __libc_res_nquery call.
+       * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyaddr_r): Likewise.
+       (_nss_dns_getnetbyname_r): Adjust __libc_res_nsearch call.
+       * sysdeps/posix/getaddrinfo.c: Use gethostbyname4_r function is
+       available.
+
+2008-05-05  David S. Miller  <davem@davemloft.net>
+
+       * sysdeps/sparc/sparc32/Makefile: Use -mcpu=v7 for initfini.s build.
+       * sysdeps/sparc/sparc64/Makefile: Use -mcpu=v9 for initfini.s build.
+
+2007-09-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+       Fix termios bit macros.
+       Move *DLY definitions where they belong, in termios.h.
+       Add *[0-3] definitions.
+       Fixes confusion between VT and FF.
+       * sysdeps/mach/hurd/bits/ioctls.h (NL0, NL1, TAB0, TAB1, TAB2, CR0,
+       CR1, CR2, CR3, FF0, FF1, BS0, BS1): Undefine these at start if they
+       are already defined to avoid collision with termios.h.
+       (NLDLY, TABDLY, TAB3, CRDLY, VTDLY, BSDLY): Remove macros.
+       * bits/termios.h [__USE_MISC || __USE_XOPEN] (NL0, NL1, TAB0,
+       TAB1, TAB2, CR0, CR1, CR2, CR3, FF0, FF1, BS0, BS1): Likewise.
+       [__USE_BSD || __USE_XOPEN] (OCRNL, ONOCR, ONLRET): New macros.
+       [__USE_MISC || __USE_XOPEN] (NLDLY, NL0, NL1, TABDLY, TAB0, TAB1, TAB2,
+       TAB3, CRDLY, CR0, CR1, CR2, CR3, FFDLY, FF0, FF1, BSDLY, BS0, BS1,
+       VTDLY, VT0, VT1): New macros.
+       [__USE_GNU] (OLCUC): Change value of macro.
+       [__USE_XOPEN] (OFILL): New macro.
+       [__USE_BSD] (CRTSCTS): Change value.
+       (CRTS_IFLOW, CCTS_OFLOW): Change into compatibility macros.
+       [__USE_BSD] (CDTRCTS, CHWFLOW): New macros.
+       (B7200, B14400, B28800, B76800): New macros.
+
+2008-05-01  David S. Miller  <davem@davemloft.net>
+
+       * sysdeps/unix/sysv/linux/sparc/sparc32/ucontext_i.sym: New file.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile [$(subdir) = stdlib]:
+       (gen-as-const-headers): Add it.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/getcontext.S: New file.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/swapcontext.S: Likewise.
+
+       * sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S: Add support for
+       six system call parameters.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S: Likewise.
+
+2008-04-30  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/bits/resource.h: Define RUSAGE_THREAD and
+       RUSAGE_LWP.
+       * sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise.
+       * sysdeps/unix/sysv/linux/alpha/bits/resource.h: Likewise.
+
+2008-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * stdlib/tst-setcontext.c: Include unistd.h.
+
 2008-04-25  David S. Miller  <davem@davemloft.net>
 
        * sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c (semctl):
 
        * nscd/nscd.h (dbs): Make hidden.
 
+       * sysdeps/unix/sysv/linux/times.c (__times): Fix check for EFAULT.
+       Avoid returning -1, return 0 instead.
+
+2008-04-19  Ulrich Drepper  <drepper@redhat.com>
+
+       * resolv/res_mkquery.c (__res_nopt): Use NS_PUT16 instead of ns_put16.
+
 2008-04-15  Ulrich Drepper  <drepper@redhat.com>
 
+       [BZ #5209]
+       * sysdeps/unix/sysv/linux/times.c: New file.
+
        [BZ #5381]
        * nscd/nscd.h: Define enum in_flight, mem_in_flight, and
        mem_in_flight_list variables.  Add new parameter to mempool_alloc
        * nscd/connections.c (handle_request): Provide better error message
        in case SELinux forbids the service.
 
+       * version.h (VERSION): Bump to 2.8.90.
+
+2008-04-17  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/dl-osinfo.h: Include fcntl.h.
+
 2008-04-11  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h (__signbitl):
diff --git a/NEWS b/NEWS
index 2d8621a..eebc6b8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,28 @@
-GNU C Library NEWS -- history of user-visible changes.  2008-4-9
+GNU C Library NEWS -- history of user-visible changes.  2008-5-14
 Copyright (C) 1992-2007, 2008 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
 using `glibc' in the "product" field.
 \f
+Version 2.9
+
+* Unified lookup for getaddrinfo: IPv4 and IPv6 addresses are now looked
+  up at the same time.  Implemented by Ulrich Drepper.
+
+* TLS descriptors for LD and GD on x86 and x86-64.
+  Implemented by Alexandre Oliva.
+
+* getaddrinfo now handles DCCP and UDPlite.
+  Implemented by Ulrich Drepper.
+
+* New fixed-size conversion macros: htobe16, htole16, be16toh, le16toh,
+  htobe32, htole32, be32toh, le32toh, htobe64, htole64, be64toh, le64toh.
+  Implemented by Ulrich Drepper.
+
+* New implementation of memmem, strstr, and strcasestr which is O(n).
+  Implemented by Eric Blake.
+\f
 Version 2.8
 
 * New locales: bo_CN, bo_IN.
index 949ed0b..45cb947 100644 (file)
@@ -1,5 +1,5 @@
 /* Macros to swap the order of bytes in integer values.
-   Copyright (C) 1997,1998,2000,2001,2002,2005 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,2000-2002,2005,2008 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
@@ -17,7 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
+#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
 # error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
 #endif
 
index 43bb1ce..4dc0fab 100644 (file)
 /* These macros are also defined in some <bits/ioctls.h> files (with
    numerically identical values), but this serves to shut up cpp's
    complaining. */
+#if defined __USE_MISC || defined __USE_XOPEN
+
+# ifdef NL0
+#  undef NL0
+# endif
+# ifdef NL1
+#  undef NL1
+# endif
+# ifdef TAB0
+#  undef TAB0
+# endif
+# ifdef TAB1
+#  undef TAB1
+# endif
+# ifdef TAB2
+#  undef TAB2
+# endif
+# ifdef CR0
+#  undef CR0
+# endif
+# ifdef CR1
+#  undef CR1
+# endif
+# ifdef CR2
+#  undef CR2
+# endif
+# ifdef CR3
+#  undef CR3
+# endif
+# ifdef FF0
+#  undef FF0
+# endif
+# ifdef FF1
+#  undef FF1
+# endif
+# ifdef BS0
+#  undef BS0
+# endif
+# ifdef BS1
+#  undef BS1
+# endif
+
+#endif /* __USE_MISC || __USE_XOPEN */
+
 #ifdef __USE_BSD
 
 # ifdef MDMBUF
@@ -93,11 +137,43 @@ struct termios
 #define        OPOST   (1 << 0)        /* Perform output processing.  */
 #ifdef __USE_BSD
 # define ONLCR (1 << 1)        /* Map NL to CR-NL on output.  */
-# define OXTABS        (1 << 2)        /* Expand tabs to spaces.  */
+# define OXTABS        TAB3            /* Expand tabs to spaces.  */
 # define ONOEOT        (1 << 3)        /* Discard EOT (^D) on output.  */
 #endif
+#if defined __USE_BSD || defined __USE_XOPEN
+# define OCRNL (1 << 4)        /* Map CR to NL.  */
+# define ONOCR (1 << 5)        /* Discard CR's when on column 0.  */
+# define ONLRET        (1 << 6)        /* Move to column 0 on NL.  */
+#endif
+#if defined __USE_MISC || defined __USE_XOPEN
+# define NLDLY (3 << 8)        /* NL delay.  */
+# define NL0   (0 << 8)        /* NL type 0.  */
+# define NL1   (1 << 8)        /* NL type 1.  */
+# define TABDLY        (3 << 10)       /* TAB delay.  */
+# define TAB0  (0 << 10)       /* TAB delay type 0.  */
+# define TAB1  (1 << 10)       /* TAB delay type 1.  */
+# define TAB2  (2 << 10)       /* TAB delay type 2.  */
+# define TAB3  (1 << 2)        /* Expand tabs to spaces.  */
+# define CRDLY (3 << 12)       /* CR delay.  */
+# define CR0   (0 << 12)       /* CR delay type 0.  */
+# define CR1   (1 << 12)       /* CR delay type 1.  */
+# define CR2   (2 << 12)       /* CR delay type 2.  */
+# define CR3   (3 << 12)       /* CR delay type 3.  */
+# define FFDLY (1 << 14)       /* FF delay.  */
+# define FF0   (0 << 14)       /* FF delay type 0.  */
+# define FF1   (1 << 14)       /* FF delay type 1.  */
+# define BSDLY (1 << 15)       /* BS delay.  */
+# define BS0   (0 << 15)       /* BS delay type 0.  */
+# define BS1   (1 << 15)       /* BS delay type 1.  */
+# define VTDLY (1 << 16)       /* VT delay.  */
+# define VT0   (0 << 16)       /* VT delay type 0.  */
+# define VT1   (1 << 16)       /* VT delay type 1.  */
+#endif /* __USE_MISC || __USE_XOPEN */
 #ifdef __USE_GNU
-# define OLCUC (1 << 9)        /* Translate lower case output to upper case */
+# define OLCUC (1 << 17)       /* Translate lower case output to upper case */
+#endif
+#ifdef __USE_XOPEN
+# define OFILL (1 << 18)       /* Send fill characters for delays.  */
 #endif
 
   /* Control modes.  */
@@ -117,10 +193,12 @@ struct termios
 #define        HUPCL   (1 << 14)       /* Hang up on last close.  */
 #define        CLOCAL  (1 << 15)       /* Ignore modem status lines.  */
 #ifdef __USE_BSD
-# define CCTS_OFLOW    (1 << 16)       /* CTS flow control of output.  */
-# define CRTS_IFLOW    (1 << 17)       /* RTS flow control of input.  */
-# define CRTSCTS       (CCTS_OFLOW|CRTS_IFLOW) /* CTS/RTS flow control.  */
-# define MDMBUF                (1 << 20)       /* Carrier flow control of output.  */
+# define CRTSCTS       (1 << 16)       /* RTS/CTS flow control.  */
+# define CRTS_IFLOW    CRTSCTS         /* Compatibility.  */
+# define CCTS_OFLOW    CRTSCTS         /* Compatibility.  */
+# define CDTRCTS       (1 << 17)       /* DTR/CTS flow control.  */
+# define MDMBUF                (1 << 20)       /* DTR/DCD flow control.  */
+# define CHWFLOW       (MDMBUF|CRTSCTS|CDTRCTS) /* All types of flow control.  */
 #endif
 
   /* Local modes.  */
@@ -210,13 +288,17 @@ struct termios
 #define        B2400   2400            /* 2400 baud.  */
 #define        B4800   4800            /* 4800 baud.  */
 #define        B9600   9600            /* 9600 baud.  */
+#define        B7200   7200            /* 7200 baud.  */
+#define        B14400  14400           /* 14400 baud.  */
 #define        B19200  19200           /* 19200 baud.  */
+#define        B28800  28800           /* 28800 baud.  */
 #define        B38400  38400           /* 38400 baud.  */
 #ifdef __USE_MISC
 # define EXTA  19200
 # define EXTB  38400
 #endif
 #define        B57600  57600
+#define        B76800  76800
 #define        B115200 115200
 #define        B230400 230400
 #define        B460800 460800
index 3330d53..a43f850 100755 (executable)
--- a/configure
+++ b/configure
@@ -6266,7 +6266,7 @@ EOF
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } \
      && grep -q .note.GNU-stack conftest.s \
-     && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
+     && { ac_try='${CC-cc} $ASFLAGS -Wa,--noexecstack
                       -c -o conftest.o conftest.s 1>&5'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
index e6a5abb..ef9893c 100644 (file)
@@ -1520,7 +1520,7 @@ EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
                     -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
      && grep -q .note.GNU-stack conftest.s \
-     && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
+     && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
                       -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
   then
     libc_cv_as_noexecstack=yes
index 9b49e77..b730105 100644 (file)
@@ -1,5 +1,5 @@
 /* Resolve conflicts against already prelinked libraries.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
 
@@ -44,7 +44,6 @@ _dl_resolve_conflicts (struct link_map *l, ElfW(Rela) *conflict,
     /* This macro is used as a callback from the ELF_DYNAMIC_RELOCATE code.  */
 #define RESOLVE_MAP(ref, version, flags) (*ref = NULL, NULL)
 #define RESOLVE(ref, version, flags) (*ref = NULL, 0)
-#define CHECK_STATIC_TLS(ref_map, sym_map) ((void) 0)
 #define RESOLVE_CONFLICT_FIND_MAP(map, r_offset) \
   do {                                                                       \
     while ((resolve_conflict_map->l_map_end < (ElfW(Addr)) (r_offset))       \
@@ -61,6 +60,12 @@ _dl_resolve_conflicts (struct link_map *l, ElfW(Rela) *conflict,
 
 #include "dynamic-link.h"
 
+    /* Override these, defined in dynamic-link.h.  */
+#undef CHECK_STATIC_TLS
+#define CHECK_STATIC_TLS(ref_map, sym_map) ((void) 0)
+#undef TRY_STATIC_TLS
+#define TRY_STATIC_TLS(ref_map, sym_map) (0)
+
     GL(dl_num_cache_relocations) += conflictend - conflict;
 
     for (; conflict < conflictend; ++conflict)
index e9784c2..a303cb4 100644 (file)
@@ -1,5 +1,5 @@
 /* Relocate a shared object and resolve its references to other loaded objects.
-   Copyright (C) 1995-2004, 2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1995-2004, 2005, 2006, 2008 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
@@ -43,9 +43,9 @@
    This function intentionally does not return any value but signals error
    directly, as static TLS should be rare and code handling it should
    not be inlined as much as possible.  */
-void
-internal_function __attribute_noinline__
-_dl_allocate_static_tls (struct link_map *map)
+int
+internal_function
+_dl_try_allocate_static_tls (struct link_map *map)
 {
   /* If we've already used the variable with dynamic access, or if the
      alignment requirements are too high, fail.  */
@@ -53,8 +53,7 @@ _dl_allocate_static_tls (struct link_map *map)
       || map->l_tls_align > GL(dl_tls_static_align))
     {
     fail:
-      _dl_signal_error (0, map->l_name, NULL, N_("\
-cannot allocate memory in static TLS block"));
+      return -1;
     }
 
 #if TLS_TCB_AT_TP
@@ -108,6 +107,20 @@ cannot allocate memory in static TLS block"));
     }
   else
     map->l_need_tls_init = 1;
+
+  return 0;
+}
+
+void
+internal_function __attribute_noinline__
+_dl_allocate_static_tls (struct link_map *map)
+{
+  if (map->l_tls_offset == FORCED_DYNAMIC_TLS_OFFSET
+      || _dl_try_allocate_static_tls (map))
+    {
+      _dl_signal_error (0, map->l_name, NULL, N_("\
+cannot allocate memory in static TLS block"));
+    }
 }
 
 /* Initialize static TLS area and DTV for current (only) thread.
@@ -248,23 +261,6 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
             l->l_lookup_cache.value = _lr; }))                               \
      : l)
 
-    /* This macro is used as a callback from elf_machine_rel{a,} when a
-       static TLS reloc is about to be performed.  Since (in dl-load.c) we
-       permit dynamic loading of objects that might use such relocs, we
-       have to check whether each use is actually doable.  If the object
-       whose TLS segment the reference resolves to was allocated space in
-       the static TLS block at startup, then it's ok.  Otherwise, we make
-       an attempt to allocate it in surplus space on the fly.  If that
-       can't be done, we fall back to the error that DF_STATIC_TLS is
-       intended to produce.  */
-#define CHECK_STATIC_TLS(map, sym_map)                                 \
-    do {                                                               \
-      if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET   \
-                           || ((sym_map)->l_tls_offset                 \
-                               == FORCED_DYNAMIC_TLS_OFFSET), 0))      \
-       _dl_allocate_static_tls (sym_map);                              \
-    } while (0)
-
 #include "dynamic-link.h"
 
     ELF_DYNAMIC_RELOCATE (l, lazy, consider_profiling);
index 76a3f25..54c3590 100644 (file)
@@ -691,6 +691,61 @@ _dl_update_slotinfo (unsigned long int req_modid)
 }
 
 
+static void *
+__attribute_noinline__
+tls_get_addr_tail (dtv_t *dtv, struct link_map *the_map, size_t module)
+{
+  /* The allocation was deferred.  Do it now.  */
+  if (the_map == NULL)
+    {
+      /* Find the link map for this module.  */
+      size_t idx = module;
+      struct dtv_slotinfo_list *listp = GL(dl_tls_dtv_slotinfo_list);
+
+      while (idx >= listp->len)
+       {
+         idx -= listp->len;
+         listp = listp->next;
+       }
+
+      the_map = listp->slotinfo[idx].map;
+    }
+
+ again:
+  /* Make sure that, if a dlopen running in parallel forces the
+     variable into static storage, we'll wait until the address in the
+     static TLS block is set up, and use that.  If we're undecided
+     yet, make sure we make the decision holding the lock as well.  */
+  if (__builtin_expect (the_map->l_tls_offset
+                       != FORCED_DYNAMIC_TLS_OFFSET, 0))
+    {
+      __rtld_lock_lock_recursive (GL(dl_load_lock));
+      if (__builtin_expect (the_map->l_tls_offset == NO_TLS_OFFSET, 1))
+       {
+         the_map->l_tls_offset = FORCED_DYNAMIC_TLS_OFFSET;
+         __rtld_lock_unlock_recursive (GL(dl_load_lock));
+       }
+      else
+       {
+         __rtld_lock_unlock_recursive (GL(dl_load_lock));
+         if (__builtin_expect (the_map->l_tls_offset
+                               != FORCED_DYNAMIC_TLS_OFFSET, 1))
+           {
+             void *p = dtv[module].pointer.val;
+             if (__builtin_expect (p == TLS_DTV_UNALLOCATED, 0))
+               goto again;
+
+             return p;
+           }
+       }
+    }
+  void *p = dtv[module].pointer.val = allocate_and_init (the_map);
+  dtv[module].pointer.is_static = false;
+
+  return p;
+}
+
+
 /* The generic dynamic and local dynamic model cannot be used in
    statically linked applications.  */
 void *
@@ -703,52 +758,10 @@ __tls_get_addr (GET_ADDR_ARGS)
   if (__builtin_expect (dtv[0].counter != GL(dl_tls_generation), 0))
     the_map = _dl_update_slotinfo (GET_ADDR_MODULE);
 
- retry:
   p = dtv[GET_ADDR_MODULE].pointer.val;
 
   if (__builtin_expect (p == TLS_DTV_UNALLOCATED, 0))
-    {
-      /* The allocation was deferred.  Do it now.  */
-      if (the_map == NULL)
-       {
-         /* Find the link map for this module.  */
-         size_t idx = GET_ADDR_MODULE;
-         struct dtv_slotinfo_list *listp = GL(dl_tls_dtv_slotinfo_list);
-
-         while (idx >= listp->len)
-           {
-             idx -= listp->len;
-             listp = listp->next;
-           }
-
-         the_map = listp->slotinfo[idx].map;
-       }
-
-      /* Make sure that, if a dlopen running in parallel forces the
-        variable into static storage, we'll wait until the address in
-        the static TLS block is set up, and use that.  If we're
-        undecided yet, make sure we make the decision holding the
-        lock as well.  */
-      if (__builtin_expect (the_map->l_tls_offset
-                           != FORCED_DYNAMIC_TLS_OFFSET, 0))
-       {
-         __rtld_lock_lock_recursive (GL(dl_load_lock));
-         if (__builtin_expect (the_map->l_tls_offset == NO_TLS_OFFSET, 1))
-           {
-             the_map->l_tls_offset = FORCED_DYNAMIC_TLS_OFFSET;
-             __rtld_lock_unlock_recursive (GL(dl_load_lock));
-           }
-         else
-           {
-             __rtld_lock_unlock_recursive (GL(dl_load_lock));
-             if (__builtin_expect (the_map->l_tls_offset
-                                   != FORCED_DYNAMIC_TLS_OFFSET, 1))
-               goto retry;
-           }
-       }
-      p = dtv[GET_ADDR_MODULE].pointer.val = allocate_and_init (the_map);
-      dtv[GET_ADDR_MODULE].pointer.is_static = false;
-    }
+    p = tls_get_addr_tail (dtv, the_map, GET_ADDR_MODULE);
 
   return (char *) p + GET_ADDR_OFFSET;
 }
index 7eb9a36..c34cbcd 100644 (file)
@@ -1,5 +1,5 @@
 /* Inline functions for dynamic linking.
-   Copyright (C) 1995-2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1995-2005, 2006, 2008 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.  */
 
+/* This macro is used as a callback from elf_machine_rel{a,} when a
+   static TLS reloc is about to be performed.  Since (in dl-load.c) we
+   permit dynamic loading of objects that might use such relocs, we
+   have to check whether each use is actually doable.  If the object
+   whose TLS segment the reference resolves to was allocated space in
+   the static TLS block at startup, then it's ok.  Otherwise, we make
+   an attempt to allocate it in surplus space on the fly.  If that
+   can't be done, we fall back to the error that DF_STATIC_TLS is
+   intended to produce.  */
+#define CHECK_STATIC_TLS(map, sym_map)                                 \
+    do {                                                               \
+      if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET   \
+                           || ((sym_map)->l_tls_offset                 \
+                               == FORCED_DYNAMIC_TLS_OFFSET), 0))      \
+       _dl_allocate_static_tls (sym_map);                              \
+    } while (0)
+
+#define TRY_STATIC_TLS(map, sym_map)                                   \
+    (__builtin_expect ((sym_map)->l_tls_offset                         \
+                      != FORCED_DYNAMIC_TLS_OFFSET, 1)                 \
+     && (__builtin_expect ((sym_map)->l_tls_offset != NO_TLS_OFFSET, 1)        \
+        || _dl_try_allocate_static_tls (sym_map) == 0))
+
+int internal_function _dl_try_allocate_static_tls (struct link_map *map);
+
 #include <elf.h>
 #include <assert.h>
 
index 928e9ec..269de52 100644 (file)
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -1159,8 +1159,17 @@ typedef struct
 #define R_386_TLS_DTPMOD32 35          /* ID of module containing symbol */
 #define R_386_TLS_DTPOFF32 36          /* Offset in TLS block */
 #define R_386_TLS_TPOFF32  37          /* Negated offset in static TLS block */
+/* 38? */
+#define R_386_TLS_GOTDESC  39          /* GOT offset for TLS descriptor.  */
+#define R_386_TLS_DESC_CALL 40         /* Marker of call through TLS
+                                          descriptor for
+                                          relaxation.  */
+#define R_386_TLS_DESC     41          /* TLS descriptor containing
+                                          pointer to code and to
+                                          argument, returning the TLS
+                                          offset for the symbol.  */
 /* Keep this the last entry.  */
-#define R_386_NUM         38
+#define R_386_NUM         42
 
 /* SUN SPARC specific definitions.  */
 
@@ -2557,8 +2566,17 @@ typedef Elf32_Addr Elf32_Conflict;
 #define R_X86_64_GOTTPOFF      22      /* 32 bit signed PC relative offset
                                           to GOT entry for IE symbol */
 #define R_X86_64_TPOFF32       23      /* Offset in initial TLS block */
+#define R_X86_64_PC64          24      /* PC relative 64 bit */
+#define R_X86_64_GOTOFF64      25      /* 64 bit offset to GOT */
+#define R_X86_64_GOTPC32       26      /* 32 bit signed pc relative
+                                          offset to GOT */
+/* 27 .. 33 */
+#define R_X86_64_GOTPC32_TLSDESC 34    /* GOT offset for TLS descriptor.  */
+#define R_X86_64_TLSDESC_CALL   35     /* Marker for call through TLS
+                                          descriptor.  */
+#define R_X86_64_TLSDESC        36     /* TLS descriptor.  */
 
-#define R_X86_64_NUM           24
+#define R_X86_64_NUM           37
 
 
 /* AM33 relocations.  */
diff --git a/elf/tlsdeschtab.h b/elf/tlsdeschtab.h
new file mode 100644 (file)
index 0000000..c3cbc3f
--- /dev/null
@@ -0,0 +1,157 @@
+/* Hash table for TLS descriptors.
+   Copyright (C) 2005, 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Alexandre Oliva  <aoliva@redhat.com>
+
+   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.  */
+
+#ifndef TLSDESCHTAB_H
+# define TLSDESCHTAB_H 1
+
+# ifdef SHARED
+
+#  include <inline-hashtab.h>
+
+inline static int
+hash_tlsdesc (void *p)
+{
+  struct tlsdesc_dynamic_arg *td = p;
+
+  /* We know all entries are for the same module, so ti_offset is the
+     only distinguishing entry.  */
+  return td->tlsinfo.ti_offset;
+}
+
+inline static int
+eq_tlsdesc (void *p, void *q)
+{
+  struct tlsdesc_dynamic_arg *tdp = p, *tdq = q;
+
+  return tdp->tlsinfo.ti_offset == tdq->tlsinfo.ti_offset;
+}
+
+inline static int
+map_generation (struct link_map *map)
+{
+  size_t idx = map->l_tls_modid;
+  struct dtv_slotinfo_list *listp = GL(dl_tls_dtv_slotinfo_list);
+
+  /* Find the place in the dtv slotinfo list.  */
+  do
+    {
+      /* Does it fit in the array of this list element?  */
+      if (idx < listp->len)
+       {
+         /* We should never get here for a module in static TLS, so
+            we can assume that, if the generation count is zero, we
+            still haven't determined the generation count for this
+            module.  */
+         if (listp->slotinfo[idx].gen)
+           return listp->slotinfo[idx].gen;
+         else
+           break;
+       }
+      idx -= listp->len;
+      listp = listp->next;
+    }
+  while (listp != NULL);
+
+  /* If we get to this point, the module still hasn't been assigned an
+     entry in the dtv slotinfo data structures, and it will when we're
+     done with relocations.  At that point, the module will get a
+     generation number that is one past the current generation, so
+     return exactly that.  */
+  return GL(dl_tls_generation) + 1;
+}
+
+void *
+internal_function
+_dl_make_tlsdesc_dynamic (struct link_map *map, size_t ti_offset)
+{
+  struct hashtab *ht;
+  void **entry;
+  struct tlsdesc_dynamic_arg *td, test;
+
+  /* FIXME: We could use a per-map lock here, but is it worth it?  */
+  __rtld_lock_lock_recursive (GL(dl_load_lock));
+
+  ht = map->l_mach.tlsdesc_table;
+  if (! ht)
+    {
+      ht = htab_create ();
+      if (! ht)
+       {
+         __rtld_lock_unlock_recursive (GL(dl_load_lock));
+         return 0;
+       }
+      map->l_mach.tlsdesc_table = ht;
+    }
+
+  test.tlsinfo.ti_module = map->l_tls_modid;
+  test.tlsinfo.ti_offset = ti_offset;
+  entry = htab_find_slot (ht, &test, 1, hash_tlsdesc, eq_tlsdesc);
+  if (*entry)
+    {
+      td = *entry;
+      __rtld_lock_unlock_recursive (GL(dl_load_lock));
+      return td;
+    }
+
+  *entry = td = malloc (sizeof (struct tlsdesc_dynamic_arg));
+  /* This may be higher than the map's generation, but it doesn't
+     matter much.  Worst case, we'll have one extra DTV update per
+     thread.  */
+  td->gen_count = map_generation (map);
+  td->tlsinfo = test.tlsinfo;
+
+  __rtld_lock_unlock_recursive (GL(dl_load_lock));
+  return td;
+}
+
+# endif /* SHARED */
+
+/* The idea of the following two functions is to stop multiple threads
+   from attempting to resolve the same TLS descriptor without busy
+   waiting.  Ideally, we should be able to release the lock right
+   after changing td->entry, and then using say a condition variable
+   or a futex wake to wake up any waiting threads, but let's try to
+   avoid introducing such dependencies.  */
+
+inline static int
+_dl_tlsdesc_resolve_early_return_p (struct tlsdesc volatile *td, void *caller)
+{
+  if (caller != td->entry)
+    return 1;
+
+  __rtld_lock_lock_recursive (GL(dl_load_lock));
+  if (caller != td->entry)
+    {
+      __rtld_lock_unlock_recursive (GL(dl_load_lock));
+      return 1;
+    }
+
+  td->entry = _dl_tlsdesc_resolve_hold;
+
+  return 0;
+}
+
+inline static void
+_dl_tlsdesc_wake_up_held_fixups (void)
+{
+  __rtld_lock_unlock_recursive (GL(dl_load_lock));
+}
+
+#endif
index b35fb36..8c74d16 100644 (file)
@@ -3,5 +3,5 @@ glibc-branch := fedora
 glibc-base := HEAD
 DIST_BRANCH := devel
 COLLECTION := dist-f8
-fedora-sync-date := 2008-04-12 07:41 UTC
-fedora-sync-tag := fedora-glibc-20080412T0741
+fedora-sync-date := 2008-05-15 07:35 UTC
+fedora-sync-tag := fedora-glibc-20080515T0735
index c58ba1b..4512939 100644 (file)
@@ -19,7 +19,7 @@
 Summary: The GNU libc libraries
 Name: glibc
 Version: @glibcversion@
-Release: 2
+Release: 1
 # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
 # Things that are linked directly into dynamically linked programs
 # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
@@ -688,7 +688,7 @@ cd ..
 %if %{buildxen}
 echo ====================TESTING -mno-tls-direct-seg-refs=============
 cd build-%{nptl_target_cpu}-linuxnptl-nosegneg
-( make -j$numprocs -k check PARALLELMFLAGS=-s 2>&1
+( make %{?_smp_mflags} -k check PARALLELMFLAGS=-s 2>&1
   sleep 10s
   teepid="`ps -eo ppid,pid,command | awk '($1 == '${parent}' && $3 ~ /^tee/) { print $2 }'`"
   [ -n "$teepid" ] && kill $teepid
@@ -701,7 +701,7 @@ cd build-%{nptl_target_cpu}-linuxnptl-power6
 ( if [ -d ../power6emul ]; then
     export LD_PRELOAD=`cd ../power6emul; pwd`/\$LIB/power6emul.so
   fi
-  make -j$numprocs -k check PARALLELMFLAGS=-s 2>&1
+  make %{?_smp_mflags} -k check PARALLELMFLAGS=-s 2>&1
   sleep 10s
   teepid="`ps -eo ppid,pid,command | awk '($1 == '${parent}' && $3 ~ /^tee/) { print $2 }'`"
   [ -n "$teepid" ] && kill $teepid
@@ -976,6 +976,18 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Thu May 15 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-1
+- update to trunk
+  - O(n) memmem/strstr/strcasestr
+  - i386/x86_64 TLS descriptors support
+  - concurrent IPv4 and IPv6 DNS lookups by getaddrinfo
+
+* Mon May  5 2008 Jakub Jelinek <jakub@redhat.com> 2.8-3
+- don't run telinit u in %post if both /dev/initctl and
+  /sbin/initctl exist (#444978)
+- workaround GCC ppc64 miscompilation of c{log{,10},acosh,atan}l
+  (#444996)
+
 * Wed Apr 30 2008 Jakub Jelinek <jakub@redhat.com> 2.8-2
 - fix nscd races during GC (BZ#5381)
 - rebuilt with fixed GCC to fix regex miscompilation on power6
index 4358b90..e9bb0b8 100644 (file)
@@ -170,8 +170,8 @@ main (void)
   /* Check if telinit is available and either SysVInit fifo,
      or upstart telinit.  */
   if (access ("/sbin/telinit", X_OK)
-      || (access ("/dev/initctl", F_OK)
-         && access ("/sbin/initctl", X_OK)))
+      || ((!!access ("/dev/initctl", F_OK))
+         ^ !access ("/sbin/initctl", X_OK)))
     _exit (0);
   /* Check if we are not inside of some chroot, because we'd just
      timeout and leave /etc/initrunlvl.  */
index ec8f38a..5cf3237 100644 (file)
@@ -1,5 +1,5 @@
 /* Simple transformations functions.
-   Copyright (C) 1997-2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1997-2005, 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -820,9 +820,11 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
        STANDARD_FROM_LOOP_ERR_HANDLER (1);                                   \
       }                                                                              \
     else                                                                     \
-      /* It's an one byte sequence.  */                                              \
-      *((uint32_t *) outptr) = *inptr++;                                     \
-      outptr += sizeof (uint32_t);                                           \
+      {                                                                              \
+       /* It's an one byte sequence.  */                                     \
+       *((uint32_t *) outptr) = *inptr++;                                    \
+       outptr += sizeof (uint32_t);                                          \
+      }                                                                              \
   }
 #define LOOP_NEED_FLAGS
 #include <iconv/loop.c>
@@ -851,9 +853,11 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
        STANDARD_TO_LOOP_ERR_HANDLER (4);                                     \
       }                                                                              \
     else                                                                     \
-      /* It's an one byte sequence.  */                                              \
-      *outptr++ = *((const uint32_t *) inptr);                               \
-      inptr += sizeof (uint32_t);                                            \
+      {                                                                              \
+       /* It's an one byte sequence.  */                                     \
+       *outptr++ = *((const uint32_t *) inptr);                              \
+       inptr += sizeof (uint32_t);                                           \
+      }                                                                              \
   }
 #define LOOP_NEED_FLAGS
 #include <iconv/loop.c>
index 1a46a64..e93de56 100644 (file)
@@ -73,6 +73,9 @@ tests += bug-iconv3
 endif
 
 test-srcs := tst-table-from tst-table-to
+
+bug-iconv6-ENV = LOCPATH=$(common-objpfx)localedata
+tst-iconv7-ENV = LOCPATH=$(common-objpfx)localedata
 endif
 
 # No code here is in libc.so.
index f920954..b364f4c 100644 (file)
@@ -13,7 +13,7 @@ static const char testbuf[] = {
 static int
 do_test (void)
 {
-  setlocale (LC_ALL, "en_US.UTF-8");
+  setlocale (LC_ALL, "de_DE.UTF-8");
   iconv_t ic = iconv_open ("ISO-2022-JP//TRANSLIT", "UTF-8");
   if (ic == (iconv_t) -1)
     {
index 5f6339d..4b8a128 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh -f
 # Run available iconv(1) tests.
-# Copyright (C) 1998-2002, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 1998-2002, 2005, 2006, 2008 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 # Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 #
@@ -130,7 +130,7 @@ while read from to subset targets; do
     done
   fi
 
-  if test "$subset" == N; 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 ||
index bfbb2de..2e735ed 100644 (file)
@@ -1 +1,8 @@
+#ifndef _ARPA_NAMESER_COMPAT_
 #include <resolv/arpa/nameser_compat.h>
+
+/* Picksome unused number to represent lookups of IPv4 and IPv6 (i.e.,
+   T_A and T_AAAA).  */
+#define T_UNSPEC 62321
+
+#endif
diff --git a/include/inline-hashtab.h b/include/inline-hashtab.h
new file mode 100644 (file)
index 0000000..1c36bd7
--- /dev/null
@@ -0,0 +1,302 @@
+/* Fully-inline hash table, used mainly for managing TLS descriptors.
+
+   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2008
+     Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Alexandre Oliva  <aoliva@redhat.com>
+
+   This file is derived from a 2003's version of libiberty's
+   hashtab.c, contributed by Vladimir Makarov (vmakarov@cygnus.com),
+   but with most adaptation points and support for deleting elements
+   removed.
+
+   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.  */
+
+#ifndef INLINE_HASHTAB_H
+# define INLINE_HASHTAB_H 1
+
+extern void weak_function free (void *ptr);
+
+inline static unsigned long
+higher_prime_number (unsigned long n)
+{
+  /* These are primes that are near, but slightly smaller than, a
+     power of two.  */
+  static const uint32_t primes[] = {
+    UINT32_C (7),
+    UINT32_C (13),
+    UINT32_C (31),
+    UINT32_C (61),
+    UINT32_C (127),
+    UINT32_C (251),
+    UINT32_C (509),
+    UINT32_C (1021),
+    UINT32_C (2039),
+    UINT32_C (4093),
+    UINT32_C (8191),
+    UINT32_C (16381),
+    UINT32_C (32749),
+    UINT32_C (65521),
+    UINT32_C (131071),
+    UINT32_C (262139),
+    UINT32_C (524287),
+    UINT32_C (1048573),
+    UINT32_C (2097143),
+    UINT32_C (4194301),
+    UINT32_C (8388593),
+    UINT32_C (16777213),
+    UINT32_C (33554393),
+    UINT32_C (67108859),
+    UINT32_C (134217689),
+    UINT32_C (268435399),
+    UINT32_C (536870909),
+    UINT32_C (1073741789),
+    UINT32_C (2147483647),
+                                       /* 4294967291L */
+    UINT32_C (2147483647) + UINT32_C (2147483644)
+  };
+
+  const uint32_t *low = &primes[0];
+  const uint32_t *high = &primes[sizeof (primes) / sizeof (primes[0])];
+
+  while (low != high)
+    {
+      const unsigned long *mid = low + (high - low) / 2;
+      if (n > *mid)
+       low = mid + 1;
+      else
+       high = mid;
+    }
+
+#if 0
+  /* If we've run out of primes, abort.  */
+  if (n > *low)
+    {
+      fprintf (stderr, "Cannot find prime bigger than %lu\n", n);
+      abort ();
+    }
+#endif
+
+  return *low;
+}
+
+struct hashtab
+{
+  /* Table itself.  */
+  void **entries;
+
+  /* Current size (in entries) of the hash table */
+  size_t size;
+
+  /* Current number of elements.  */
+  size_t n_elements;
+
+  /* Free function for the entries array.  This may vary depending on
+     how early the array was allocated.  If it is NULL, then the array
+     can't be freed.  */
+  void (*free) (void *ptr);
+};
+
+inline static struct hashtab *
+htab_create (void)
+{
+  struct hashtab *ht = malloc (sizeof (struct hashtab));
+
+  if (! ht)
+    return NULL;
+  ht->size = 3;
+  ht->entries = malloc (sizeof (void *) * ht->size);
+  ht->free = free;
+  if (! ht->entries)
+    {
+      if (ht->free)
+       ht->free (ht);
+      return NULL;
+    }
+
+  ht->n_elements = 0;
+
+  memset (ht->entries, 0, sizeof (void *) * ht->size);
+
+  return ht;
+}
+
+/* This is only called from _dl_unmap, so it's safe to call
+   free().  */
+inline static void
+htab_delete (struct hashtab *htab)
+{
+  int i;
+
+  for (i = htab->size - 1; i >= 0; i--)
+    if (htab->entries[i])
+      free (htab->entries[i]);
+
+  if (htab->free)
+    htab->free (htab->entries);
+  free (htab);
+}
+
+/* Similar to htab_find_slot, but without several unwanted side effects:
+    - Does not call htab->eq_f when it finds an existing entry.
+    - Does not change the count of elements/searches/collisions in the
+      hash table.
+   This function also assumes there are no deleted entries in the table.
+   HASH is the hash value for the element to be inserted.  */
+
+inline static void **
+find_empty_slot_for_expand (struct hashtab *htab, int hash)
+{
+  size_t size = htab->size;
+  unsigned int index = hash % size;
+  void **slot = htab->entries + index;
+  int hash2;
+
+  if (! *slot)
+    return slot;
+
+  hash2 = 1 + hash % (size - 2);
+  for (;;)
+    {
+      index += hash2;
+      if (index >= size)
+       index -= size;
+
+      slot = htab->entries + index;
+      if (! *slot)
+       return slot;
+    }
+}
+
+/* The following function changes size of memory allocated for the
+   entries and repeatedly inserts the table elements.  The occupancy
+   of the table after the call will be about 50%.  Naturally the hash
+   table must already exist.  Remember also that the place of the
+   table entries is changed.  If memory allocation failures are allowed,
+   this function will return zero, indicating that the table could not be
+   expanded.  If all goes well, it will return a non-zero value.  */
+
+inline static int
+htab_expand (struct hashtab *htab, int (*hash_fn) (void *))
+{
+  void **oentries;
+  void **olimit;
+  void **p;
+  void **nentries;
+  size_t nsize;
+
+  oentries = htab->entries;
+  olimit = oentries + htab->size;
+
+  /* Resize only when table after removal of unused elements is either
+     too full or too empty.  */
+  if (htab->n_elements * 2 > htab->size)
+    nsize = higher_prime_number (htab->n_elements * 2);
+  else
+    nsize = htab->size;
+
+  nentries = malloc (sizeof (void *) * nsize);
+  memset (nentries, 0, sizeof (void *) * nsize);
+  if (nentries == NULL)
+    return 0;
+  htab->entries = nentries;
+  htab->size = nsize;
+
+  p = oentries;
+  do
+    {
+      if (*p)
+       *find_empty_slot_for_expand (htab, hash_fn (*p))
+         = *p;
+
+      p++;
+    }
+  while (p < olimit);
+
+  /* Without recording the free corresponding to the malloc used to
+     allocate the table, we couldn't tell whether this was allocated
+     by the malloc() built into ld.so or the one in the main
+     executable or libc.  Calling free() for something that was
+     allocated by the early malloc(), rather than the final run-time
+     malloc() could do Very Bad Things (TM).  We will waste memory
+     allocated early as long as there's no corresponding free(), but
+     this isn't so much memory as to be significant.  */
+
+  if (htab->free)
+    htab->free (oentries);
+
+  /* Use the free() corresponding to the malloc() above to free this
+     up.  */
+  htab->free = free;
+
+  return 1;
+}
+
+/* This function searches for a hash table slot containing an entry
+   equal to the given element.  To delete an entry, call this with
+   INSERT = 0, then call htab_clear_slot on the slot returned (possibly
+   after doing some checks).  To insert an entry, call this with
+   INSERT = 1, then write the value you want into the returned slot.
+   When inserting an entry, NULL may be returned if memory allocation
+   fails.  */
+
+inline static void **
+htab_find_slot (struct hashtab *htab, void *ptr, int insert,
+               int (*hash_fn)(void *), int (*eq_fn)(void *, void *))
+{
+  unsigned int index;
+  int hash, hash2;
+  size_t size;
+  void **entry;
+
+  if (htab->size * 3 <= htab->n_elements * 4
+      && htab_expand (htab, hash_fn) == 0)
+    return NULL;
+
+  hash = hash_fn (ptr);
+
+  size = htab->size;
+  index = hash % size;
+
+  entry = &htab->entries[index];
+  if (!*entry)
+    goto empty_entry;
+  else if (eq_fn (*entry, ptr))
+    return entry;
+
+  hash2 = 1 + hash % (size - 2);
+  for (;;)
+    {
+      index += hash2;
+      if (index >= size)
+       index -= size;
+
+      entry = &htab->entries[index];
+      if (!*entry)
+       goto empty_entry;
+      else if (eq_fn (*entry, ptr))
+       return entry;
+    }
+
+ empty_entry:
+  if (!insert)
+    return NULL;
+
+  htab->n_elements++;
+  return entry;
+}
+
+#endif /* INLINE_HASHTAB_H */
index c1c89f0..925746f 100644 (file)
@@ -58,11 +58,11 @@ libc_hidden_proto (__res_randomid)
 libc_hidden_proto (__res_state)
 
 int __libc_res_nquery (res_state, const char *, int, int, u_char *, int,
-                      u_char **);
+                      u_char **, u_char **, int *);
 int __libc_res_nsearch (res_state, const char *, int, int, u_char *, int,
-                       u_char **);
-int __libc_res_nsend (res_state, const u_char *, int, u_char *, int,
-                     u_char **)
+                       u_char **, u_char **, int *);
+int __libc_res_nsend (res_state, const u_char *, int, const u_char *, int,
+                     u_char *, int, u_char **, u_char **, int *)
   attribute_hidden;
 
 libresolv_hidden_proto (_sethtent)
index e3446a9..180227a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2001, 2003, 2004, 2006, 2007
+/* Copyright (C) 1991-2001, 2003, 2004, 2006, 2007, 2008
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -53,6 +53,8 @@ enum
 #define IPPROTO_IDP            IPPROTO_IDP
     IPPROTO_TP = 29,      /* SO Transport Protocol Class 4.  */
 #define IPPROTO_TP             IPPROTO_TP
+    IPPROTO_DCCP = 33,    /* Datagram Congestion Control Protocol.  */
+#define IPPROTO_DCCP           IPPROTO_DCCP
     IPPROTO_IPV6 = 41,     /* IPv6 header.  */
 #define IPPROTO_IPV6           IPPROTO_IPV6
     IPPROTO_ROUTING = 43,  /* IPv6 routing header.  */
@@ -83,6 +85,8 @@ enum
 #define IPPROTO_COMP           IPPROTO_COMP
     IPPROTO_SCTP = 132,           /* Stream Control Transmission Protocol.  */
 #define IPPROTO_SCTP           IPPROTO_SCTP
+    IPPROTO_UDPLITE = 136, /* UDP-Lite protocol.  */
+#define IPPROTO_UDPLITE                IPPROTO_UDPLITE
     IPPROTO_RAW = 255,    /* Raw IP packets.  */
 #define IPPROTO_RAW            IPPROTO_RAW
     IPPROTO_MAX
index 98fa1a1..a6bd620 100644 (file)
@@ -79,7 +79,7 @@ __openat_2 (fd, file, oflag)
   if (oflag & O_CREAT)
     __fortify_fail ("invalid openat call: O_CREAT without mode");
 
-  return __openat (file, oflag);
+  return __openat (fd, file, oflag);
 }
 stub_warning (__openat_2)
 
index 2d63490..1532afe 100644 (file)
@@ -79,7 +79,7 @@ __openat64_2 (fd, file, oflag)
   if (oflag & O_CREAT)
     __fortify_fail ("invalid openat64 call: O_CREAT without mode");
 
-  return __openat64 (file, oflag);
+  return __openat64 (fd, file, oflag);
 }
 stub_warning (__openat_2)
 
index 52cb387..95bbd7c 100644 (file)
@@ -1,3 +1,21 @@
+2008-05-14  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #6438]
+       * locales/iso14651_t1_common: Add sorting data for Telugu.
+
+       [BZ #6447]
+       * locales/be_BY: Fix yesexpr.
+       Patch by Alexander Mikhailian <mikhailian@altern.org>.
+
+2008-04-15  Ulrich Drepper  <drepper@redhat.com>
+
+       * charmaps/UTF-8: Update for Unicode v5.1.
+       * locales/i18n: Update for Unicode 5.
+
+2008-04-09  Ulrich Drepper  <drepper@redhat.com>
+
+       * tst-langinfo.sh: Adjust for latest fr_FR locale changes.
+
 2008-04-07  Ulrich Drepper  <drepper@redhat.com>
 
        [BZ #6021]
index 4ace376..d4375bb 100644 (file)
@@ -899,7 +899,6 @@ CHARMAP
 <U037C>     /xcd/xbc     GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
 <U037D>     /xcd/xbd     GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
 <U037E>     /xcd/xbe     GREEK QUESTION MARK
-<U037F>     /xcd/xbf     GREEK CAPITAL KAI SYMBOL
 <U0384>     /xce/x84     GREEK TONOS
 <U0385>     /xce/x85     GREEK DIALYTIKA TONOS
 <U0386>     /xce/x86     GREEK CAPITAL LETTER ALPHA WITH TONOS
@@ -972,6 +971,7 @@ CHARMAP
 <U03CC>     /xcf/x8c     GREEK SMALL LETTER OMICRON WITH TONOS
 <U03CD>     /xcf/x8d     GREEK SMALL LETTER UPSILON WITH TONOS
 <U03CE>     /xcf/x8e     GREEK SMALL LETTER OMEGA WITH TONOS
+<U03CF>     /xcf/x8f     GREEK CAPITAL KAI SYMBOL
 <U03D0>     /xcf/x90     GREEK BETA SYMBOL
 <U03D1>     /xcf/x91     GREEK THETA SYMBOL
 <U03D2>     /xcf/x92     GREEK UPSILON WITH HOOK SYMBOL
@@ -9443,71 +9443,71 @@ CHARMAP
 <U2D23>     /xe2/xb4/xa3 GEORGIAN SMALL LETTER WE
 <U2D24>     /xe2/xb4/xa4 GEORGIAN SMALL LETTER HAR
 <U2D25>     /xe2/xb4/xa5 GEORGIAN SMALL LETTER HOE
-<U2D30>     /xe2/xb4/xb0 TIFINAGH YA
-<U2D31>     /xe2/xb4/xb1 LETTRE TIFINAGHE YAB
-<U2D32>     /xe2/xb4/xb2 LETTRE TIFINAGHE YAB SPIRANT
-<U2D33>     /xe2/xb4/xb3 LETTRE TIFINAGHE YAG
-<U2D34>     /xe2/xb4/xb4 LETTRE TIFINAGHE YAG SPIRANT
-<U2D35>     /xe2/xb4/xb5 LETTRE TIFINAGHE YADJ KABYLE
-<U2D36>     /xe2/xb4/xb6 LETTRE TIFINAGHE YADJ
-<U2D37>     /xe2/xb4/xb7 LETTRE TIFINAGHE YAD
-<U2D38>     /xe2/xb4/xb8 LETTRE TIFINAGHE YAD SPIRANT (yadh)
-<U2D39>     /xe2/xb4/xb9 LETTRE TIFINAGHE YADD
-<U2D3A>     /xe2/xb4/xba LETTRE TIFINAGHE YADD SPIRANT
-<U2D3B>     /xe2/xb4/xbb LETTRE TIFINAGHE YEY
-<U2D3C>     /xe2/xb4/xbc LETTRE TIFINAGHE YAF
-<U2D3D>     /xe2/xb4/xbd LETTRE TIFINAGHE YAK
-<U2D3E>     /xe2/xb4/xbe LETTRE TIFINAGHE YAK TOUAREG
-<U2D3F>     /xe2/xb4/xbf LETTRE TIFINAGHE YAK SPIRANT
-<U2D40>     /xe2/xb5/x80 LETTRE TIFINAGHE YAH (yab touareg)
-<U2D41>     /xe2/xb5/x81 LETTRE TIFINAGHE YAH KABYLE
-<U2D42>     /xe2/xb5/x82 LETTRE TIFINAGHE YAH TOUAREG
-<U2D43>     /xe2/xb5/x83 LETTRE TIFINAGHE YAHH
-<U2D44>     /xe2/xb5/x84 LETTRE TIFINAGHE YA’
-<U2D45>     /xe2/xb5/x85 LETTRE TIFINAGHE YAKH
-<U2D46>     /xe2/xb5/x86 LETTRE TIFINAGHE YAKH TOUAREG (quatre-points en carré touareg)
-<U2D47>     /xe2/xb5/x87 LETTRE TIFINAGHE YAQ
-<U2D48>     /xe2/xb5/x88 LETTRE TIFINAGHE YAQ TOUAREG
-<U2D49>     /xe2/xb5/x89 LETTRE TIFINAGHE YI
-<U2D4A>     /xe2/xb5/x8a LETTRE TIFINAGHE YAJ
-<U2D4B>     /xe2/xb5/x8b LETTRE TIFINAGHE YAJ DE L’AHAGGAR
-<U2D4C>     /xe2/xb5/x8c LETTRE TIFINAGHE YAJ TOUAREG
-<U2D4D>     /xe2/xb5/x8d LETTRE TIFINAGHE YAL
-<U2D4E>     /xe2/xb5/x8e LETTRE TIFINAGHE YAM
-<U2D4F>     /xe2/xb5/x8f LETTRE TIFINAGHE YAN
-<U2D50>     /xe2/xb5/x90 LETTRE TIFINAGHE YAGN TOUAREG
-<U2D51>     /xe2/xb5/x91 LETTRE TIFINAGHE YANG TOUAREG
-<U2D52>     /xe2/xb5/x92 LETTRE TIFINAGHE YAP
-<U2D53>     /xe2/xb5/x93 LETTRE TIFINAGHE YOU (yaw touareg)
-<U2D54>     /xe2/xb5/x94 LETTRE TIFINAGHE YAR
-<U2D55>     /xe2/xb5/x95 LETTRE TIFINAGHE YARR
-<U2D56>     /xe2/xb5/x96 LETTRE TIFINAGHE YAGH
-<U2D57>     /xe2/xb5/x97 LETTRE TIFINAGHE YAGH TOUAREG
-<U2D58>     /xe2/xb5/x98 LETTRE TIFINAGHE YAGH DE L’AÏR (yadj de l’Adrar, cinq-points en quinconce touareg)
-<U2D59>     /xe2/xb5/x99 LETTRE TIFINAGHE YAS
-<U2D5A>     /xe2/xb5/x9a LETTRE TIFINAGHE YASS
-<U2D5B>     /xe2/xb5/x9b LETTRE TIFINAGHE YACH
-<U2D5C>     /xe2/xb5/x9c LETTRE TIFINAGHE YAT
-<U2D5D>     /xe2/xb5/x9d LETTRE TIFINAGHE YAT SPIRANT (yath)
-<U2D5E>     /xe2/xb5/x9e LETTRE TIFINAGHE YATCH
-<U2D5F>     /xe2/xb5/x9f LETTRE TIFINAGHE YATT
-<U2D60>     /xe2/xb5/xa0 LETTRE TIFINAGHE YAV
-<U2D61>     /xe2/xb5/xa1 LETTRE TIFINAGHE YAW
-<U2D62>     /xe2/xb5/xa2 LETTRE TIFINAGHE YAY
-<U2D63>     /xe2/xb5/xa3 LETTRE TIFINAGHE YAZ
-<U2D64>     /xe2/xb5/xa4 LETTRE TIFINAGHE YAZ TAWELLEMET (yaz harpon)
-<U2D65>     /xe2/xb5/xa5 LETTRE TIFINAGHE YAZZ
-<U2D6F>     /xe2/xb5/xaf LETTRE MODIFICATIVE TIFINAGHE DE LABIO-VÉLARISATION (tamatart)
-<U2D80>     /xe2/xb6/x80 ETHIOPIC SYLLALE LOA
-<U2D81>     /xe2/xb6/x81 ETHIOPIC SYLLALE MOA
-<U2D82>     /xe2/xb6/x82 ETHIOPIC SYLLALE ROA
-<U2D83>     /xe2/xb6/x83 ETHIOPIC SYLLALE SOA
-<U2D84>     /xe2/xb6/x84 ETHIOPIC SYLLALE SHOA
-<U2D85>     /xe2/xb6/x85 ETHIOPIC SYLLALE BOA
-<U2D86>     /xe2/xb6/x86 ETHIOPIC SYLLALE TOA
-<U2D87>     /xe2/xb6/x87 ETHIOPIC SYLLALE COA
-<U2D88>     /xe2/xb6/x88 ETHIOPIC SYLLALE NOA
-<U2D89>     /xe2/xb6/x89 ETHIOPIC SYLLALE NYOA
+<U2D30>     /xe2/xb4/xb0 TIFINAGH LETTER YA
+<U2D31>     /xe2/xb4/xb1 TIFINAGH LETTER YAB
+<U2D32>     /xe2/xb4/xb2 TIFINAGH LETTER YABH
+<U2D33>     /xe2/xb4/xb3 TIFINAGH LETTER YAG
+<U2D34>     /xe2/xb4/xb4 TIFINAGH LETTER YAGHH
+<U2D35>     /xe2/xb4/xb5 TIFINAGH LETTER BERBER ACADEMY YAJ
+<U2D36>     /xe2/xb4/xb6 TIFINAGH LETTER YAJ
+<U2D37>     /xe2/xb4/xb7 TIFINAGH LETTER YAD
+<U2D38>     /xe2/xb4/xb8 TIFINAGH LETTER YADH
+<U2D39>     /xe2/xb4/xb9 TIFINAGH LETTER YADD
+<U2D3A>     /xe2/xb4/xba TIFINAGH LETTER YADDH
+<U2D3B>     /xe2/xb4/xbb TIFINAGH LETTER YEY
+<U2D3C>     /xe2/xb4/xbc TIFINAGH LETTER YAF
+<U2D3D>     /xe2/xb4/xbd TIFINAGH LETTER YAK
+<U2D3E>     /xe2/xb4/xbe TIFINAGH LETTER TUAREG YAK
+<U2D3F>     /xe2/xb4/xbf TIFINAGH LETTER YAKHH
+<U2D40>     /xe2/xb5/x80 TIFINAGH LETTER YAH
+<U2D41>     /xe2/xb5/x81 TIFINAGH LETTER BERBER ACADEMY YAH
+<U2D42>     /xe2/xb5/x82 TIFINAGH LETTER TUAREG YAH
+<U2D43>     /xe2/xb5/x83 TIFINAGH LETTER YAHH
+<U2D44>     /xe2/xb5/x84 TIFINAGH LETTER YAA
+<U2D45>     /xe2/xb5/x85 TIFINAGH LETTER YAKH
+<U2D46>     /xe2/xb5/x86 TIFINAGH LETTER TUAREG YAKH
+<U2D47>     /xe2/xb5/x87 TIFINAGH LETTER YAQ
+<U2D48>     /xe2/xb5/x88 TIFINAGH LETTER TUAREG YAQ
+<U2D49>     /xe2/xb5/x89 TIFINAGH LETTER YI
+<U2D4A>     /xe2/xb5/x8a TIFINAGH LETTER YAZH
+<U2D4B>     /xe2/xb5/x8b TIFINAGH LETTER AHAGGAR YAZH
+<U2D4C>     /xe2/xb5/x8c TIFINAGH LETTER TUAREG YAZH
+<U2D4D>     /xe2/xb5/x8d TIFINAGH LETTER YAL
+<U2D4E>     /xe2/xb5/x8e TIFINAGH LETTER YAM
+<U2D4F>     /xe2/xb5/x8f TIFINAGH LETTER YAN
+<U2D50>     /xe2/xb5/x90 TIFINAGH LETTER TUAREG YAGN
+<U2D51>     /xe2/xb5/x91 TIFINAGH LETTER TUAREG YANG
+<U2D52>     /xe2/xb5/x92 TIFINAGH LETTER YAP
+<U2D53>     /xe2/xb5/x93 TIFINAGH LETTER YU
+<U2D54>     /xe2/xb5/x94 TIFINAGH LETTER YAR
+<U2D55>     /xe2/xb5/x95 TIFINAGH LETTER YARR
+<U2D56>     /xe2/xb5/x96 TIFINAGH LETTER YAGH
+<U2D57>     /xe2/xb5/x97 TIFINAGH LETTER TUAREG YAGH
+<U2D58>     /xe2/xb5/x98 TIFINAGH LETTER AYER YAGH
+<U2D59>     /xe2/xb5/x99 TIFINAGH LETTER YAS
+<U2D5A>     /xe2/xb5/x9a TIFINAGH LETTER YASS
+<U2D5B>     /xe2/xb5/x9b TIFINAGH LETTER YASH
+<U2D5C>     /xe2/xb5/x9c TIFINAGH LETTER YAT
+<U2D5D>     /xe2/xb5/x9d TIFINAGH LETTER YATH
+<U2D5E>     /xe2/xb5/x9e TIFINAGH LETTER YACH
+<U2D5F>     /xe2/xb5/x9f TIFINAGH LETTER YATT
+<U2D60>     /xe2/xb5/xa0 TIFINAGH LETTER YAV
+<U2D61>     /xe2/xb5/xa1 TIFINAGH LETTER YAW
+<U2D62>     /xe2/xb5/xa2 TIFINAGH LETTER YAY
+<U2D63>     /xe2/xb5/xa3 TIFINAGH LETTER YAZ
+<U2D64>     /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ
+<U2D65>     /xe2/xb5/xa5 TIFINAGH LETTER YAZZ
+<U2D6F>     /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+<U2D80>     /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA
+<U2D81>     /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA
+<U2D82>     /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA
+<U2D83>     /xe2/xb6/x83 ETHIOPIC SYLLABLE SOA
+<U2D84>     /xe2/xb6/x84 ETHIOPIC SYLLABLE SHOA
+<U2D85>     /xe2/xb6/x85 ETHIOPIC SYLLABLE BOA
+<U2D86>     /xe2/xb6/x86 ETHIOPIC SYLLABLE TOA
+<U2D87>     /xe2/xb6/x87 ETHIOPIC SYLLABLE COA
+<U2D88>     /xe2/xb6/x88 ETHIOPIC SYLLABLE NOA
+<U2D89>     /xe2/xb6/x89 ETHIOPIC SYLLABLE NYOA
 <U2D8A>     /xe2/xb6/x8a ETHIOPIC SYLLABLE GLOTTAL OA
 <U2D8B>     /xe2/xb6/x8b ETHIOPIC SYLLABLE ZOA
 <U2D8C>     /xe2/xb6/x8c ETHIOPIC SYLLABLE DOA
@@ -26425,7 +26425,6 @@ CHARMAP
 <UFFFC>     /xef/xbf/xbc OBJECT REPLACEMENT CHARACTER
 <UFFFD>     /xef/xbf/xbd REPLACEMENT CHARACTER
 <U00010000> /xf0/x90/x80/x80 LINEAR B SYLLABLE B008 A
-<U00010000> /xf0/x90/x80/x80 LINEAR B SYLLABLE B008 A
 <U00010001> /xf0/x90/x80/x81 LINEAR B SYLLABLE B038 E
 <U00010002> /xf0/x90/x80/x82 LINEAR B SYLLABLE B028 I
 <U00010003> /xf0/x90/x80/x83 LINEAR B SYLLABLE B061 O
index 3111a6a..0e02ac4 100644 (file)
@@ -69,7 +69,7 @@ translit_end
 END LC_CTYPE
 
 LC_MESSAGES
-yesexpr "<U005E><U005B><U0414><U0434><U0059><U0079><U005D><U002E><U002A>"
+yesexpr "<U005E><U005B><U0422><U0442><U0059><U0079><U005D><U002E><U002A>"
 noexpr  "<U005E><U005B><U041D><U043D><U004E><U006E><U005D><U002E><U002A>"
 END LC_MESSAGES
 
index 93ffe90..7287424 100644 (file)
@@ -2,20 +2,17 @@ escape_char /
 comment_char %
 
 LC_IDENTIFICATION
-% This is the ISO/IEC TR 14652 "i18n" definition for
-% the LC_IDENTIFICATION category.
-%
-title                 "ISO/IEC TR 14652 i18n FDCC-set"
-source                "ISO/IEC Copyright Office"
-address               "Case postale 56, CH-1211 Geneve 20, Switzerland"
+title                 ""
+source                ""
+address               ""
 contact               ""
 email                 ""
 tel                   ""
 fax                   ""
 language              ""
-territory             "ISO"
-revision              "1.0"
-date                  "2000-01-24"
+territory             ""
+revision              ""
+date                  "2008-04-13"
 %
 category  "i18n:2000";LC_IDENTIFICATION
 category  "i18n:2000";LC_CTYPE
@@ -63,6 +60,7 @@ upper /
    <U023A>;<U023B>;<U023D>;<U023E>;/
    <U0241>;<U0243>..<U0246>;<U0248>;<U024A>;<U024C>;<U024E>;/
 % BASIC GREEK/
+   <U0370>;<U0372>;<U0376>;/
    <U0386>;<U0388>..<U038A>;<U038C>;<U038E>;<U038F>;<U0391>..<U03A1>;/
    <U03A3>..<U03AB>;<U03D8>..(2)..<U03DE>;/
 % GREEK SYMBOLS AND COPTIC/
@@ -73,7 +71,7 @@ upper /
    <U0480>;<U048A>..(2)..<U04BE>;<U04C0>;<U04C1>..(2)..<U04CD>;/
    <U04D0>..(2)..<U04FE>;/
 % CYRILLIC SUPPLEMENT/
-   <U0500>..(2)..<U0512>;/
+   <U0500>..(2)..<U0522>;/
 % ARMENIAN/
    <U0531>..<U0556>;/
 % GEORGIAN/
@@ -83,8 +81,8 @@ upper /
    <U10A0>..<U10C5>;/
 % LATIN EXTENDED ADDITIONAL/
    <U1E00>..(2)..<U1E7E>;/
-   <U1E80>..(2)..<U1E94>;/
-   <U1EA0>..(2)..<U1EF8>;/
+   <U1E80>..(2)..<U1E94>;<U1E9E>;/
+   <U1EA0>..(2)..<U1EFE>;/
 % GREEK EXTENDED/
    <U1F08>..<U1F0F>;<U1F18>..<U1F1D>;<U1F28>..<U1F2F>;<U1F38>..<U1F3F>;/
    <U1F48>..<U1F4D>;<U1F59>..(2)..<U1F5F>;<U1F68>..<U1F6F>;/
@@ -101,9 +99,15 @@ upper /
 % GLAGOLITIC/
    <U2C00>..<U2C2E>;/
 % LATIN EXTENDED-C/
-   <U2C60>;<U2C62>..<U2C64>;<U2C67>..(2)..<U2C6B>;<U2C75>;/
+   <U2C60>;<U2C62>..<U2C64>;<U2C67>..(2)..<U2C6B>;<U2C6D>..<U2C6F>;/
+   <U2C72>;<U2C75>;<UA78B>;/
 % COPTIC/
    <U2C80>..(2)..<U2CE2>;/
+% CYRILLIC SUPPLEMENT 2/
+   <UA640>..(2)..<UA65E>;<UA662>..(2)..<UA66C>;<UA680>..(2)..<UA696>;/
+% LATIN EXTENDED-D/
+   <UA722>..(2)..<UA72E>;<UA732>..(2)..<UA76E>;<UA779>..(2)..<UA77D>;/
+   <UA77E>..(2)..<UA786>;/
 % HALFWIDTH AND FULLWIDTH FORMS/
    <UFF21>..<UFF3A>;/
 % DESERET/
@@ -133,6 +137,7 @@ lower /
 % COMBINING DIACRITICAL MARKS/
    <U0345>;/
 % BASIC GREEK/
+   <U0371>;<U0373>;<U0377>;/
    <U037B>..<U037D>;/
    <U03AC>..<U03AF>;<U03B1>..<U03CE>;/
 % GREEK SYMBOLS AND COPTIC/
@@ -142,13 +147,13 @@ lower /
    <U0430>..<U045F>;<U0461>..(2)..<U047F>;/
    <U0481>;<U048B>..(2)..<U04BF>;<U04C2>..(2)..<U04CE>;/
    <U04CF>;/
-   <U04D1>..(2)..<U0513>;/
+   <U04D1>..(2)..<U0523>;/
 % ARMENIAN/
    <U0561>..<U0586>;/
 % PHONETIC EXTENSIONS/
    <U1D7D>;/
 % LATIN EXTENDED ADDITIONAL/
-   <U1E01>..(2)..<U1E95>;<U1E9B>;<U1EA1>..(2)..<U1EF9>;/
+   <U1E01>..(2)..<U1E95>;<U1E9B>..<U1E9D>;<U1E9F>;<U1EA1>..(2)..<U1EFF>;/
 % GREEK EXTENDED/
    <U1F00>..<U1F07>;<U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;/
    <U1F40>..<U1F45>;<U1F51>..(2)..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/
@@ -158,19 +163,25 @@ lower /
 % LETTERLIKE SYMBOLS/
    <U214E>;/
 % NUMBER FORMS/
-   <U2170>..<U217F>;<U2184>;/
+   <U2170>..<U217F>;<U2188>;/
 % ENCLOSED ALPHANUMERICS/
    <U24D0>..<U24E9>;/
 % GLAGOLITIC/
    <U2C30>..<U2C5E>;/
 % LATIN EXTENDED-C/
-   <U2C61>;<U2C65>;<U2C66>..(2)..<U2C6C>;<U2C76>;/
+   <U2C61>;<U2C65>;<U2C66>..(2)..<U2C6C>;<U2C71>;<U2C73>;<U2C74>;/
+   <U2C76>..<U2C7A>;/
 % COPTIC/
    <U2C81>..(2)..<U2CE3>;/
 % GEORGIAN SUPPLEMENT/
 % well, there are three georgian blocks defined; one caseless (the one usually/
 % used), one defined as uppercase and one as lowercase. defining the lowercase one here/
    <U2D00>..<U2D25>;/
+% CYRILLIC SUPPLEMENT 2/
+   <UA641>..(2)..<UA65F>;<UA663>..(2)..<UA66D>;<UA681>..(2)..<UA697>;/
+% LATIN EXTENDED-D/
+   <UA723>..(2)..<UA72F>;<UA730>;<UA731>..(2)..<UA76F>;<UA771>..<UA778>;/
+   <UA77A>..(2)..<UA77C>;<UA77F>..(2)..<UA787>;<UA78C>;/
 % HALFWIDTH AND FULLWIDTH FORMS/
    <UFF41>..<UFF5A>;/
 % DESERET/
@@ -196,7 +207,7 @@ alpha /
 % COMBINING DIACRITICAL MARKS/
    <U0345>;/
 % BASIC GREEK/
-   <U037A>..<U037D>;<U0386>;/
+   <U0370>..<U0373>;<U0376>..<U0377>;<U037A>..<U037D>;<U0386>;/
    <U0388>..<U038A>;<U038C>;<U038E>..<U03A1>;/
    <U03A3>..<U03CE>;/
 % GREEK SYMBOLS AND COPTIC/
@@ -204,18 +215,18 @@ alpha /
 % CYRILLIC/
    <U0400>..<U0481>;<U048A>..<U04FF>;/
 % CYRILLIC SUPPLEMENT/
-   <U0500>..<U0513>;/
+   <U0500>..<U0523>;/
 % ARMENIAN/
    <U0531>..<U0556>;<U0559>;<U0561>..<U0587>;/
 % HEBREW/
    <U05D0>..<U05EA>;<U05F0>..<U05F2>;/
 % ARABIC/
-   <U0621>..<U063A>;<U0640>..<U064A>;<U066E>..<U066F>;<U0671>..<U06D3>;/
+   <U0621>..<U064A>;<U066E>..<U066F>;<U0671>..<U06D3>;/
    <U06D5>;<U06E5>..<U06E6>;<U06EE>..<U06EF>;<U06FA>..<U06FC>;<U06FF>;/
 % SYRIAC/
    <U0710>;<U0712>..<U072F>;<U074D>..<U074F>;/
 % ARABIC SUPPLEMENT/
-   <U0750>..<U076D>;/
+   <U0750>..<U077F>;/
 % THAANA/
    <U0780>..<U07A5>;<U07B1>;/
 % NKO/
@@ -238,20 +249,20 @@ alpha /
 % ORIYA/
    <U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
    <U0B32>;<U0B33>;<U0B35>..<U0B39>;<U0B3D>;<U0B5C>;<U0B5D>;/
-   <U0B5F>..<U0B61>;<U0B71>;/
+   <U0B5F>..<U0B63>;<U0B71>;/
 % TAMIL/
    <U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>;/
    <U0B9A>;<U0B9C>;<U0B9E>;<U0B9F>;<U0BA3>;<U0BA4>;<U0BA8>..<U0BAA>;/
    <U0BAE>..<U0BB9>;/
 % TELUGU/
    <U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/
-   <U0C35>..<U0C39>;<U0C60>..<U0C61>;/
+   <U0C35>..<U0C39>;<U0C3D>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
 % KANNADA/
    <U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/
    <U0CB5>..<U0CB9>;<U0CDE>;<U0CE0>..<U0CE1>;/
 % MALAYALAM/
    <U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;/
-   <U0D60>..<U0D61>;/
+   <U0D3D>;<U0D60>..<U0D63>;/
 % SINHALA/
    <U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/
    <U0DC0>..<U0DC6>;/
@@ -263,9 +274,10 @@ alpha /
    <U0EAA>..<U0EAB>;<U0EAD>..<U0EB0>;<U0EB2>..<U0EB3>;<U0EBD>;/
    <U0EC0>..<U0EC4>;<U0EC6>;<U0EDC>..<U0EDD>;/
 % TIBETAN/
-   <U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6A>;<U0F88>..<U0F8B>;/
+   <U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6C>;<U0F88>..<U0F8B>;/
 % MYANMAR/
-   <U1000>..<U1021>;<U1023>..<U1027>;<U1029>;<U102A>;<U1050>..<U1055>;/
+   <U1000>..<U102A>;<U1050>..<U1055>;<U105A>..<U105D>;<U1061>;<U0165>;/
+   <U1066>;<U106E>..<U1070>;<U1075>..<U1081>;<U108E>;/
 % GEORGIAN/
    <U10A0>..<U10C5>;<U10D0>..<U10FA>;<U10FC>;/
 % HANGUL JAMO/
@@ -298,7 +310,7 @@ alpha /
 % KHMER/
    <U1780>..<U17B3>;<U17D7>;<U17DC>;/
 % MONGOLIAN/
-   <U1820>..<U1877>;<U1880>..<U18A8>;/
+   <U1820>..<U1877>;<U1880>..<U18A8>;<U18AA>;/
 % LIMBU/
    <U1900>..<U191C>;<U1946>..<U194F>;/
 % TAI LE/
@@ -309,10 +321,16 @@ alpha /
    <U1A00>..<U1A16>;/
 % BALINESE/
    <U1B05>..<U1B33>;<U1B45>..<U1B4B>;<U1B50>..<U1B59>;/
+% SUNDANESE/
+   <U1B83>..<U1BA0>;<U1BAE>..<U1BAF>;/
+% LEPCHA/
+   <U1C00>..<U1C23>;<U1C4D>..<U1C4F>;/
+% OL CHIKI/
+   <U1C5A>..<U1C7D>;/
 % PHONETIC EXTENSIONS/
    <U1D00>..<U1DBF>;/
 % LATIN EXTENDED ADDITIONAL/
-   <U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;/
+   <U1E00>..<U1E9F>;<U1EA0>..<U1EFF>;/
 % GREEK EXTENDED/
    <U1F00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/
    <U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/
@@ -326,13 +344,13 @@ alpha /
    <U2126>;<U2128>..<U212D>;<U212F>..<U2139>;/
    <U213C>..<U213F>;<U2145>..<U2149>;<U214E>;/
 % NUMBER FORMS/
-   <U2160>..<U2184>;/
+   <U2160>..<U2188>;/
 % ENCLOSED ALPHANUMERICS/
    <U249C>..<U24E9>;/
 % GLAGOLITIC/
    <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/
 % LATIN EXTENDED-C/
-   <U2C60>..<U2C6C>;<U2C74>..<U2C77>;/
+   <U2C60>..<U2C6F>;<U2C71>..<U2C7D>;/
 % COPTIC/
    <U2C80>..<U2CE4>;/
 % GEORGIAN SUPPLEMENT/
@@ -350,7 +368,7 @@ alpha /
 % KATAKANA/
    <U30A1>..<U30FA>;<U30FC>..<U30FF>;/
 % BOPOMOFO/
-   <U3105>..<U312C>;/
+   <U3105>..<U312D>;/
 % HANGUL COMPATIBILITY JAMO/
    <U3131>..<U318E>;/
 % BOPOMOFO EXTENDED/
@@ -363,12 +381,24 @@ alpha /
    <U4E00>..<U9FBB>;/
 % YI SYLLABLES/
    <UA000>..<UA48C>;/
+% VAI SYLLABLES/
+   <UA500>..<UA60B>;<UA610>..<UA61F>;<UA62A>..<UA62B>;/
+% CYRILLIC SUPPLEMENT 2/
+   <UA640>..<UA65F>;<UA662>..<UA66E>;<UA680>..<UA697>;/
 % LATIN EXTENDED-D/
-   <UA717>..<UA71A>;/
+   <UA717>..<UA71F>;<UA722>..<UA78C>;<UA7FB>..<UA7FF>;/
 % SYLOTI NEGRI/
    <UA800>;<UA801>;<UA803>..<UA805>;<UA807>..<UA80A>;<UA80C>..<UA822>;/
 % PHAGS PA/
    <UA840>..<UA873>;/
+% SAURASHTRA/
+   <UA882>..<UA8B3>;/
+% KAYAH LI/
+   <UA90A>..<UA92D>;/
+% REJANG/
+   <UA930>..<UA946>;/
+% CHAM/
+   <UAA00>..<UAA28>;<UAA40>..<UAA42>;<UAA44>..<UAA4B>;/
 % HANGUL SYLLABLES/
    <UAC00>..<UD7A3>;/
 % CJK COMPATIBILITY IDEOGRAPHS/
@@ -394,6 +424,10 @@ alpha /
    <U00010080>..<U000100FA>;/
 % ANCIENT GREEK NUMBERS/
    <U00010140>..<U00010174>;/
+% LYCIAN/
+   <U00010280>..<U0001029C>;/
+% CARIAN/
+   <U000102A0>..<U000102D0>;/
 % OLD ITALIC/
    <U00010300>..<U0001031E>;/
 % GOTHIC/
@@ -458,11 +492,11 @@ alpha /
 % TAMIL/
    <U0BE6>..<U0BEF>;/
 % TELUGU/
-   <U0C66>..<U0C6F>;/
+   <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
 % KANNADA/
    <U0CE6>..<U0CEF>;/
 % MALAYALAM/
-   <U0D66>..<U0D6F>;/
+   <U0D66>..<U0D75>;<U0D79>..<U0D7F>;/
 % THAI/
    <U0E50>..<U0E59>;/
 % LAO/
@@ -475,6 +509,20 @@ alpha /
    <U17E0>..<U17E9>;/
 % MONGOLIAN/
    <U1810>..<U1819>;/
+% SUNDANESE/
+   <U1BB0>..<U1BB9>;/
+% LEPCHA/
+   <U1C40>..<U1C49>;/
+% OL CHIKI/
+   <U1C50>..<U1C59>;/
+% VAI/
+   <UA620>..<UA629>;/
+% SAURASHTRA/
+   <UA8D0>..<UA8D9>;/
+% KAYAH LI/
+   <UA900>..<UA909>;/
+% CHAM/
+   <UAA50>..<UAA59>;/
 % HALFWIDTH AND FULLWIDTH FORMS/
    <UFF10>..<UFF19>
 
@@ -514,57 +562,67 @@ punct /
    <U02EF>..<U0344>;<U0346>..<U036F>;<U0374>..<U0375>;<U037E>;/
    <U0384>..<U0385>;<U0387>;<U03F6>;<U0482>..<U0486>;<U0488>..<U0489>;/
    <U055A>..<U055F>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05F3>..<U05F4>;/
-   <U0600>..<U0603>;<U060B>..<U0615>;<U061B>;<U061E>..<U061F>;/
+   <U0600>..<U0603>;<U060B>..<U061B>;<U061E>..<U061F>;/
    <U064B>..<U065E>;<U066A>..<U066D>;<U0670>;<U06D4>;<U06D6>..<U06E4>;/
    <U06E7>..<U06ED>;<U06FD>..<U06FE>;<U0700>..<U070D>;<U070F>;<U0711>;/
    <U0730>..<U074A>;<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U07F6>..<U07F9>;/
    <U0901>..<U0903>;<U093C>;<U093E>..<U094D>;<U0951>..<U0954>;/
-   <U0962>..<U0965>;<U0970>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
+   <U0962>..<U0965>;<U0972>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
    <U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/
    <U09F2>..<U09FA>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/
-   <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;/
+   <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;/
+   <U0A75>;<U0A81>..<U0A83>;/
    <U0ABC>;<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
-   <U0AE2>..<U0AE3>;<U0AF1>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;/
+   <U0AE2>..<U0AE3>;<U0AF1>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;/
    <U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B70>;<U0B82>;/
-   <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;/
+   <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;/
    <U0BF0>..<U0BFA>;<U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
    <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;/
    <U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;/
-   <U0CE2>..<U0CE3>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D3E>..<U0D43>;/
+   <U0CE2>..<U0CE3>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D3E>..<U0D44>;/
    <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D82>..<U0D83>;<U0DCA>;/
    <U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E2F>;/
    <U0E3F>;<U0E46>;<U0E4F>;<U0E5A>..<U0E5B>;<U0EB1>;<U0EB4>..<U0EB9>;/
    <U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F01>..<U0F1F>;<U0F2A>..<U0F3F>;/
    <U0F71>..<U0F87>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;/
-   <U0FCF>..<U0FD1>;<U102C>..<U1032>;<U1036>..<U1039>;<U104A>..<U104F>;/
-   <U1056>..<U1059>;<U10FB>;<U135F>..<U137C>;<U1390>..<U1399>;/
+   <U0FCE>..<U0FD4>;<U102B>..<U103F>;<U104A>..<U104F>;<U1056>..<U1059>;/
+   <U105E>..<U1060>;<U1062>..<U1064>;<U1067>..<U106D>;<U1071>..<U1074>;/
+   <U1082>..<U108D>;<U108F>..<U1099>;<U109E>;<U109F>;/
+   <U10FB>;<U135F>..<U137C>;<U1390>..<U1399>;/
    <U166D>..<U166E>;<U169B>..<U169C>;<U16EB>..<U16ED>;<U1712>..<U1714>;/
    <U1732>..<U1736>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B4>..<U17D6>;/
    <U17D8>..<U17DB>;<U17DD>;<U17F0>..<U17F9>;<U1800>..<U180D>;<U18A9>;/
    <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U1945>;/
    <U19B0>..<U19C0>;<U19C8>..<U19C9>;<U19DE>..<U19FF>;<U1A17>..<U1A1B>;/
    <U1A1E>..<U1A1F>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;<U1B5A>..<U1B7C>;/
-   <U1DC0>..<U1DCA>;<U1DFE>..<U1DFF>;<U1FBD>;<U1FBF>..<U1FC1>;/
+   <U1B80>..<U1B82>;<U1BA1>..<U1BAA>;<U1C24>..<U1C37>;<U1C3B>..<U1C3F>;/
+   <U1C7E>..<U1C7F>;/
+   <U1DC0>..<U1DE6>;<U1DFE>..<U1DFF>;<U1FBD>;<U1FBF>..<U1FC1>;/
    <U1FCD>..<U1FCF>;<U1FDD>..<U1FDF>;<U1FED>..<U1FEF>;<U1FFD>..<U1FFE>;/
-   <U2007>;<U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2063>;/
+   <U2007>;<U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2064>;/
    <U206A>..<U2070>;<U2074>..<U207E>;<U2080>..<U208E>;<U20A0>..<U20B5>;/
-   <U20D0>..<U20EF>;<U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;/
+   <U20D0>..<U20F0>;<U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;/
    <U2114>;<U2116>..<U2118>;<U211E>..<U2123>;<U2125>;<U2127>;<U212E>;/
    <U213A>..<U213B>;<U2140>..<U2144>;<U214A>..<U214D>;<U2153>..<U215F>;/
    <U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U249B>;/
-   <U24EA>..<U269C>;<U26A0>..<U26B2>;<U2701>..<U2704>;<U2706>..<U2709>;/
+   <U24EA>..<U269D>;<U26A0>..<U26C3>;<U2701>..<U2704>;<U2706>..<U2709>;/
    <U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/
    <U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/
-   <U27C0>..<U27CA>;<U27D0>..<U27EB>;<U27F0>..<U2B1A>;<U2B20>..<U2B23>;/
-   <U2CE5>..<U2CEA>;<U2CF9>..<U2CFF>;<U2E00>..<U2E17>;<U2E1C>..<U2E1D>;/
+   <U27C0>..<U27CA>;<U27CC>;<U27D0>..<U27EF>;<U27F0>..<U2B4C>;/
+   <U2B50>..<U2B54>;<U2DE0>..<U2DFF>;/
+   <U2CE5>..<U2CEA>;<U2CF9>..<U2CFF>;<U2E00>..<U2E30>;/
    <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;/
    <U3001>..<U3004>;<U3008>..<U3020>;<U302A>..<U3030>;<U3036>..<U3037>;/
    <U303D>..<U303F>;<U3099>..<U309C>;<U30A0>;<U30FB>;<U3190>..<U319F>;/
    <U31C0>..<U31CF>;<U3200>..<U321E>;<U3220>..<U3243>;<U3250>..<U32FE>;/
-   <U3300>..<U33FF>;<U4DC0>..<U4DFF>;<UA490>..<UA4C6>;<UA700>..<UA716>;/
+   <U3300>..<U33FF>;<U4DC0>..<U4DFF>;<UA490>..<UA4C6>;<UA60C>..<UA60F>;/
+   <UA66F>..<UA673>;<UA67C>..<UA67F>;<UA700>..<UA716>;/
    <UA720>..<UA721>;<UA802>;<UA806>;<UA80B>;<UA823>..<UA82B>;/
-   <UA874>..<UA877>;<UE000>..<UF8FF>;<UFB1E>;<UFB29>;<UFD3E>..<UFD3F>;/
-   <UFDFC>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE23>;<UFE30>..<UFE52>;/
+   <UA874>..<UA877>;<UA880>;<UA881>;<UA8B4>..<UA8C4>;<UA8CE>..<UA8CF>;/
+   <UA92E>..<UA92F>;<UA947>..<UA953>;<UA95F>;<UAA29>..<UAA36>;<UAA43>;/
+   <UAA4C>..<UAA4D>;<UAA5C>..<UAA5F>;/
+   <UE000>..<UF8FF>;<UFB1E>;<UFB29>;<UFD3E>..<UFD3F>;/
+   <UFDFC>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE26>;<UFE30>..<UFE52>;/
    <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;<UFF01>..<UFF0F>;/
    <UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;<UFFE0>..<UFFE6>;/
    <UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;<U00010100>..<U00010102>;/
@@ -575,7 +633,7 @@ punct /
    <U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;/
    <U00010A3F>..<U00010A47>;<U00010A50>..<U00010A58>;/
    <U00012470>..<U00012473>;<U0001D000>..<U0001D0F5>;/
-   <U0001D100>..<U0001D126>;<U0001D12A>..<U0001D1DD>;/
+   <U0001D100>..<U0001D126>;<U0001D129>..<U0001D1DD>;/
    <U0001D200>..<U0001D245>;<U0001D300>..<U0001D356>;/
    <U0001D360>..<U0001D371>;<U0001D6C1>;<U0001D6DB>;<U0001D6FB>;<U0001D715>;/
    <U0001D735>;<U0001D74F>;<U0001D76F>;<U0001D789>;<U0001D7A9>;<U0001D7C3>;/
@@ -583,52 +641,55 @@ punct /
    <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
 
 graph /
-   <U0021>..<U007E>;<U00A0>..<U036F>;<U0374>..<U0375>;<U037A>..<U037E>;/
-   <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/
-   <U03D0>..<U0486>;<U0488>..<U0513>;<U0531>..<U0556>;<U0559>..<U055F>;/
+   <U0021>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037E>;/
+   <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U0486>;/
+   <U0488>..<U0523>;<U0531>..<U0556>;<U0559>..<U055F>;/
    <U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/
-   <U05F0>..<U05F4>;<U0600>..<U0603>;<U060B>..<U0615>;<U061B>;/
-   <U061E>..<U061F>;<U0621>..<U063A>;<U0640>..<U065E>;<U0660>..<U070D>;/
-   <U070F>..<U074A>;<U074D>..<U076D>;<U0780>..<U07B1>;<U07C0>..<U07FA>;/
-   <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;/
+   <U05F0>..<U05F4>;<U0600>..<U0603>;<U0606>..<U061B>;/
+   <U061E>..<U061F>;<U0621>..<U065E>;<U0660>..<U070D>;/
+   <U070F>..<U074A>;<U074D>..<U07B1>;<U07C0>..<U07FA>;/
+   <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0972>;/
    <U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
    <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
    <U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/
    <U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/
    <U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/
    <U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/
-   <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/
-   <U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
+   <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/
+   <U0A59>..<U0A5C>;/
+   <U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
    <U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/
    <U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
    <U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/
    <U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
-   <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>..<U0B48>;/
-   <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/
+   <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;<U0B47>..<U0B48>;/
+   <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B63>;/
    <U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/
    <U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/
    <U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;<U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;/
-   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0BE6>..<U0BFA>;/
+   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0BE6>..<U0BFA>;/
    <U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/
-   <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
-   <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;/
+   <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/
+   <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
+   <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
    <U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/
    <U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/
    <U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/
    <U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/
-   <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3E>..<U0D43>;/
-   <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D61>;/
-   <U0D66>..<U0D6F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;/
+   <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/
+   <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D63>;/
+   <U0D66>..<U0D75>;<U0D79>..<U0D7F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;/
+   <U0D9A>..<U0DB1>;/
    <U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/
    <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/
    <U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/
    <U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/
    <U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/
    <U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/
-   <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6A>;<U0F71>..<U0F8B>;/
-   <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCF>..<U0FD1>;/
-   <U1000>..<U1021>;<U1023>..<U1027>;<U1029>..<U102A>;<U102C>..<U1032>;/
-   <U1036>..<U1039>;<U1040>..<U1059>;<U10A0>..<U10C5>;<U10D0>..<U10FC>;/
+   <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6C>;<U0F71>..<U0F8B>;/
+   <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCE>..<U0FD4>;/
+   <U1000>..<U102A>;<U102B>..<U103F>;<U1040>..<U1099>;<U109E>;<U109F>;/
+   <U10A0>..<U10C5>;<U10D0>..<U10FC>;/
    <U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/
    <U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/
    <U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/
@@ -638,37 +699,43 @@ graph /
    <U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/
    <U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/
    <U1780>..<U17DD>;<U17E0>..<U17E9>;<U17F0>..<U17F9>;<U1800>..<U180D>;/
-   <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18A9>;<U1900>..<U191C>;/
+   <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18AA>;<U1900>..<U191C>;/
    <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;/
    <U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/
    <U19DE>..<U1A1B>;<U1A1E>..<U1A1F>;<U1B00>..<U1B4B>;<U1B50>..<U1B7C>;/
-   <U1D00>..<U1DCA>;<U1DFE>..<U1E9B>;<U1EA0>..<U1EF9>;<U1F00>..<U1F15>;/
+   <U1B80>..<U1BAA>;<U1BAE>..<U1BB9>;<U1C00>..<U1C37>;<U1C3B>..<U1C49>;/
+   <U1C4D>..<U1C7F>;/
+   <U1D00>..<U1DE6>;<U1DFE>..<U1E9F>;<U1EA0>..<U1EFF>;<U1F00>..<U1F15>;/
    <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
    <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
    <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
    <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;<U200B>..<U2027>;/
-   <U202A>..<U205E>;<U2060>..<U2063>;<U206A>..<U2071>;<U2074>..<U208E>;/
-   <U2090>..<U2094>;<U20A0>..<U20B5>;<U20D0>..<U20EF>;<U2100>..<U214E>;/
-   <U2153>..<U2184>;<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;/
-   <U2460>..<U269C>;<U26A0>..<U26B2>;<U2701>..<U2704>;<U2706>..<U2709>;/
+   <U202A>..<U205E>;<U2060>..<U2064>;<U206A>..<U2071>;<U2074>..<U208E>;/
+   <U2090>..<U2094>;<U20A0>..<U20B5>;<U20D0>..<U20F0>;<U2100>..<U214F>;/
+   <U2153>..<U2188>;<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;/
+   <U2460>..<U269D>;<U26A0>..<U26C3>;<U2701>..<U2704>;<U2706>..<U2709>;/
    <U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/
    <U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/
-   <U27C0>..<U27CA>;<U27D0>..<U27EB>;<U27F0>..<U2B1A>;<U2B20>..<U2B23>;/
-   <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;<U2C60>..<U2C6C>;<U2C74>..<U2C77>;/
+   <U27C0>..<U27CA>;<U27CC>;<U27D0>..<U27EF>;<U27F0>..<U2B4C>;/
+   <U2B50>..<U2B54>;/
+   <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;<U2C60>..<U2C6F>;<U2C71>..<U2C7D>;/
    <U2C80>..<U2CEA>;<U2CF9>..<U2D25>;<U2D30>..<U2D65>;<U2D6F>;/
    <U2D80>..<U2D96>;<U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;/
    <U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;<U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;/
-   <U2DD8>..<U2DDE>;<U2E00>..<U2E17>;<U2E1C>..<U2E1D>;<U2E80>..<U2E99>;/
+   <U2DD8>..<U2DDE>;<U2DE0>..<U2E30>;<U2E80>..<U2E99>;/
    <U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;<U3001>..<U303F>;/
-   <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312C>;<U3131>..<U318E>;/
+   <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312D>;<U3131>..<U318E>;/
    <U3190>..<U31B7>;<U31C0>..<U31CF>;<U31F0>..<U321E>;<U3220>..<U3243>;/
    <U3250>..<U32FE>;<U3300>..<U4DB5>;<U4DC0>..<U9FBB>;<UA000>..<UA48C>;/
-   <UA490>..<UA4C6>;<UA700>..<UA71A>;<UA720>..<UA721>;<UA800>..<UA82B>;/
-   <UA840>..<UA877>;<UAC00>..<UD7A3>;<UE000>..<UFA2D>;<UFA30>..<UFA6A>;/
+   <UA490>..<UA4C6>;<UA500>..<UA62B>;<UA640>..<UA65F>;<UA662>..<UA673>;/
+   <UA67C>..<UA697>;<UA700>..<UA78C>;<UA7FB>..<UA7FF>;<UA800>..<UA82B>;/
+   <UA840>..<UA877>;<UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UA900>..<UA953>;/
+   <UA95F>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/
+   <UAA5C>..<UAA5F>;<UAC00>..<UD7A3>;<UE000>..<UFA2D>;<UFA30>..<UFA6A>;/
    <UFA70>..<UFAD9>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFB1D>..<UFB36>;/
    <UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;<UFB43>..<UFB44>;/
    <UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;/
-   <UFDF0>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE23>;<UFE30>..<UFE52>;/
+   <UFDF0>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE26>;<UFE30>..<UFE52>;/
    <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;/
    <UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/
    <UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
@@ -677,6 +744,8 @@ graph /
    <U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
    <U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
    <U00010107>..<U00010133>;<U00010137>..<U0001018A>;/
+   <U00010190>..<U0001019B>;<U000101D0>..<U000101FD>;/
+   <U00010280>..<U0001029C>;<U000102A0>..<U000102D0>;/
    <U00010300>..<U0001031E>;<U00010320>..<U00010323>;/
    <U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/
    <U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/
@@ -690,7 +759,7 @@ graph /
    <U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/
    <U00012400>..<U00012462>;<U00012470>..<U00012473>;/
    <U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
-   <U0001D12A>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
+   <U0001D129>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
    <U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/
    <U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/
    <U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/
@@ -701,57 +770,61 @@ graph /
    <U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/
    <U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/
    <U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/
+   <U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/
    <U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/
    <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
    <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
 
 print /
-   <U0020>..<U007E>;<U00A0>..<U036F>;<U0374>..<U0375>;<U037A>..<U037E>;/
-   <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/
-   <U03D0>..<U0486>;<U0488>..<U0513>;<U0531>..<U0556>;<U0559>..<U055F>;/
+   <U0020>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037E>;/
+   <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U0486>;/
+   <U0488>..<U0523>;<U0531>..<U0556>;<U0559>..<U055F>;/
    <U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/
-   <U05F0>..<U05F4>;<U0600>..<U0603>;<U060B>..<U0615>;<U061B>;/
-   <U061E>..<U061F>;<U0621>..<U063A>;<U0640>..<U065E>;<U0660>..<U070D>;/
-   <U070F>..<U074A>;<U074D>..<U076D>;<U0780>..<U07B1>;<U07C0>..<U07FA>;/
-   <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;/
+   <U05F0>..<U05F4>;<U0600>..<U0603>;<U0606>..<U061B>;/
+   <U061E>..<U061F>;<U0621>..<U065E>;<U0660>..<U070D>;/
+   <U070F>..<U074A>;<U074D>..<U07B1>;<U07C0>..<U07FA>;/
+   <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0972>;/
    <U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
    <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
    <U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/
    <U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/
    <U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/
    <U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/
-   <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/
-   <U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
+   <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/
+   <U0A59>..<U0A5C>;/
+   <U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
    <U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/
    <U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
    <U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/
    <U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
-   <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>..<U0B48>;/
-   <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/
+   <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;<U0B47>..<U0B48>;/
+   <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B63>;/
    <U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/
    <U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/
    <U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;<U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;/
-   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0BE6>..<U0BFA>;/
+   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0BE6>..<U0BFA>;/
    <U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/
-   <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
-   <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;/
+   <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/
+   <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
+   <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
    <U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/
    <U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/
    <U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/
    <U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/
-   <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3E>..<U0D43>;/
-   <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D61>;/
-   <U0D66>..<U0D6F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;/
+   <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/
+   <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D63>;/
+   <U0D66>..<U0D75>;<U0D79>..<U0D7F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;/
+   <U0D9A>..<U0DB1>;/
    <U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/
    <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/
    <U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/
    <U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/
    <U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/
    <U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/
-   <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6A>;<U0F71>..<U0F8B>;/
-   <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCF>..<U0FD1>;/
-   <U1000>..<U1021>;<U1023>..<U1027>;<U1029>..<U102A>;<U102C>..<U1032>;/
-   <U1036>..<U1039>;<U1040>..<U1059>;<U10A0>..<U10C5>;<U10D0>..<U10FC>;/
+   <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6C>;<U0F71>..<U0F8B>;/
+   <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCE>..<U0FD4>;/
+   <U1000>..<U102A>;<U102B>..<U103F>;<U1040>..<U1099>;<U109E>;<U109F>;/
+   <U10A0>..<U10C5>;<U10D0>..<U10FC>;/
    <U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/
    <U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/
    <U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/
@@ -761,37 +834,45 @@ print /
    <U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/
    <U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/
    <U1780>..<U17DD>;<U17E0>..<U17E9>;<U17F0>..<U17F9>;<U1800>..<U180E>;/
-   <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18A9>;<U1900>..<U191C>;/
+   <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18AA>;<U1900>..<U191C>;/
    <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;/
    <U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/
    <U19DE>..<U1A1B>;<U1A1E>..<U1A1F>;<U1B00>..<U1B4B>;<U1B50>..<U1B7C>;/
-   <U1D00>..<U1DCA>;<U1DFE>..<U1E9B>;<U1EA0>..<U1EF9>;<U1F00>..<U1F15>;/
+   <U1B80>..<U1BAA>;<U1BAE>..<U1BB9>;<U1C00>..<U1C37>;<U1C3B>..<U1C49>;/
+   <U1C4D>..<U1C7F>;/
+   <U1D00>..<U1DE6>;<U1DFE>..<U1E9F>;<U1EA0>..<U1EFF>;<U1F00>..<U1F15>;/
    <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
    <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
    <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
-   <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2063>;/
+   <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2064>;/
    <U206A>..<U2071>;<U2074>..<U208E>;<U2090>..<U2094>;<U20A0>..<U20B5>;/
-   <U20D0>..<U20EF>;<U2100>..<U214E>;<U2153>..<U2184>;<U2190>..<U23E7>;/
-   <U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U269C>;<U26A0>..<U26B2>;/
+   <U20D0>..<U20F0>;<U2100>..<U214F>;<U2153>..<U2188>;<U2190>..<U23E7>;/
+   <U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U269D>;<U26A0>..<U26C3>;/
    <U2701>..<U2704>;<U2706>..<U2709>;<U270C>..<U2727>;<U2729>..<U274B>;/
    <U274D>;<U274F>..<U2752>;<U2756>;<U2758>..<U275E>;<U2761>..<U2794>;/
-   <U2798>..<U27AF>;<U27B1>..<U27BE>;<U27C0>..<U27CA>;<U27D0>..<U27EB>;/
-   <U27F0>..<U2B1A>;<U2B20>..<U2B23>;<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/
-   <U2C60>..<U2C6C>;<U2C74>..<U2C77>;<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;/
+   <U2798>..<U27AF>;<U27B1>..<U27BE>;<U27C0>..<U27CA>;<U27CC>;/
+   <U27D0>..<U27EF>;/
+   <U27F0>..<U2B4C>;<U2B50>..<U2B54>;<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/
+   <U2C60>..<U2C6F>;<U2C71>..<U2C7D>;<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;/
    <U2D30>..<U2D65>;<U2D6F>;<U2D80>..<U2D96>;<U2DA0>..<U2DA6>;/
    <U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/
-   <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2E00>..<U2E17>;/
-   <U2E1C>..<U2E1D>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/
+   <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E30>;/
+   <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/
    <U2FF0>..<U2FFB>;<U3000>..<U303F>;<U3041>..<U3096>;<U3099>..<U30FF>;/
-   <U3105>..<U312C>;<U3131>..<U318E>;<U3190>..<U31B7>;<U31C0>..<U31CF>;/
+   <U3105>..<U312D>;<U3131>..<U318E>;<U3190>..<U31B7>;<U31C0>..<U31CF>;/
    <U31F0>..<U321E>;<U3220>..<U3243>;<U3250>..<U32FE>;<U3300>..<U4DB5>;/
-   <U4DC0>..<U9FBB>;<UA000>..<UA48C>;<UA490>..<UA4C6>;<UA700>..<UA71A>;/
-   <UA720>..<UA721>;<UA800>..<UA82B>;<UA840>..<UA877>;<UAC00>..<UD7A3>;/
+   <U4DC0>..<U9FBB>;<UA000>..<UA48C>;<UA490>..<UA4C6>;<UA500>..<UA62B>;/
+   <UA640>..<UA65F>;<UA662>..<UA673>;<UA67C>..<UA697>;<UA700>..<UA78C>;/
+   <UA7FB>..<UA7FF>;<UA800>..<UA82B>;<UA840>..<UA877>;/
+   <UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UAC00>..<UD7A3>;/
+   <UA840>..<UA877>;<UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UA900>..<UA953>;/
+   <UA95F>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/
+   <UAA5C>..<UAA5F>;/
    <UE000>..<UFA2D>;<UFA30>..<UFA6A>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;/
    <UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/
    <UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;/
    <UFD50>..<UFD8F>;<UFD92>..<UFDC7>;<UFDF0>..<UFDFD>;<UFE00>..<UFE19>;/
-   <UFE20>..<UFE23>;<UFE30>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;/
+   <UFE20>..<UFE26>;<UFE30>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;/
    <UFE70>..<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;<UFF01>..<UFFBE>;/
    <UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;/
    <UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
@@ -800,6 +881,8 @@ print /
    <U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
    <U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
    <U00010107>..<U00010133>;<U00010137>..<U0001018A>;/
+   <U00010190>..<U0001019B>;<U000101D0>..<U000101FD>;/
+   <U00010280>..<U0001029C>;<U000102A0>..<U000102D0>;/
    <U00010300>..<U0001031E>;<U00010320>..<U00010323>;/
    <U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/
    <U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/
@@ -813,7 +896,7 @@ print /
    <U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/
    <U00012400>..<U00012462>;<U00012470>..<U00012473>;/
    <U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
-   <U0001D12A>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
+   <U0001D129>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
    <U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/
    <U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/
    <U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/
@@ -824,6 +907,7 @@ print /
    <U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/
    <U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/
    <U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/
+   <U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/
    <U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/
    <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
    <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
@@ -844,7 +928,8 @@ toupper /
    (<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>);(<U00B5>,<U039C>);(<U00E0>,<U00C0>);/
+   (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);(<U00DF>,<U1E9E>);/
+   (<U00E0>,<U00C0>);/
    (<U00E1>,<U00C1>);(<U00E2>,<U00C2>);(<U00E3>,<U00C3>);(<U00E4>,<U00C4>);/
    (<U00E5>,<U00C5>);(<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);/
    (<U00E9>,<U00C9>);(<U00EA>,<U00CA>);(<U00EB>,<U00CB>);(<U00EC>,<U00CC>);/
@@ -889,13 +974,16 @@ toupper /
    (<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/
    (<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U0242>,<U0241>);/
    (<U0247>,<U0246>);(<U0249>,<U0248>);(<U024B>,<U024A>);(<U024D>,<U024C>);/
-   (<U024F>,<U024E>);(<U0253>,<U0181>);(<U0254>,<U0186>);(<U0256>,<U0189>);/
+   (<U024F>,<U024E>);(<U0250>,<U2C6F>);(<U0251>,<U2C6D>);(<U0253>,<U0181>);/
+   (<U0254>,<U0186>);(<U0256>,<U0189>);/
    (<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);(<U0260>,<U0193>);/
    (<U0263>,<U0194>);(<U0268>,<U0197>);(<U0269>,<U0196>);(<U026B>,<U2C62>);/
-   (<U026F>,<U019C>);(<U0272>,<U019D>);(<U0275>,<U019F>);(<U027D>,<U2C64>);/
+   (<U026F>,<U019C>);(<U0271>,<U2C6E>);(<U0272>,<U019D>);(<U0275>,<U019F>);/
+   (<U027D>,<U2C64>);/
    (<U0280>,<U01A6>);(<U0283>,<U01A9>);(<U0288>,<U01AE>);(<U0289>,<U0244>);/
    (<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U028C>,<U0245>);(<U0292>,<U01B7>);/
-   (<U0345>,<U0399>);(<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);/
+   (<U0345>,<U0399>);(<U0371>,<U0370>);(<U0373>,<U0372>);(<U0377>,<U0376>);/
+   (<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);/
    (<U03AC>,<U0386>);(<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);/
    (<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);/
    (<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);/
@@ -943,7 +1031,9 @@ toupper /
    (<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/
    (<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/
    (<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);/
-   (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
+   (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);/
+   (<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);/
+   (<U0521>,<U0520>);(<U0523>,<U0522>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
    (<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/
    (<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/
    (<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/
@@ -983,7 +1073,8 @@ toupper /
    (<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);/
    (<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);/
    (<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);/
-   (<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);/
+   (<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);/
+   (<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);/
    (<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);/
    (<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);/
    (<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);/
@@ -1032,6 +1123,7 @@ toupper /
    (<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);/
    (<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);/
    (<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);/
+   (<U2C73>,<U2C72>);/
    (<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);/
    (<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);/
    (<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);/
@@ -1139,7 +1231,8 @@ tolower /
    (<U0232>,<U0233>);(<U023A>,<U2C65>);(<U023B>,<U023C>);(<U023D>,<U019A>);/
    (<U023E>,<U2C66>);(<U0241>,<U0242>);(<U0243>,<U0180>);(<U0244>,<U0289>);/
    (<U0245>,<U028C>);(<U0246>,<U0247>);(<U0248>,<U0249>);(<U024A>,<U024B>);/
-   (<U024C>,<U024D>);(<U024E>,<U024F>);(<U0386>,<U03AC>);(<U0388>,<U03AD>);/
+   (<U024C>,<U024D>);(<U024E>,<U024F>);(<U0370>,<U0371>);(<U0372>,<U0373>);/
+   (<U0376>,<U0377>);(<U0386>,<U03AC>);(<U0388>,<U03AD>);/
    (<U0389>,<U03AE>);(<U038A>,<U03AF>);(<U038C>,<U03CC>);(<U038E>,<U03CD>);/
    (<U038F>,<U03CE>);(<U0391>,<U03B1>);(<U0392>,<U03B2>);(<U0393>,<U03B3>);/
    (<U0394>,<U03B4>);(<U0395>,<U03B5>);(<U0396>,<U03B6>);(<U0397>,<U03B7>);/
@@ -1186,6 +1279,8 @@ tolower /
    (<U04FC>,<U04FD>);(<U04FE>,<U04FF>);(<U0500>,<U0501>);(<U0502>,<U0503>);/
    (<U0504>,<U0505>);(<U0506>,<U0507>);(<U0508>,<U0509>);(<U050A>,<U050B>);/
    (<U050C>,<U050D>);(<U050E>,<U050F>);(<U0510>,<U0511>);(<U0512>,<U0513>);/
+   (<U0514>,<U0515>);(<U0516>,<U0517>);(<U0518>,<U0519>);(<U051A>,<U051B>);/
+   (<U051C>,<U051D>);(<U051E>,<U051F>);(<U0520>,<U0521>);(<U0522>,<U0523>);/
    (<U0531>,<U0561>);(<U0532>,<U0562>);(<U0533>,<U0563>);(<U0534>,<U0564>);/
    (<U0535>,<U0565>);(<U0536>,<U0566>);(<U0537>,<U0567>);(<U0538>,<U0568>);/
    (<U0539>,<U0569>);(<U053A>,<U056A>);(<U053B>,<U056B>);(<U053C>,<U056C>);/
@@ -1223,7 +1318,8 @@ tolower /
    (<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);/
    (<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);(<U1E86>,<U1E87>);/
    (<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);(<U1E8E>,<U1E8F>);/
-   (<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);(<U1EA0>,<U1EA1>);/
+   (<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);(<U1E9E>,<U00DF>);/
+   (<U1EA0>,<U1EA1>);/
    (<U1EA2>,<U1EA3>);(<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);/
    (<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);/
    (<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);/
@@ -1235,6 +1331,7 @@ tolower /
    (<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);/
    (<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);/
    (<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);/
+   (<U1EFA>,<U1EFB>);(<U1EFC>,<U1EFD>);(<U1EFE>,<U1EFF>);/
    (<U1F08>,<U1F00>);(<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);/
    (<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);/
    (<U1F18>,<U1F10>);(<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);/
@@ -1284,7 +1381,8 @@ tolower /
    (<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);(<U2C2B>,<U2C5B>);(<U2C2C>,<U2C5C>);/
    (<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);(<U2C60>,<U2C61>);(<U2C62>,<U026B>);/
    (<U2C63>,<U1D7D>);(<U2C64>,<U027D>);(<U2C67>,<U2C68>);(<U2C69>,<U2C6A>);/
-   (<U2C6B>,<U2C6C>);(<U2C75>,<U2C76>);(<U2C80>,<U2C81>);(<U2C82>,<U2C83>);/
+   (<U2C6B>,<U2C6C>);(<U2C6D>,<U0251>);(<U2C6E>,<U0271>);(<U2C6F>,<U0250>);/
+   (<U2C72>,<U2C73>);(<U2C75>,<U2C76>);(<U2C80>,<U2C81>);(<U2C82>,<U2C83>);/
    (<U2C84>,<U2C85>);(<U2C86>,<U2C87>);(<U2C88>,<U2C89>);(<U2C8A>,<U2C8B>);/
    (<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);(<U2C90>,<U2C91>);(<U2C92>,<U2C93>);/
    (<U2C94>,<U2C95>);(<U2C96>,<U2C97>);(<U2C98>,<U2C99>);(<U2C9A>,<U2C9B>);/
@@ -1431,7 +1529,9 @@ map "totitle"; /
    (<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/
    (<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/
    (<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);/
-   (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
+   (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);/
+   (<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);/
+   (<U0521>,<U0520>);(<U0523>,<U0522>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
    (<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/
    (<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/
    (<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/
@@ -1574,35 +1674,40 @@ map "totitle"; /
 % That is, all combining characters (level 2+3).
 class "combining"; /
    <U0300>..<U036F>;<U0483>..<U0486>;<U0488>..<U0489>;<U0591>..<U05BD>;/
-   <U05BF>;<U05C1>..<U05C2>;<U05C4>..<U05C5>;<U05C7>;<U0610>..<U0615>;/
+   <U05BF>;<U05C1>..<U05C2>;<U05C4>..<U05C5>;<U05C7>;<U0610>..<U061A>;/
    <U064B>..<U065E>;<U0670>;<U06D6>..<U06DC>;<U06DE>..<U06E4>;/
    <U06E7>..<U06E8>;<U06EA>..<U06ED>;<U0711>;<U0730>..<U074A>;/
    <U07A6>..<U07B0>;<U07EB>..<U07F3>;<U0901>..<U0903>;<U093C>;/
    <U093E>..<U094D>;<U0951>..<U0954>;<U0962>..<U0963>;<U0981>..<U0983>;/
    <U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;/
    <U09E2>..<U09E3>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/
-   <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;/
+   <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;/
+   <U0A75>;<U0A81>..<U0A83>;/
    <U0ABC>;<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
-   <U0AE2>..<U0AE3>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;/
+   <U0AE2>..<U0AE3>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;/
    <U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B82>;/
-   <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;/
+   <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;/
    <U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;/
-   <U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;<U0CBE>..<U0CC4>;/
+   <U0C55>..<U0C56>;<U0C62>..<U0C63>;<U0C82>..<U0C83>;<U0CBC>;/
+   <U0CBE>..<U0CC4>;/
    <U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CE2>..<U0CE3>;/
-   <U0D02>..<U0D03>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
-   <U0D57>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;/
-   <U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/
+   <U0D02>..<U0D03>;<U0D3E>..<U0D44>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
+   <U0D57>;<U0D62>..<U0D63>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;/
+   <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/
    <U0E47>..<U0E4E>;<U0EB1>;<U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;/
    <U0EC8>..<U0ECD>;<U0F18>..<U0F19>;<U0F35>;<U0F37>;<U0F39>;/
    <U0F3E>..<U0F3F>;<U0F71>..<U0F84>;<U0F86>..<U0F87>;<U0F90>..<U0F97>;/
-   <U0F99>..<U0FBC>;<U0FC6>;<U102C>..<U1032>;<U1036>..<U1039>;/
-   <U1056>..<U1059>;<U135F>;<U1712>..<U1714>;<U1732>..<U1734>;/
+   <U0F99>..<U0FBC>;<U0FC6>;<U102B>..<U103F>;/
+   <U1056>..<U1059>;<U105E>..<U1060>;<U1062>..<U1064>;<U1067>..<U106D>;/
+   <U1071>..<U1074>;<U1082>..<U108D>;<U108F>;/
+   <U135F>;<U1712>..<U1714>;<U1732>..<U1734>;/
    <U1752>..<U1753>;<U1772>..<U1773>;<U17B6>..<U17D3>;<U17DD>;/
    <U180B>..<U180D>;<U18A9>;<U1920>..<U192B>;<U1930>..<U193B>;/
    <U19B0>..<U19C0>;<U19C8>..<U19C9>;<U1A17>..<U1A1B>;<U1B00>..<U1B04>;/
-   <U1B34>..<U1B44>;<U1B6B>..<U1B73>;<U1DC0>..<U1DCA>;<U1DFE>..<U1DFF>;/
-   <U20D0>..<U20EF>;<U302A>..<U302F>;<U3099>..<U309A>;<UA802>;<UA806>;/
-   <UA80B>;<UA823>..<UA827>;<UFB1E>;<UFE00>..<UFE0F>;<UFE20>..<UFE23>;/
+   <U1B34>..<U1B44>;<U1B6B>..<U1B73>;<U1DC0>..<U1DE6>;<U1DFE>..<U1DFF>;/
+   <U20D0>..<U20F0>;<U2DE0>..<U2DFF>;<U302A>..<U302F>;<U3099>..<U309A>;/
+   <UA66F>..<UA672>;<UA67C>;<UA67D>;<UA802>;<UA806>;/
+   <UA80B>;<UA823>..<UA827>;<UFB1E>;<UFE00>..<UFE0F>;<UFE20>..<UFE26>;/
    <U00010A01>..<U00010A03>;<U00010A05>..<U00010A06>;/
    <U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;<U00010A3F>;/
    <U0001D165>..<U0001D169>;<U0001D16D>..<U0001D172>;/
@@ -1619,20 +1724,25 @@ class "combining_level3"; /
    <U0962>..<U0963>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
    <U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/
    <U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;/
-   <U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;<U0ABC>;/
+   <U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;<U0375>;<U0A81>..<U0A83>;/
+   <U0ABC>;/
    <U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0AE2>..<U0AE3>;/
-   <U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;<U0B47>..<U0B48>;/
+   <U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;<U0B47>..<U0B48>;/
    <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B82>;<U0BBE>..<U0BC2>;/
-   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0C01>..<U0C03>;/
+   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0C01>..<U0C03>;/
    <U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;/
+   <U0C62>..<U0C63>;/
    <U0C82>..<U0C83>;<U0CBC>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;/
    <U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CE2>..<U0CE3>;<U0D02>..<U0D03>;/
-   <U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/
+   <U0D3E>..<U0D44>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/
+   <U0D62>..<U0D63>;/
    <U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;/
    <U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;<U0E47>..<U0E4E>;<U0EB1>;/
    <U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F3E>..<U0F3F>;/
    <U0F71>..<U0F81>;<U0F84>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;/
-   <U102C>..<U1032>;<U1036>..<U1039>;<U1056>..<U1059>;<U1712>..<U1714>;/
+   <U102B>..<U103F>;<U1056>..<U1059>;<U105E>..<U1060>;<U1062>..<U1064>;/
+   <U1067>..<U106D>;/
+   <U1071>..<U1074>;<U1082>..<U108D>;<U108F>;<U1712>..<U1714>;/
    <U1732>..<U1734>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B6>..<U17D3>;/
    <U180B>..<U180D>;<U1920>..<U192B>;<U1930>..<U1938>;<U19B0>..<U19C0>;/
    <U19C8>..<U19C9>;<U1A19>..<U1A1B>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;/
index ab36f0e..ca3a814 100644 (file)
@@ -62,6 +62,7 @@ script <ARMENIAN>
 script <GEORGIAN>
 script <DEVANAGARI>
 script <GUJARATI>
+script <TELUGU>
 
 # Déclaration des symboles internes / Declaration of internal symbols
 #
@@ -652,6 +653,95 @@ collating-symbol <gvd-chandrabindu>
 collating-symbol <gvd-visarg>
 collating-symbol <g-halant>
 
+# <TELUGU>
+#
+# tvd - denotes Telugu vowel modifier
+# tm  -  denotes Telugu matras
+# tvw - denotes Telugu vowels
+
+# defining symbols
+collating-symbol <tummu>
+collating-symbol <tvw-a>
+collating-symbol <tvw-aa>
+collating-symbol <tvw-i>
+collating-symbol <tvw-ii>
+collating-symbol <tvw-u>
+collating-symbol <tvw-uu>
+collating-symbol <tvw-vocalicr>
+collating-symbol <tvw-vocalicrr>
+collating-symbol <tvw-vocalicl>
+collating-symbol <tvw-vocalicll>
+collating-symbol <tvw-candrae>
+collating-symbol <tvw-shorte>
+collating-symbol <tvw-e>
+collating-symbol <tvw-ai>
+collating-symbol <tvw-shorto>
+collating-symbol <tvw-o>
+collating-symbol <tvw-au>
+collating-symbol <t-ka>
+collating-symbol <t-kha>
+collating-symbol <t-ga>
+collating-symbol <t-gga>
+collating-symbol <t-gha>
+collating-symbol <t-nga>
+collating-symbol <t-ca>
+collating-symbol <t-tsa>
+collating-symbol <t-cha>
+collating-symbol <t-ja>
+collating-symbol <t-dza>
+collating-symbol <t-jja>
+collating-symbol <t-jha>
+collating-symbol <t-nya>
+collating-symbol <t-tta>
+collating-symbol <t-ttha>
+collating-symbol <t-dda>
+collating-symbol <t-ddda>
+collating-symbol <t-ddha>
+collating-symbol <t-nna>
+collating-symbol <t-ta>
+collating-symbol <t-tha>
+collating-symbol <t-da>
+collating-symbol <t-dha>
+collating-symbol <t-na>
+collating-symbol <t-pa>
+collating-symbol <t-pha>
+collating-symbol <t-ba>
+collating-symbol <t-bba>
+collating-symbol <t-bha>
+collating-symbol <t-ma>
+collating-symbol <t-ya>
+collating-symbol <t-ra>
+collating-symbol <t-rra>
+collating-symbol <t-la>
+collating-symbol <t-lla>
+collating-symbol <t-va>
+collating-symbol <t-sha>
+collating-symbol <t-ssa>
+collating-symbol <t-sa>
+collating-symbol <t-ha>
+collating-symbol <t-avagrah>
+collating-symbol <tm-aa>
+collating-symbol <tm-i>
+collating-symbol <tm-ii>
+collating-symbol <tm-u>
+collating-symbol <tm-uu>
+collating-symbol <tm-vocalicr>
+collating-symbol <tm-vocalicrr>
+collating-symbol <tm-vocalicl>
+collating-symbol <tm-vocalicll>
+collating-symbol <tm-shorte>
+collating-symbol <tm-e>
+collating-symbol <tm-ai>
+collating-symbol <tm-shorto>
+collating-symbol <tm-o>
+collating-symbol <tm-au>
+collating-symbol <tvd-chandrabindu>
+collating-symbol <tvd-anuswara>
+collating-symbol <tvd-visarg>
+collating-symbol <t-halant>
+collating-symbol <t-lenghtmark>
+collating-symbol <t-ailenghtmark>
+
 # Ordre des symboles internes / Order of internal symbols
 #
 # SYMB. N°
@@ -1236,6 +1326,92 @@ collating-symbol <g-halant>
 <gvd-chandrabindu>
 <gvd-visarg>
 <g-halant>
+#
+#<TELUGU>
+#
+# collation weights in order
+
+<tummu>
+<tvw-a>
+<tvw-aa>
+<tvw-i>
+<tvw-ii>
+<tvw-u>
+<tvw-uu>
+<tvw-vocalicr>
+<tvw-vocalicrr>
+<tvw-vocalicl>
+<tvw-vocalicll>
+<tvw-candrae>
+<tvw-shorte>
+<tvw-e>
+<tvw-ai>
+<tvw-shorto>
+<tvw-o>
+<tvw-au>
+<t-ka>
+<t-kha>
+<t-ga>
+<t-gga>
+<t-gha>
+<t-nga>
+<t-ca>
+<t-tsa>
+<t-cha>
+<t-ja>
+<t-dza>
+<t-jja>
+<t-jha>
+<t-nya>
+<t-tta>
+<t-ttha>
+<t-dda>
+<t-ddda>
+<t-ddha>
+<t-nna>
+<t-ta>
+<t-tha>
+<t-da>
+<t-dha>
+<t-na>
+<t-pa>
+<t-pha>
+<t-ba>
+<t-bba>
+<t-bha>
+<t-ma>
+<t-ya>
+<t-ra>
+<t-rra>
+<t-la>
+<t-lla>
+<t-va>
+<t-sha>
+<t-ssa>
+<t-sa>
+<t-ha>
+<t-avagrah>
+<tm-aa>
+<tm-i>
+<tm-ii>
+<tm-u>
+<tm-uu>
+<tm-vocalicr>
+<tm-vocalicrr>
+<tm-vocalicl>
+<tm-vocalicll>
+<tm-shorte>
+<tm-e>
+<tm-ai>
+<tm-shorto>
+<tm-o>
+<tm-au>
+<tvd-chandrabindu>
+<tvd-anuswara>
+<tvd-visarg>
+<t-halant>
+<t-lenghtmark>
+<t-ailenghtmark>
 
 order_start <SPECIAL>;forward;backward;forward;forward,position
 #
@@ -3201,6 +3377,103 @@ order_start  <GUJARATI>;forward;forward;forward;forward,position
 <U0ACD> <g-halant>;<BAS>;<MIN>;IGNORE
 <U0ABC> IGNORE;<GNKT>;<MIN>;IGNORE
 
+order_start <TELUGU>;forward;forward;forward;forward,position
+<U0C66> <0>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C78> <0>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C67> <1>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C79> <1>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C7C> <1>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C68> <2>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C7A> <2>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C7D> <2>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C69> <3>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C7B> <3>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C7E> <3>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C6A> <4>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C6B> <5>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C6C> <6>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C6D> <7>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C6E> <8>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C6F> <9>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0C7F> <tummu> ;<BAS>;<MIN>;IGNORE
+<U0C05> <tvw-a> ;<BAS>;<MIN>;IGNORE
+<U0C06> <tvw-aa> ;<BAS>;<MIN>;IGNORE
+<U0C07> <tvw-i> ;<BAS>;<MIN>;IGNORE
+<U0C08> <tvw-ii> ;<BAS>;<MIN>;IGNORE
+<U0C09> <tvw-u> ;<BAS>;<MIN>;IGNORE
+<U0C0A> <tvw-uu>;<BAS>;<MIN>;IGNORE
+<U0C0B> <tvw-vocalicr>;<BAS>;<MIN>;IGNORE
+<U0C60> <tvw-vocalicrr>;<BAS>;<MIN>;IGNORE
+<U0C0C> <tvw-vocalicl>;<BAS>;<MIN>;IGNORE
+<U0C61> <tvw-vocalicll>;<BAS>;<MIN>;IGNORE
+<U0C0D> <tvw-candrae>;<BAS>;<MIN>;IGNORE
+<U0C0E> <tvw-shorte>;<BAS>;<MIN>;IGNORE
+<U0C0F> <tvw-e>;<BAS>;<MIN>;IGNORE
+<U0C10> <tvw-ai>;<BAS>;<MIN>;IGNORE
+<U0C12> <tvw-shorto>;<BAS>;<MIN>;IGNORE
+<U0C13> <tvw-o>;<BAS>;<MIN>;IGNORE
+<U0C14> <tvw-au>;<BAS>;<MIN>;IGNORE
+<U0C15> <t-ka>;<BAS>;<MIN>;IGNORE
+<U0C16> <t-kha>;<BAS>;<MIN>;IGNORE
+<U0C17> <t-ga>;<BAS>;<MIN>;IGNORE
+<U0C7B> <t-gga>;<BAS>;<MIN>;IGNORE
+<U0C18> <t-gha>;<BAS>;<MIN>;IGNORE
+<U0C19> <t-nga>;<BAS>;<MIN>;IGNORE
+<U0C1A> <t-ca>;<BAS>;<MIN>;IGNORE
+<U0C58> <t-tsa>;<BAS>;<MIN>;IGNORE
+<U0C1B> <t-cha>;<BAS>;<MIN>;IGNORE
+<U0C1C> <t-ja>;<BAS>;<MIN>;IGNORE
+<U0C59> <t-dza>;<BAS>;<MIN>;IGNORE
+<U0C1D> <t-jha>;<BAS>;<MIN>;IGNORE
+<U0C1E> <t-nya>;<BAS>;<MIN>;IGNORE
+<U0C1F> <t-tta>;<BAS>;<MIN>;IGNORE
+<U0C20> <t-ttha>;<BAS>;<MIN>;IGNORE
+<U0C21> <t-dda>;<BAS>;<MIN>;IGNORE
+<U0C22> <t-ddha>;<BAS>;<MIN>;IGNORE
+<U0C23> <t-nna>;<BAS>;<MIN>;IGNORE
+<U0C24> <t-ta>;<BAS>;<MIN>;IGNORE
+<U0C25> <t-tha>;<BAS>;<MIN>;IGNORE
+<U0C26> <t-da>;<BAS>;<MIN>;IGNORE
+<U0C27> <t-dha>;<BAS>;<MIN>;IGNORE
+<U0C28> <t-na>;<BAS>;<MIN>;IGNORE
+<U0C2A> <t-pa>;<BAS>;<MIN>;IGNORE
+<U0C2B> <t-pha>;<BAS>;<MIN>;IGNORE
+<U0C2C> <t-ba>;<BAS>;<MIN>;IGNORE
+<U0C2D> <t-bha>;<BAS>;<MIN>;IGNORE
+<U0C2E> <t-ma>;<BAS>;<MIN>;IGNORE
+<U0C2F> <t-ya>;<BAS>;<MIN>;IGNORE
+<U0C30> <t-ra>;<BAS>;<MIN>;IGNORE
+<U0C31> <t-rra>;<BAS>;<MIN>;IGNORE
+<U0C32> <t-la>;<BAS>;<MIN>;IGNORE
+<U0C33> <t-lla>;<BAS>;<MIN>;IGNORE
+<U0C35> <t-va>;<BAS>;<MIN>;IGNORE
+<U0C36> <t-sha>;<BAS>;<MIN>;IGNORE
+<U0C37> <t-ssa>;<BAS>;<MIN>;IGNORE
+<U0C38> <t-sa>;<BAS>;<MIN>;IGNORE
+<U0C39> <t-ha>;<BAS>;<MIN>;IGNORE
+<U0C3D> <t-avagrah>;<BAS>;<MIN>;IGNORE
+<U0C3E> <tm-aa>;<BAS>;<MIN>;IGNORE
+<U0C3F> <tm-i>;<BAS>;<MIN>;IGNORE
+<U0C40> <tm-ii>;<BAS>;<MIN>;IGNORE
+<U0C41> <tm-u>;<BAS>;<MIN>;IGNORE
+<U0C42> <tm-uu>;<BAS>;<MIN>;IGNORE
+<U0C43> <tm-vocalicr>;<BAS>;<MIN>;IGNORE
+<U0C44> <tm-vocalicrr>;<BAS>;<MIN>;IGNORE
+<U0C62> <tm-vocalicl>;<BAS>;<MIN>;IGNORE
+<U0C63> <tm-vocalicll>;<BAS>;<MIN>;IGNORE
+<U0C46>  <tm-shorte>;<BAS>;<MIN>;IGNORE
+<U0C47> <tm-e>;<BAS>;<MIN>;IGNORE
+<U0C48> <tm-ai>;<BAS>;<MIN>;IGNORE
+<U0C4A> <tm-shorto>;<BAS>;<MIN>;IGNORE
+<U0C4B> <tm-o>;<BAS>;<MIN>;IGNORE
+<U0C4C> <tm-au>;<BAS>;<MIN>;IGNORE
+<U0C01> <tvd-chandrabindu>;<BAS>;<MIN>;IGNORE
+<U0C02> <tvd-anuswara>;<BAS>;<MIN>;IGNORE
+<U0C03> <tvd-visarg>;<BAS>;<MIN>;IGNORE
+<U0C4D> <t-halant>;<BAS>;<MIN>;IGNORE
+<U0C55> <t-lenghtmark>;<BAS>;<MIN>;IGNORE
+<U0C56> <t-ailenghtmark>;<BAS>;<MIN>;IGNORE
+
 order_end
 
 END LC_COLLATE
index b8a73ae..267d607 100644 (file)
@@ -2510,6 +2510,7 @@ exp_test (void)
   TEST_f_f (exp, 3, M_E3l);
   TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L);
   TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L);
+  TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L);
 #ifdef TEST_LDOUBLE
   /* The result can only be represented in long double.  */
   TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L);
index d7e80dc..4a8a540 100644 (file)
@@ -31,5 +31,5 @@ truncate64 (path, length)
       __set_errno (EINVAL);
       return -1;
     }
-  return truncate (path, (off_t) length);
+  return __truncate (path, (off_t) length);
 }
index be4453e..ef9a512 100644 (file)
@@ -95,7 +95,7 @@ libnss_nis {
     _nss_nis_setgrent; _nss_nis_sethostent; _nss_nis_setnetent;
     _nss_nis_setnetgrent; _nss_nis_setprotoent; _nss_nis_setpwent;
     _nss_nis_setrpcent; _nss_nis_setservent; _nss_nis_setspent;
-    _nss_nis_initgroups_dyn;
+    _nss_nis_initgroups_dyn; _nss_nis_gethostbyname4_r;
   }
 }
 
@@ -126,5 +126,6 @@ libnss_nisplus {
     _nss_nisplus_setnetent; _nss_nisplus_setnetgrent; _nss_nisplus_setprotoent;
     _nss_nisplus_setpwent; _nss_nisplus_setrpcent; _nss_nisplus_setservent;
     _nss_nisplus_setspent; _nss_nisplus_initgroups_dyn;
+    _nss_nisplus_gethostbyname4_r;
   }
 }
index 7bf4af7..24d1363 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1996-2000, 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2000, 2002, 2003, 2006, 2007, 2008
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
 
@@ -17,6 +18,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <nss.h>
 #include <ctype.h>
 /* The following is an ugly trick to avoid a prototype declaration for
@@ -61,9 +63,12 @@ LINE_PARSER
 
    STRING_FIELD (addr, isspace, 1);
 
+   assert (af == AF_INET || af == AF_INET6 || af == AF_UNSPEC);
+
    /* Parse address.  */
-   if (af == AF_INET && inet_pton (AF_INET, addr, entdata->host_addr) > 0)
+   if (af != AF_INET6 && inet_pton (AF_INET, addr, entdata->host_addr) > 0)
      {
+       assert ((flags & AI_V4MAPPED) == 0 || af != AF_UNSPEC);
        if (flags & AI_V4MAPPED)
          {
            map_v4v6_address ((char *) entdata->host_addr,
@@ -77,7 +82,7 @@ LINE_PARSER
            result->h_length = INADDRSZ;
          }
      }
-   else if (af == AF_INET6
+   else if (af != AF_INET
             && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
      {
        result->h_addrtype = AF_INET6;
@@ -102,6 +107,7 @@ static bool_t new_start = 1;
 static char *oldkey = NULL;
 static int oldkeylen = 0;
 
+
 enum nss_status
 _nss_nis_sethostent (int stayopen)
 {
@@ -124,6 +130,7 @@ _nss_nis_sethostent (int stayopen)
    is used so this makes no difference.  */
 strong_alias (_nss_nis_sethostent, _nss_nis_endhostent)
 
+
 /* The calling function always need to get a lock first. */
 static enum nss_status
 internal_nis_gethostent_r (struct hostent *host, char *buffer,
@@ -216,6 +223,7 @@ internal_nis_gethostent_r (struct hostent *host, char *buffer,
   return NSS_STATUS_SUCCESS;
 }
 
+
 enum nss_status
 _nss_nis_gethostent_r (struct hostent *host, char *buffer, size_t buflen,
                       int *errnop, int *h_errnop)
@@ -233,6 +241,7 @@ _nss_nis_gethostent_r (struct hostent *host, char *buffer, size_t buflen,
   return status;
 }
 
+
 static enum nss_status
 internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
                           char *buffer, size_t buflen, int *errnop,
@@ -323,16 +332,24 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
   return NSS_STATUS_SUCCESS;
 }
 
+
 enum nss_status
 _nss_nis_gethostbyname2_r (const char *name, int af, struct hostent *host,
                           char *buffer, size_t buflen, int *errnop,
                           int *h_errnop)
 {
+  if (af != AF_INET && af != AF_INET6)
+    {
+      *h_errnop = HOST_NOT_FOUND;
+      return NSS_STATUS_NOTFOUND;
+    }
+
   return internal_gethostbyname2_r (name, af, host, buffer, buflen, errnop,
                                    h_errnop,
                        ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
 }
 
+
 enum nss_status
 _nss_nis_gethostbyname_r (const char *name, struct hostent *host, char *buffer,
                          size_t buflen, int *errnop, int *h_errnop)
@@ -351,6 +368,7 @@ _nss_nis_gethostbyname_r (const char *name, struct hostent *host, char *buffer,
                                    errnop, h_errnop, 0);
 }
 
+
 enum nss_status
 _nss_nis_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
                          struct hostent *host, char *buffer, size_t buflen,
@@ -430,13 +448,93 @@ _nss_nis_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
   return NSS_STATUS_SUCCESS;
 }
 
-#if 0
+
 enum nss_status
-_nss_nis_getipnodebyname_r (const char *name, int af, int flags,
-                           struct hostent *result, char *buffer,
-                           size_t buflen, int *errnop, int *herrnop)
+_nss_nis_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
+                          char *buffer, size_t buflen, int *errnop,
+                          int *herrnop, int32_t *ttlp)
 {
-  return internal_gethostbyname2_r (name, af, result, buffer, buflen,
-                                   errnop, herrnop, flags);
+  char *domain;
+  if (yp_get_default_domain (&domain))
+    return NSS_STATUS_UNAVAIL;
+
+  /* Convert name to lowercase.  */
+  size_t namlen = strlen (name);
+  char name2[namlen + 1];
+  size_t i;
+
+  for (i = 0; i < namlen; ++i)
+    name2[i] = tolower (name[i]);
+  name2[i] = '\0';
+
+  char *result;
+  int len;
+  int yperr = yp_match (domain, "hosts.byname", name2, namlen, &result, &len);
+
+  if (__builtin_expect (yperr != YPERR_SUCCESS, 0))
+    {
+      enum nss_status retval = yperr2nss (yperr);
+
+      if (retval == NSS_STATUS_TRYAGAIN)
+       {
+         *herrnop = TRY_AGAIN;
+         *errnop = errno;
+       }
+      if (retval == NSS_STATUS_NOTFOUND)
+       *herrnop = HOST_NOT_FOUND;
+      return retval;
+    }
+
+  struct parser_data data;
+  struct hostent host;
+  int parse_res = parse_line (result, &host, &data, buflen, errnop, AF_UNSPEC,
+                             0);
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      if (parse_res == -1)
+       {
+         *herrnop = NETDB_INTERNAL;
+         return NSS_STATUS_TRYAGAIN;
+       }
+      else
+       {
+         *herrnop = HOST_NOT_FOUND;
+         return NSS_STATUS_NOTFOUND;
+       }
+    }
+
+  if (*pat == NULL)
+    {
+      uintptr_t pad = (-(uintptr_t) buffer
+                      % __alignof__ (struct gaih_addrtuple));
+      buffer += pad;
+      buflen = buflen > pad ? buflen - pad : 0;
+
+      if (__builtin_expect (buflen < sizeof (struct gaih_addrtuple), 0))
+       {
+       erange:
+         free (result);
+         *errnop = ERANGE;
+         *herrnop = NETDB_INTERNAL;
+         return NSS_STATUS_TRYAGAIN;
+       }
+
+      *pat = (struct gaih_addrtuple *) buffer;
+      buffer += sizeof (struct gaih_addrtuple);
+      buflen -= sizeof (struct gaih_addrtuple);
+    }
+
+  (*pat)->next = NULL;
+  size_t h_name_len = strlen (host.h_name);
+  if (h_name_len >= buflen)
+    goto erange;
+  (*pat)->name = memcpy (buffer, host.h_name, h_name_len + 1);
+  (*pat)->family = host.h_addrtype;
+  memcpy ((*pat)->addr, host.h_addr_list[0], host.h_length);
+  (*pat)->scopeid = 0;
+  assert (host.h_addr_list[1] == NULL);
+
+  free (result);
+
+  return NSS_STATUS_SUCCESS;
 }
-#endif
index f5f0ac9..37d4477 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2003, 2005, 2006, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <atomic.h>
 #include <ctype.h>
 #include <errno.h>
@@ -58,15 +59,15 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
   if (result == NULL)
     return 0;
 
-  if ((result->status != NIS_SUCCESS && result->status != NIS_S_SUCCESS) ||
-      __type_of (NIS_RES_OBJECT (result)) != NIS_ENTRY_OBJ ||
-      strcmp(NIS_RES_OBJECT (result)[0].EN_data.en_type, "hosts_tbl") != 0 ||
-      NIS_RES_OBJECT (result)[0].EN_data.en_cols.en_cols_len < 4)
+  if ((result->status != NIS_SUCCESS && result->status != NIS_S_SUCCESS)
+      || __type_of (NIS_RES_OBJECT (result)) != NIS_ENTRY_OBJ
+      || strcmp (NIS_RES_OBJECT (result)[0].EN_data.en_type, "hosts_tbl") != 0
+      || NIS_RES_OBJECT (result)[0].EN_data.en_cols.en_cols_len < 4)
     return 0;
 
   char *data = first_unused;
 
-  if (room_left < (af == AF_INET6 || (flags & AI_V4MAPPED) != 0
+  if (room_left < (af != AF_INET || (flags & AI_V4MAPPED) != 0
                   ? IN6ADDRSZ : INADDRSZ))
     {
     no_more_room:
@@ -75,8 +76,10 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
     }
 
   /* Parse address.  */
-  if (af == AF_INET && inet_pton (af, NISENTRYVAL (0, 2, result), data) > 0)
+  if (af != AF_INET6
+      && inet_pton (AF_INET, NISENTRYVAL (0, 2, result), data) > 0)
     {
+      assert ((flags & AI_V4MAPPED) == 0 || af != AF_UNSPEC);
       if (flags & AI_V4MAPPED)
        {
          map_v4v6_address (data, data);
@@ -89,7 +92,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
          host->h_length = INADDRSZ;
        }
     }
-  else if (af == AF_INET6
+  else if (af != AF_INET
           && inet_pton (AF_INET6, NISENTRYVAL (0, 2, result), data) > 0)
     {
       host->h_addrtype = AF_INET6;
@@ -109,27 +112,33 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
   first_unused = __stpncpy (first_unused, NISENTRYVAL (0, 0, result),
                            NISENTRYLEN (0, 0, result));
   *first_unused++ = '\0';
-  room_left -= NISENTRYLEN (0, 0, result) + 1;
 
-  /* XXX Rewrite at some point to allocate the array first and then
-     copy the strings.  It wasteful to first concatenate the strings
-     to just split them again later.  */
+  room_left -= NISENTRYLEN (0, 0, result) + 1;
   char *line = first_unused;
-  for (i = 0; i < NIS_RES_NUMOBJ (result); ++i)
+
+  /* When this is a call to gethostbyname4_r we do not need the aliases.  */
+  if (af != AF_UNSPEC)
     {
-      if (strcmp (NISENTRYVAL (i, 1, result), host->h_name) != 0)
+      /* XXX Rewrite at some point to allocate the array first and then
+        copy the strings.  It is wasteful to first concatenate the strings
+        to just split them again later.  */
+      for (i = 0; i < NIS_RES_NUMOBJ (result); ++i)
        {
-         if (NISENTRYLEN (i, 1, result) + 2 > room_left)
-           goto no_more_room;
-
-         *first_unused++ = ' ';
-         first_unused = __stpncpy (first_unused, NISENTRYVAL (i, 1, result),
-                                   NISENTRYLEN (i, 1, result));
-         *first_unused = '\0';
-         room_left -= NISENTRYLEN (i, 1, result) + 1;
+         if (strcmp (NISENTRYVAL (i, 1, result), host->h_name) != 0)
+           {
+             if (NISENTRYLEN (i, 1, result) + 2 > room_left)
+               goto no_more_room;
+
+             *first_unused++ = ' ';
+             first_unused = __stpncpy (first_unused,
+                                       NISENTRYVAL (i, 1, result),
+                                       NISENTRYLEN (i, 1, result));
+             *first_unused = '\0';
+             room_left -= NISENTRYLEN (i, 1, result) + 1;
+           }
        }
+      *first_unused++ = '\0';
     }
-  *first_unused++ = '\0';
 
   /* Adjust the pointer so it is aligned for
      storing pointers.  */
@@ -147,30 +156,34 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
   host->h_addr_list[1] = NULL;
   host->h_aliases = &host->h_addr_list[2];
 
-  i = 0;
-  while (*line != '\0')
+  /* When this is a call to gethostbyname4_r we do not need the aliases.  */
+  if (af != AF_UNSPEC)
     {
-      /* Skip leading blanks.  */
-      while (isspace (*line))
-       ++line;
+      i = 0;
+      while (*line != '\0')
+       {
+         /* Skip leading blanks.  */
+         while (isspace (*line))
+           ++line;
 
-      if (*line == '\0')
-       break;
+         if (*line == '\0')
+           break;
 
-      if (room_left < sizeof (char *))
-       goto no_more_room;
+         if (room_left < sizeof (char *))
+           goto no_more_room;
 
-      room_left -= sizeof (char *);
-      host->h_aliases[i++] = line;
+         room_left -= sizeof (char *);
+         host->h_aliases[i++] = line;
 
-      while (*line != '\0' && *line != ' ')
-       ++line;
+         while (*line != '\0' && *line != ' ')
+           ++line;
 
-      if (*line == ' ')
-       *line++ = '\0';
-    }
+         if (*line == ' ')
+           *line++ = '\0';
+       }
 
-  host->h_aliases[i] = NULL;
+      host->h_aliases[i] = NULL;
+    }
 
   return 1;
 }
@@ -204,6 +217,7 @@ _nss_create_tablename (int *errnop)
   return NSS_STATUS_SUCCESS;
 }
 
+
 enum nss_status
 _nss_nisplus_sethostent (int stayopen)
 {
@@ -226,6 +240,7 @@ _nss_nisplus_sethostent (int stayopen)
   return status;
 }
 
+
 enum nss_status
 _nss_nisplus_endhostent (void)
 {
@@ -242,6 +257,7 @@ _nss_nisplus_endhostent (void)
   return NSS_STATUS_SUCCESS;
 }
 
+
 static enum nss_status
 internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
                               size_t buflen, int *errnop, int *herrnop)
@@ -329,6 +345,7 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
   return NSS_STATUS_SUCCESS;
 }
 
+
 enum nss_status
 _nss_nisplus_gethostent_r (struct hostent *result, char *buffer,
                           size_t buflen, int *errnop, int *herrnop)
@@ -345,26 +362,33 @@ _nss_nisplus_gethostent_r (struct hostent *result, char *buffer,
   return status;
 }
 
+
+static enum nss_status
+get_tablename (int *herrnop)
+{
+  __libc_lock_lock (lock);
+
+  enum nss_status status = _nss_create_tablename (herrnop);
+
+  __libc_lock_unlock (lock);
+
+  if (status != NSS_STATUS_SUCCESS)
+    *herrnop = NETDB_INTERNAL;
+
+  return status;
+}
+
+
 static enum nss_status
 internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
                           char *buffer, size_t buflen, int *errnop,
                           int *herrnop, int flags)
 {
-  int parse_res, retval;
-
   if (tablename_val == NULL)
     {
-      __libc_lock_lock (lock);
-
-      enum nss_status status = _nss_create_tablename (errnop);
-
-      __libc_lock_unlock (lock);
-
+      enum nss_status status = get_tablename (herrnop);
       if (status != NSS_STATUS_SUCCESS)
-       {
-         *herrnop = NETDB_INTERNAL;
-         return NSS_STATUS_UNAVAIL;
-       }
+       return status;
     }
 
   if (name == NULL)
@@ -374,39 +398,36 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
       return NSS_STATUS_NOTFOUND;
     }
 
-  nis_result *result;
   char buf[strlen (name) + 10 + tablename_len];
   int olderr = errno;
 
   /* Search at first in the alias list, and use the correct name
      for the next search.  */
   snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
-  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
   if (result != NULL)
     {
-      char *bufptr = buf;
-
       /* If we did not find it, try it as original name. But if the
         database is correct, we should find it in the first case, too.  */
-      if ((result->status != NIS_SUCCESS
-          && result->status != NIS_S_SUCCESS)
-         || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
-         || strcmp (result->objects.objects_val->EN_data.en_type,
-                    "hosts_tbl") != 0
-         || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
-       snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
-      else
+      char *bufptr = buf;
+      size_t buflen = sizeof (buf);
+
+      if ((result->status == NIS_SUCCESS || result->status == NIS_S_SUCCESS)
+         && __type_of (result->objects.objects_val) == NIS_ENTRY_OBJ
+         && strcmp (result->objects.objects_val->EN_data.en_type,
+                    "hosts_tbl") == 0
+         && result->objects.objects_val->EN_data.en_cols.en_cols_len >= 3)
        {
          /* We need to allocate a new buffer since there is no
-            guarantee the returned name has a length limit.  */
-         const char *entryval = NISENTRYVAL(0, 0, result);
-         size_t buflen = strlen (entryval) + 10 + tablename_len;
+            guarantee the returned alias name has a length limit.  */
+         name = NISENTRYVAL(0, 0, result);
+         size_t buflen = strlen (name) + 10 + tablename_len;
          bufptr = alloca (buflen);
-         snprintf (bufptr, buflen, "[cname=%s],%s",
-                   entryval, tablename_val);
        }
 
+      snprintf (bufptr, buflen, "[cname=%s],%s", name, tablename_val);
+
       nis_freeresult (result);
       result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
     }
@@ -417,7 +438,7 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
       return NSS_STATUS_TRYAGAIN;
     }
 
-  retval = niserr2nss (result->status);
+  int retval = niserr2nss (result->status);
   if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
     {
       if (retval == NSS_STATUS_TRYAGAIN)
@@ -431,8 +452,8 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
       return retval;
     }
 
-  parse_res = _nss_nisplus_parse_hostent (result, af, host, buffer,
-                                         buflen, errnop, flags);
+  int parse_res = _nss_nisplus_parse_hostent (result, af, host, buffer,
+                                             buflen, errnop, flags);
 
   nis_freeresult (result);
 
@@ -450,16 +471,24 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
   return NSS_STATUS_NOTFOUND;
 }
 
+
 enum nss_status
 _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host,
                               char *buffer, size_t buflen, int *errnop,
                               int *herrnop)
 {
+  if (af != AF_INET && af != AF_INET6)
+    {
+      *herrnop = HOST_NOT_FOUND;
+      return NSS_STATUS_NOTFOUND;
+    }
+
   return internal_gethostbyname2_r (name, af, host, buffer, buflen, errnop,
                                    herrnop,
                         ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
 }
 
+
 enum nss_status
 _nss_nisplus_gethostbyname_r (const char *name, struct hostent *host,
                              char *buffer, size_t buflen, int *errnop,
@@ -480,6 +509,7 @@ _nss_nisplus_gethostbyname_r (const char *name, struct hostent *host,
                                   buflen, errnop, h_errnop, 0);
 }
 
+
 enum nss_status
 _nss_nisplus_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
                              struct hostent *host, char *buffer,
@@ -487,12 +517,7 @@ _nss_nisplus_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
 {
   if (tablename_val == NULL)
     {
-      __libc_lock_lock (lock);
-
-      enum nss_status status = _nss_create_tablename (errnop);
-
-      __libc_lock_unlock (lock);
-
+      enum nss_status status = get_tablename (herrnop);
       if (status != NSS_STATUS_SUCCESS)
        return status;
     }
@@ -547,3 +572,44 @@ _nss_nisplus_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
   __set_errno (olderr);
   return NSS_STATUS_NOTFOUND;
 }
+
+
+enum nss_status
+_nss_nisplus_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
+                              char *buffer, size_t buflen, int *errnop,
+                              int *herrnop, int32_t *ttlp)
+{
+  struct hostent host;
+
+  enum nss_status status = internal_gethostbyname2_r (name, AF_UNSPEC, &host,
+                                                     buffer, buflen,
+                                                     errnop, herrnop, 0);
+  if (__builtin_expect (status == NSS_STATUS_SUCCESS, 1))
+    {
+      if (*pat == NULL)
+       {
+         uintptr_t pad = (-(uintptr_t) buffer
+                          % __alignof__ (struct gaih_addrtuple));
+         buffer += pad;
+         buflen = buflen > pad ? buflen - pad : 0;
+
+         if (__builtin_expect (buflen < sizeof (struct gaih_addrtuple), 0))
+           {
+             free (result);
+             *errnop = ERANGE;
+             *herrnop = NETDB_INTERNAL;
+             return NSS_STATUS_TRYAGAIN;
+           }
+       }
+
+      (*pat)->next = NULL;
+      (*pat)->name = host.h_name;
+      (*pat)->family = host.h_addrtype;
+
+      memcpy ((*pat)->addr, host.h_addr_list[0], host.h_length);
+      (*pat)->scopeid = 0;
+      assert (host.h_addr_list[1] == NULL);
+    }
+
+  return status;
+}
index ba94a95..56c5bae 100644 (file)
@@ -1,3 +1,17 @@
+2008-05-10  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Access
+       __pshared correctly.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
+       Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
+       Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
+       Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S:
+       Likewise.
+       Reported by Clemens Kolbitsch <clemens.kol@gmx.at>.
+
 2008-04-14  David S. Miller  <davem@davemloft.net>
 
        * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
index d8f1bd5..2ddeed0 100644 (file)
@@ -122,7 +122,7 @@ __pthread_rwlock_rdlock:
 #else
        leal    MUTEX(%ebx), %edx
 #endif
-       movl    PSHARED(%ebx), %ecx
+       movzbl  PSHARED(%ebx), %ecx
        call    __lll_lock_wait
        jmp     2b
 
@@ -138,7 +138,7 @@ __pthread_rwlock_rdlock:
 #else
        leal    MUTEX(%ebx), %eax
 #endif
-       movl    PSHARED(%ebx), %ecx
+       movzbl  PSHARED(%ebx), %ecx
        call    __lll_unlock_wake
        jmp     7b
 
@@ -158,7 +158,7 @@ __pthread_rwlock_rdlock:
 #else
        leal    MUTEX(%ebx), %eax
 #endif
-       movl    PSHARED(%ebx), %ecx
+       movzbl  PSHARED(%ebx), %ecx
        call    __lll_unlock_wake
        jmp     11b
 
@@ -168,7 +168,7 @@ __pthread_rwlock_rdlock:
 #else
        leal    MUTEX(%ebx), %edx
 #endif
-       movl    PSHARED(%ebx), %ecx
+       movzbl  PSHARED(%ebx), %ecx
        call    __lll_lock_wait
        jmp     13b
        .size   __pthread_rwlock_rdlock,.-__pthread_rwlock_rdlock
index 0d96e03..8902728 100644 (file)
@@ -162,7 +162,7 @@ pthread_rwlock_timedrdlock:
 #else
        leal    MUTEX(%ebp), %edx
 #endif
-       movl    PSHARED(%ebp), %ecx
+       movzbl  PSHARED(%ebp), %ecx
        call    __lll_lock_wait
        jmp     2b
 
@@ -177,7 +177,7 @@ pthread_rwlock_timedrdlock:
 #else
        leal    MUTEX(%ebp), %eax
 #endif
-       movl    PSHARED(%ebp), %ecx
+       movzbl  PSHARED(%ebp), %ecx
        call    __lll_unlock_wake
        jmp     7b
 
@@ -197,7 +197,7 @@ pthread_rwlock_timedrdlock:
 #else
        leal    MUTEX(%ebp), %eax
 #endif
-       movl    PSHARED(%ebp), %ecx
+       movzbl  PSHARED(%ebp), %ecx
        call    __lll_unlock_wake
        jmp     11b
 
@@ -207,7 +207,7 @@ pthread_rwlock_timedrdlock:
 #else
        leal    MUTEX(%ebp), %edx
 #endif
-       movl    PSHARED(%ebp), %ecx
+       movzbl  PSHARED(%ebp), %ecx
        call    __lll_lock_wait
        jmp     13b
 
index e78fdf6..0cf02e0 100644 (file)
@@ -160,7 +160,7 @@ pthread_rwlock_timedwrlock:
 #else
        leal    MUTEX(%ebp), %edx
 #endif
-       movl    PSHARED(%ebp), %ecx
+       movzbl  PSHARED(%ebp), %ecx
        call    __lll_lock_wait
        jmp     2b
 
@@ -175,7 +175,7 @@ pthread_rwlock_timedwrlock:
 #else
        leal    MUTEX(%ebp), %eax
 #endif
-       movl    PSHARED(%ebp), %ecx
+       movzbl  PSHARED(%ebp), %ecx
        call    __lll_unlock_wake
        jmp     7b
 
@@ -190,7 +190,7 @@ pthread_rwlock_timedwrlock:
 #else
        leal    MUTEX(%ebp), %eax
 #endif
-       movl    PSHARED(%ebp), %ecx
+       movzbl  PSHARED(%ebp), %ecx
        call    __lll_unlock_wake
        jmp     11b
 
@@ -200,7 +200,7 @@ pthread_rwlock_timedwrlock:
 #else
        leal    MUTEX(%ebp), %edx
 #endif
-       movl    PSHARED(%ebp), %ecx
+       movzbl  PSHARED(%ebp), %ecx
        call    __lll_lock_wait
        jmp     13b
 
index a23e1b5..bf9c33e 100644 (file)
@@ -110,7 +110,7 @@ __pthread_rwlock_unlock:
 #else
        leal    MUTEX(%edi), %edx
 #endif
-       movl    PSHARED(%edi), %ecx
+       movzbl  PSHARED(%edi), %ecx
        call    __lll_lock_wait
        jmp     2b
 
@@ -120,7 +120,7 @@ __pthread_rwlock_unlock:
 #else
        leal    MUTEX(%edi), %eax
 #endif
-       movl    PSHARED(%edi), %ecx
+       movzbl  PSHARED(%edi), %ecx
        call    __lll_unlock_wake
        jmp     4b
 
@@ -130,7 +130,7 @@ __pthread_rwlock_unlock:
 #else
        leal    MUTEX(%edi), %eax
 #endif
-       movl    PSHARED(%edi), %ecx
+       movzbl  PSHARED(%edi), %ecx
        call    __lll_unlock_wake
        jmp     8b
 
index 65b99fe..d13bb51 100644 (file)
@@ -120,7 +120,7 @@ __pthread_rwlock_wrlock:
 #else
        leal    MUTEX(%ebx), %edx
 #endif
-       movl    PSHARED(%ebx), %ecx
+       movzbl  PSHARED(%ebx), %ecx
        call    __lll_lock_wait
        jmp     2b
 
@@ -135,7 +135,7 @@ __pthread_rwlock_wrlock:
 #else
        leal    MUTEX(%ebx), %eax
 #endif
-       movl    PSHARED(%ebx), %ecx
+       movzbl  PSHARED(%ebx), %ecx
        call    __lll_unlock_wake
        jmp     7b
 
@@ -149,7 +149,7 @@ __pthread_rwlock_wrlock:
 #else
        leal    MUTEX(%ebx), %eax
 #endif
-       movl    PSHARED(%ebx), %ecx
+       movzbl  PSHARED(%ebx), %ecx
        call    __lll_unlock_wake
        jmp     11b
 
@@ -159,7 +159,7 @@ __pthread_rwlock_wrlock:
 #else
        leal    MUTEX(%ebx), %edx
 #endif
-       movl    PSHARED(%ebx), %ecx
+       movzbl  PSHARED(%ebx), %ecx
        call    __lll_lock_wait
        jmp     13b
        .size   __pthread_rwlock_wrlock,.-__pthread_rwlock_wrlock
index f83e400..51badea 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007
+# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007,2008
 #      Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
index 3de8482..918efc9 100644 (file)
@@ -1,5 +1,5 @@
 /* Cache handling for host lookup.
-   Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
@@ -21,6 +21,7 @@
 #include <errno.h>
 #include <libintl.h>
 #include <netdb.h>
+#include <nss.h>
 #include <string.h>
 #include <time.h>
 #include <unistd.h>
 #endif
 
 
+typedef enum nss_status (*nss_gethostbyname4_r)
+  (const char *name, struct gaih_addrtuple **pat,
+   char *buffer, size_t buflen, int *errnop,
+   int *h_errnop, int32_t *ttlp);
 typedef enum nss_status (*nss_gethostbyname3_r)
   (const char *name, int af, struct hostent *host,
    char *buffer, size_t buflen, int *errnop,
@@ -117,16 +122,104 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
 
   while (!no_more)
     {
+      void *cp;
       int status[2] = { NSS_STATUS_UNAVAIL, NSS_STATUS_UNAVAIL };
+      int naddrs = 0;
+      size_t addrslen = 0;
+      size_t canonlen;
+
+      nss_gethostbyname4_r fct4 = __nss_lookup_function (nip,
+                                                        "gethostbyname4_r");
+      if (fct4 != NULL)
+       {
+         struct gaih_addrtuple *at = NULL;
+         while (1)
+           {
+             rc6 = 0;
+             status[0] = DL_CALL_FCT (fct4, (key, &at, tmpbuf6, tmpbuf6len,
+                                             &rc6, &herrno, &ttl));
+             if (rc6 != ERANGE || herrno != NETDB_INTERNAL)
+               break;
+             tmpbuf6 = extend_alloca (tmpbuf6, tmpbuf6len, 2 * tmpbuf6len);
+           }
+
+         if (rc6 != 0 && herrno == NETDB_INTERNAL)
+           goto out;
 
-      /* Prefer the function which also returns the TTL and canonical name.  */
-      nss_gethostbyname3_r fct = __nss_lookup_function (nip,
-                                                       "gethostbyname3_r");
-      if (fct == NULL)
-       fct = __nss_lookup_function (nip, "gethostbyname2_r");
+         if (status[0] != NSS_STATUS_SUCCESS)
+           goto next_nip;
+
+         /* We found the data.  Count the addresses and the size.  */
+         for (struct gaih_addrtuple *at2 = at; at2 != NULL; at2 = at2->next)
+           {
+             ++naddrs;
+             /* We handle unknown types here the best we can: assume
+                the maximum size for the address.  */
+             if (at2->family == AF_INET)
+               addrslen += INADDRSZ;
+             else if (at2->family == AF_INET6
+                      && IN6ADDRSZ != sizeof (at2->addr))
+               addrslen += IN6ADDRSZ;
+             else
+               addrslen += sizeof (at2->addr);
+           }
+         canon = at->name;
+         canonlen = strlen (canon) + 1;
+
+         total = sizeof (*dataset) + naddrs + addrslen + canonlen;
+
+         /* Now we can allocate the data structure.  If the TTL of the
+            entry is reported as zero do not cache the entry at all.  */
+         if (ttl != 0 && he == NULL)
+           {
+             dataset = (struct dataset *) mempool_alloc (db, total
+                                                         + req->key_len,
+                                                         IDX_result_data);
+             if (dataset == NULL)
+               ++db->head->addfailed;
+           }
+
+         if (dataset == NULL)
+           {
+             /* We cannot permanently add the result in the moment.  But
+                we can provide the result as is.  Store the data in some
+                temporary memory.  */
+             dataset = (struct dataset *) alloca (total + req->key_len);
+
+             /* We cannot add this record to the permanent database.  */
+             alloca_used = true;
+           }
 
-      if (fct != NULL)
+         /* Fill in the address and address families.  */
+         char *addrs = (char *) (&dataset->resp + 1);
+         uint8_t *family = (uint8_t *) (addrs + addrslen);
+
+         for (struct gaih_addrtuple *at2 = at; at2 != NULL; at2 = at2->next)
+           {
+             *family++ = at2->family;
+             if (at2->family == AF_INET)
+               addrs = mempcpy (addrs, at2->addr, INADDRSZ);
+             else if (at2->family == AF_INET6
+                      && IN6ADDRSZ != sizeof (at2->addr))
+               addrs = mempcpy (addrs, at2->addr, IN6ADDRSZ);
+             else
+               addrs = mempcpy (addrs, at2->addr, sizeof (at2->addr));
+           }
+
+         cp = family;
+       }
+      else
        {
+         /* Prefer the function which also returns the TTL and
+            canonical name.  */
+         nss_gethostbyname3_r fct = __nss_lookup_function (nip,
+                                                           "gethostbyname3_r");
+         if (fct == NULL)
+           fct = __nss_lookup_function (nip, "gethostbyname2_r");
+
+         if (fct == NULL)
+           goto next_nip;
+
          struct hostent th[2];
 
          /* Collect IPv6 information first.  */
@@ -134,8 +227,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
            {
              rc6 = 0;
              status[0] = DL_CALL_FCT (fct, (key, AF_INET6, &th[0], tmpbuf6,
-                                            tmpbuf6len, &rc6, &herrno,
-                                            &ttl, &canon));
+                                            tmpbuf6len, &rc6, &herrno, &ttl,
+                                            &canon));
              if (rc6 != ERANGE || herrno != NETDB_INTERNAL)
                break;
              tmpbuf6 = extend_alloca (tmpbuf6, tmpbuf6len, 2 * tmpbuf6len);
@@ -173,231 +266,226 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
          if (rc4 != 0 && herrno == NETDB_INTERNAL)
            goto out;
 
-         if (status[0] == NSS_STATUS_SUCCESS
-             || status[1] == NSS_STATUS_SUCCESS)
+         if (status[0] != NSS_STATUS_SUCCESS
+             && status[1] != NSS_STATUS_SUCCESS)
+           goto next_nip;
+
+         /* We found the data.  Count the addresses and the size.  */
+         for (int j = 0; j < 2; ++j)
+           if (status[j] == NSS_STATUS_SUCCESS)
+             for (int i = 0; th[j].h_addr_list[i] != NULL; ++i)
+               {
+                 ++naddrs;
+                 addrslen += th[j].h_length;
+               }
+
+         if (canon == NULL)
            {
-             /* We found the data.  Count the addresses and the size.  */
-             int naddrs = 0;
-             size_t addrslen = 0;
-             for (int j = 0; j < 2; ++j)
-               if (status[j] == NSS_STATUS_SUCCESS)
-                 for (int i = 0; th[j].h_addr_list[i] != NULL; ++i)
+             /* Determine the canonical name.  */
+             nss_getcanonname_r cfct;
+             cfct = __nss_lookup_function (nip, "getcanonname_r");
+             if (cfct != NULL)
+               {
+                 const size_t max_fqdn_len = 256;
+                 char *buf = alloca (max_fqdn_len);
+                 char *s;
+                 int rc;
+
+                 if (DL_CALL_FCT (cfct, (key, buf, max_fqdn_len, &s,
+                                         &rc, &herrno))
+                     == NSS_STATUS_SUCCESS)
+                   canon = s;
+                 else
+                   /* Set to name now to avoid using gethostbyaddr.  */
+                   canon = key;
+               }
+             else
+               {
+                 struct hostent *he = NULL;
+                 int herrno;
+                 struct hostent he_mem;
+                 void *addr;
+                 size_t addrlen;
+                 int addrfamily;
+
+                 if (status[1] == NSS_STATUS_SUCCESS)
+                   {
+                     addr = th[1].h_addr_list[0];
+                     addrlen = sizeof (struct in_addr);
+                     addrfamily = AF_INET;
+                   }
+                 else
                    {
-                     ++naddrs;
-                     addrslen += th[j].h_length;
+                     addr = th[0].h_addr_list[0];
+                     addrlen = sizeof (struct in6_addr);
+                     addrfamily = AF_INET6;
                    }
 
-             if (canon == NULL)
-               {
-                 /* Determine the canonical name.  */
-                 nss_getcanonname_r cfct;
-                 cfct = __nss_lookup_function (nip, "getcanonname_r");
-                 if (cfct != NULL)
+                 size_t tmpbuflen = 512;
+                 char *tmpbuf = alloca (tmpbuflen);
+                 int rc;
+                 while (1)
                    {
-                     const size_t max_fqdn_len = 256;
-                     char *buf = alloca (max_fqdn_len);
-                     char *s;
-                     int rc;
-
-                     if (DL_CALL_FCT (cfct, (key, buf, max_fqdn_len, &s, &rc,
-                                             &herrno)) == NSS_STATUS_SUCCESS)
-                       canon = s;
-                     else
-                       /* Set to name now to avoid using gethostbyaddr.  */
-                       canon = key;
+                     rc = __gethostbyaddr2_r (addr, addrlen, addrfamily,
+                                              &he_mem, tmpbuf, tmpbuflen,
+                                              &he, &herrno, NULL);
+                     if (rc != ERANGE || herrno != NETDB_INTERNAL)
+                       break;
+                     tmpbuf = extend_alloca (tmpbuf, tmpbuflen,
+                                             tmpbuflen * 2);
                    }
-                 else
+
+                 if (rc == 0)
                    {
-                     struct hostent *he = NULL;
-                     int herrno;
-                     struct hostent he_mem;
-                     void *addr;
-                     size_t addrlen;
-                     int addrfamily;
-
-                     if (status[1] == NSS_STATUS_SUCCESS)
-                       {
-                         addr = th[1].h_addr_list[0];
-                         addrlen = sizeof (struct in_addr);
-                         addrfamily = AF_INET;
-                       }
+                     if (he != NULL)
+                       canon = he->h_name;
                      else
-                       {
-                         addr = th[0].h_addr_list[0];
-                         addrlen = sizeof (struct in6_addr);
-                         addrfamily = AF_INET6;
-                       }
-
-                     size_t tmpbuflen = 512;
-                     char *tmpbuf = alloca (tmpbuflen);
-                     int rc;
-                     while (1)
-                       {
-                         rc = __gethostbyaddr2_r (addr, addrlen, addrfamily,
-                                                  &he_mem, tmpbuf, tmpbuflen,
-                                                  &he, &herrno, NULL);
-                         if (rc != ERANGE || herrno != NETDB_INTERNAL)
-                           break;
-                         tmpbuf = extend_alloca (tmpbuf, tmpbuflen,
-                                                 tmpbuflen * 2);
-                       }
-
-                     if (rc == 0)
-                       {
-                         if (he != NULL)
-                           canon = he->h_name;
-                         else
-                           canon = key;
-                       }
+                       canon = key;
                    }
                }
-             size_t canonlen = canon == NULL ? 0 : (strlen (canon) + 1);
+           }
 
-             total = sizeof (*dataset) + naddrs + addrslen + canonlen;
+         canonlen = canon == NULL ? 0 : (strlen (canon) + 1);
+
+         total = sizeof (*dataset) + naddrs + addrslen + canonlen;
 
-             /* Now we can allocate the data structure.  If the TTL
-                of the entry is reported as zero do not cache the
-                entry at all.  */
-             if (ttl != 0 && he == NULL)
-               {
-                 dataset = (struct dataset *) mempool_alloc (db,
-                                                             total
-                                                             + req->key_len,
-                                                             IDX_result_data);
-                 if (dataset == NULL)
-                   ++db->head->addfailed;
-               }
 
+         /* Now we can allocate the data structure.  If the TTL of the
+            entry is reported as zero do not cache the entry at all.  */
+         if (ttl != 0 && he == NULL)
+           {
+             dataset = (struct dataset *) mempool_alloc (db, total
+                                                         + req->key_len,
+                                                         IDX_result_data);
              if (dataset == NULL)
-               {
-                 /* We cannot permanently add the result in the moment.  But
-                    we can provide the result as is.  Store the data in some
-                    temporary memory.  */
-                 dataset = (struct dataset *) alloca (total + req->key_len);
+               ++db->head->addfailed;
+           }
+
+         if (dataset == NULL)
+           {
+             /* We cannot permanently add the result in the moment.  But
+                we can provide the result as is.  Store the data in some
+                temporary memory.  */
+             dataset = (struct dataset *) alloca (total + req->key_len);
+
+             /* We cannot add this record to the permanent database.  */
+             alloca_used = true;
+           }
 
-                 /* We cannot add this record to the permanent database.  */
-                 alloca_used = true;
+         /* Fill in the address and address families.  */
+         char *addrs = (char *) (&dataset->resp + 1);
+         uint8_t *family = (uint8_t *) (addrs + addrslen);
+
+         for (int j = 0; j < 2; ++j)
+           if (status[j] == NSS_STATUS_SUCCESS)
+             for (int i = 0; th[j].h_addr_list[i] != NULL; ++i)
+               {
+                 addrs = mempcpy (addrs, th[j].h_addr_list[i],
+                                  th[j].h_length);
+                 *family++ = th[j].h_addrtype;
                }
 
-             dataset->head.allocsize = total + req->key_len;
-             dataset->head.recsize = total - offsetof (struct dataset, resp);
-             dataset->head.notfound = false;
-             dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1);
-             dataset->head.usable = true;
-
-             /* Compute the timeout time.  */
-             dataset->head.timeout = time (NULL) + (ttl == INT32_MAX
-                                                    ? db->postimeout : ttl);
-
-             dataset->resp.version = NSCD_VERSION;
-             dataset->resp.found = 1;
-             dataset->resp.naddrs = naddrs;
-             dataset->resp.addrslen = addrslen;
-             dataset->resp.canonlen = canonlen;
-             dataset->resp.error = NETDB_SUCCESS;
-
-             char *addrs = (char *) (&dataset->resp + 1);
-             uint8_t *family = (uint8_t *) (addrs + addrslen);
-
-             for (int j = 0; j < 2; ++j)
-               if (status[j] == NSS_STATUS_SUCCESS)
-                 for (int i = 0; th[j].h_addr_list[i] != NULL; ++i)
-                   {
-                     addrs = mempcpy (addrs, th[j].h_addr_list[i],
-                                      th[j].h_length);
-                     *family++ = th[j].h_addrtype;
-                   }
+         cp = family;
+       }
 
-             void *cp = family;
-             if (canon != NULL)
-               cp = mempcpy (cp, canon, canonlen);
+      /* Fill in the rest of the dataset.  */
+      dataset->head.allocsize = total + req->key_len;
+      dataset->head.recsize = total - offsetof (struct dataset, resp);
+      dataset->head.notfound = false;
+      dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1);
+      dataset->head.usable = true;
 
-             key_copy = memcpy (cp, key, req->key_len);
+      /* Compute the timeout time.  */
+      dataset->head.timeout = time (NULL) + (ttl == INT32_MAX
+                                            ? db->postimeout : ttl);
 
-             /* Now we can determine whether on refill we have to
-                create a new record or not.  */
-             if (he != NULL)
-               {
-                 assert (fd == -1);
+      dataset->resp.version = NSCD_VERSION;
+      dataset->resp.found = 1;
+      dataset->resp.naddrs = naddrs;
+      dataset->resp.addrslen = addrslen;
+      dataset->resp.canonlen = canonlen;
+      dataset->resp.error = NETDB_SUCCESS;
 
-                 if (total + req->key_len == dh->allocsize
-                     && total - offsetof (struct dataset, resp) == dh->recsize
-                     && memcmp (&dataset->resp, dh->data,
-                                dh->allocsize
-                                - offsetof (struct dataset, resp)) == 0)
-                   {
-                     /* The data has not changed.  We will just bump the
-                        timeout value.  Note that the new record has been
-                        allocated on the stack and need not be freed.  */
-                     dh->timeout = dataset->head.timeout;
-                     ++dh->nreloads;
-                   }
-                 else
-                   {
-                     /* We have to create a new record.  Just allocate
-                        appropriate memory and copy it.  */
-                     struct dataset *newp
-                       = (struct dataset *) mempool_alloc (db,
-                                                           total
-                                                           + req->key_len,
-                                                           IDX_result_data);
-                     if (__builtin_expect (newp != NULL, 1))
-                       {
-                         /* Adjust pointer into the memory block.  */
-                         key_copy = (char *) newp + (key_copy
-                                                     - (char *) dataset);
-
-                         dataset = memcpy (newp, dataset,
-                                           total + req->key_len);
-                         alloca_used = false;
-                       }
-                     else
-                       ++db->head->addfailed;
+      if (canon != NULL)
+       cp = mempcpy (cp, canon, canonlen);
 
-                     /* Mark the old record as obsolete.  */
-                     dh->usable = false;
-                   }
+      key_copy = memcpy (cp, key, req->key_len);
+
+      /* Now we can determine whether on refill we have to create a
+        new record or not.  */
+      if (he != NULL)
+       {
+         assert (fd == -1);
+
+         if (total + req->key_len == dh->allocsize
+             && total - offsetof (struct dataset, resp) == dh->recsize
+             && memcmp (&dataset->resp, dh->data,
+                        dh->allocsize - offsetof (struct dataset,
+                                                  resp)) == 0)
+           {
+             /* The data has not changed.  We will just bump the
+                timeout value.  Note that the new record has been
+                allocated on the stack and need not be freed.  */
+             dh->timeout = dataset->head.timeout;
+             ++dh->nreloads;
+           }
+         else
+           {
+             /* We have to create a new record.  Just allocate
+                appropriate memory and copy it.  */
+             struct dataset *newp
+               = (struct dataset *) mempool_alloc (db, total + req->key_len,
+                                                   IDX_result_data);
+             if (__builtin_expect (newp != NULL, 1))
+               {
+                 /* Adjust pointer into the memory block.  */
+                 key_copy = (char *) newp + (key_copy - (char *) dataset);
+
+                 dataset = memcpy (newp, dataset, total + req->key_len);
+                 alloca_used = false;
                }
              else
-               {
-                 /* We write the dataset before inserting it to the
-                    database since while inserting this thread might
-                    block and so would unnecessarily let the receiver
-                    wait.  */
-                 assert (fd != -1);
+               ++db->head->addfailed;
+
+             /* Mark the old record as obsolete.  */
+             dh->usable = false;
+           }
+       }
+      else
+       {
+         /* We write the dataset before inserting it to the database
+            since while inserting this thread might block and so
+            would unnecessarily let the receiver wait.  */
+         assert (fd != -1);
 
 #ifdef HAVE_SENDFILE
-                 if (__builtin_expect (db->mmap_used, 1) && !alloca_used)
-                   {
-                     assert (db->wr_fd != -1);
-                     assert ((char *) &dataset->resp > (char *) db->data);
-                     assert ((char *) &dataset->resp - (char *) db->head
-                             + total
-                             <= (sizeof (struct database_pers_head)
-                                 + db->head->module * sizeof (ref_t)
-                                 + db->head->data_size));
-                     ssize_t written;
-                     written = sendfileall (fd, db->wr_fd,
-                                            (char *) &dataset->resp
-                                            - (char *) db->head, total);
+         if (__builtin_expect (db->mmap_used, 1) && !alloca_used)
+           {
+             assert (db->wr_fd != -1);
+             assert ((char *) &dataset->resp > (char *) db->data);
+             assert ((char *) &dataset->resp - (char *) db->head + total
+                     <= (sizeof (struct database_pers_head)
+                         + db->head->module * sizeof (ref_t)
+                         + db->head->data_size));
+             ssize_t written;
+             written = sendfileall (fd, db->wr_fd, (char *) &dataset->resp
+                                    - (char *) db->head, total);
 # ifndef __ASSUME_SENDFILE
-                     if (written == -1 && errno == ENOSYS)
-                       goto use_write;
+             if (written == -1 && errno == ENOSYS)
+               goto use_write;
 # endif
-                   }
-                 else
+           }
+         else
 # ifndef __ASSUME_SENDFILE
-                 use_write:
+         use_write:
 # endif
 #endif
-                   writeall (fd, &dataset->resp, total);
-               }
-
-             goto out;
-           }
-
+           writeall (fd, &dataset->resp, total);
        }
 
+      goto out;
+
+next_nip:
       if (nss_next_action (nip, status[1]) == NSS_ACTION_RETURN)
        break;
 
@@ -468,10 +556,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
       /* Now get the lock to safely insert the records.  */
       pthread_rwlock_rdlock (&db->lock);
 
-      if (cache_add (req->type, key_copy, req->key_len, &dataset->head, true,
-                    db, uid) < 0)
-       /* Ensure the data can be recovered.  */
-       dataset->head.usable = false;
+      (void) cache_add (req->type, key_copy, req->key_len, &dataset->head,
+                       true, db, uid);
 
       pthread_rwlock_unlock (&db->lock);
 
index 7e9b0dc..f4a9de5 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 1999, 2003-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 1999, 2003-2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -161,6 +161,11 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet,
     {
       ++table->head->addfailed;
 
+      /* If necessary mark the entry as unusable so that lookups will
+        not use it.  */
+      if (first)
+       packet->usable = false;
+
       /* Mark the in-flight memory as unused.  */
       for (enum in_flight idx = 0; idx < IDX_record_data; ++idx)
        mem_in_flight.block[idx].dbidx = -1;
index 57fcd0f..9921ae3 100644 (file)
@@ -1,5 +1,5 @@
 /* Cache handling for group lookup.
-   Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -146,10 +146,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
              /* Now get the lock to safely insert the records.  */
              pthread_rwlock_rdlock (&db->lock);
 
-             if (cache_add (req->type, &dataset->strdata, req->key_len,
-                            &dataset->head, true, db, owner) < 0)
-               /* Ensure the data can be recovered.  */
-               dataset->head.usable = false;
+             (void) cache_add (req->type, &dataset->strdata, req->key_len,
+                               &dataset->head, true, db, owner);
 
              pthread_rwlock_unlock (&db->lock);
 
@@ -356,12 +354,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
            {
              if (cache_add (GETGRBYGID, cp, key_offset, &dataset->head, true,
                             db, owner) < 0)
-               {
-                 /* Could not allocate memory.  Make sure the data gets
-                    discarded.  */
-                 dataset->head.usable = false;
-                 goto out;
-               }
+               goto out;
 
              first = false;
            }
@@ -370,12 +363,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
            {
              if (cache_add (GETGRBYNAME, key_copy, key_len + 1,
                             &dataset->head, true, db, owner) < 0)
-               {
-                 /* Could not allocate memory.  Make sure the data gets
-                    discarded.  */
-                 dataset->head.usable = false;
-                 goto out;
-               }
+               goto out;
 
              first = false;
            }
@@ -389,12 +377,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
            {
              if (req->type == GETGRBYNAME && db->propagate)
                (void) cache_add (GETGRBYGID, cp, key_offset, &dataset->head,
-                                 req->type != GETGRBYNAME, db, owner);
+                                 false, db, owner);
            }
-         else if (first)
-           /* Could not allocate memory.  Make sure the data gets
-              discarded.  */
-           dataset->head.usable = false;
 
        out:
          pthread_rwlock_unlock (&db->lock);
index 7777723..3ceb671 100644 (file)
@@ -1,5 +1,5 @@
 /* Cache handling for host lookup.
-   Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -155,10 +155,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
              /* Now get the lock to safely insert the records.  */
              pthread_rwlock_rdlock (&db->lock);
 
-             if (cache_add (req->type, &dataset->strdata, req->key_len,
-                            &dataset->head, true, db, owner) < 0)
-               /* Ensure the data can be recovered.  */
-               dataset->head.usable = false;
+             (void) cache_add (req->type, &dataset->strdata, req->key_len,
+                               &dataset->head, true, db, owner);
 
              pthread_rwlock_unlock (&db->lock);
 
@@ -409,11 +407,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
                  || req->type == GETHOSTBYADDR
                  || req->type == GETHOSTBYADDRv6);
 
-         if (cache_add (req->type, key_copy, req->key_len,
-                        &dataset->head, true, db, owner) < 0)
-           /* Could not allocate memory.  Make sure the
-              data gets discarded.  */
-           dataset->head.usable = false;
+         (void) cache_add (req->type, key_copy, req->key_len,
+                           &dataset->head, true, db, owner);
 
          pthread_rwlock_unlock (&db->lock);
        }
index 6a95fb5..94e909d 100644 (file)
@@ -1,5 +1,5 @@
 /* Cache handling for host lookup.
-   Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
@@ -230,10 +230,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
              /* Now get the lock to safely insert the records.  */
              pthread_rwlock_rdlock (&db->lock);
 
-             if (cache_add (req->type, key_copy, req->key_len,
-                            &dataset->head, true, db, uid) < 0)
-               /* Ensure the data can be recovered.  */
-               dataset->head.usable = false;
+             (void) cache_add (req->type, key_copy, req->key_len,
+                               &dataset->head, true, db, uid);
 
              pthread_rwlock_unlock (&db->lock);
 
@@ -399,11 +397,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
          /* Now get the lock to safely insert the records.  */
          pthread_rwlock_rdlock (&db->lock);
 
-         if (cache_add (INITGROUPS, cp, req->key_len, &dataset->head, true,
-                        db, uid) < 0)
-           /* Could not allocate memory.  Make sure the data gets
-              discarded.  */
-           dataset->head.usable = false;
+         (void) cache_add (INITGROUPS, cp, req->key_len, &dataset->head, true,
+                           db, uid);
 
          pthread_rwlock_unlock (&db->lock);
        }
index 508d934..14928d6 100644 (file)
@@ -1,5 +1,5 @@
 /* Cache memory handling.
-   Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
index 3d1e824..2d0a265 100644 (file)
@@ -1,5 +1,5 @@
 /* Cache handling for passwd lookup.
-   Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -153,11 +153,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
              /* Now get the lock to safely insert the records.  */
              pthread_rwlock_rdlock (&db->lock);
 
-             if (cache_add (req->type, key_copy, req->key_len,
-                            &dataset->head, true, db, owner) < 0)
-               /* Ensure the data can be recovered.  */
-               dataset->head.usable = false;
-
+             (void) cache_add (req->type, key_copy, req->key_len,
+                               &dataset->head, true, db, owner);
 
              pthread_rwlock_unlock (&db->lock);
 
@@ -352,12 +349,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
            {
              if (cache_add (GETPWBYUID, cp, key_offset, &dataset->head, true,
                             db, owner) < 0)
-               {
-                 /* Could not allocate memory.  Make sure the data gets
-                    discarded.  */
-                 dataset->head.usable = false;
-                 goto out;
-               }
+               goto out;
 
              first = false;
            }
@@ -366,12 +358,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
            {
              if (cache_add (GETPWBYNAME, key_copy, key_len + 1,
                             &dataset->head, true, db, owner) < 0)
-               {
-                 /* Could not allocate memory.  Make sure the data gets
-                    discarded.  */
-                 dataset->head.usable = false;
-                 goto out;
-               }
+               goto out;
 
              first = false;
            }
@@ -384,12 +371,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
            {
              if (req->type == GETPWBYNAME && db->propagate)
                (void) cache_add (GETPWBYUID, cp, key_offset, &dataset->head,
-                                 req->type != GETPWBYNAME, db, owner);
+                                 false, db, owner);
            }
-         else if (first)
-           /* Could not allocate memory.  Make sure the data gets
-              discarded.  */
-           dataset->head.usable = false;
 
        out:
          pthread_rwlock_unlock (&db->lock);
index e2d1e26..c6f0b47 100644 (file)
@@ -1,5 +1,5 @@
 /* Cache handling for services lookup.
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@drepper.com>, 2007.
 
@@ -136,10 +136,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
              /* Now get the lock to safely insert the records.  */
              pthread_rwlock_rdlock (&db->lock);
 
-             if (cache_add (req->type, &dataset->strdata, req->key_len,
-                            &dataset->head, true, db, owner) < 0)
-               /* Ensure the data can be recovered.  */
-               dataset->head.usable = false;
+             (void) cache_add (req->type, &dataset->strdata, req->key_len,
+                               &dataset->head, true, db, owner);
 
              pthread_rwlock_unlock (&db->lock);
 
@@ -332,11 +330,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
          /* Now get the lock to safely insert the records.  */
          pthread_rwlock_rdlock (&db->lock);
 
-         if (cache_add (req->type, key_copy, req->key_len,
-                        &dataset->head, true, db, owner) < 0)
-           /* Could not allocate memory.  Make sure the
-              data gets discarded.  */
-           dataset->head.usable = false;
+         (void) cache_add (req->type, key_copy, req->key_len,
+                           &dataset->head, true, db, owner);
 
          pthread_rwlock_unlock (&db->lock);
        }
index 8f2f0fb..f7f0e56 100644 (file)
@@ -38,6 +38,7 @@ libnss_files {
     _nss_files_endhostent;
     _nss_files_gethostbyaddr_r;
     _nss_files_gethostbyname2_r;
+    _nss_files_gethostbyname4_r;
     _nss_files_gethostbyname_r;
     _nss_files_gethostent_r;
     _nss_files_gethostton_r;
index 28c6dce..c8173d0 100644 (file)
@@ -337,6 +337,22 @@ ahosts_keys_int (int af, int xflags, int number, char *key[])
                sockstr = "DGRAM";
              else if (runp->ai_socktype == SOCK_RAW)
                sockstr = "RAW";
+#ifdef SOCK_SEQPACKET
+             else if (runp->ai_socktype == SOCK_SEQPACKET)
+               sockstr = "SEQPACKET";
+#endif
+#ifdef SOCK_RDM
+             else if (runp->ai_socktype == SOCK_RDM)
+               sockstr = "RDM";
+#endif
+#ifdef SOCK_DCCP
+             else if (runp->ai_socktype == SOCK_DCCP)
+               sockstr = "DCCP";
+#endif
+#ifdef SOCK_PACKET
+             else if (runp->ai_socktype == SOCK_PACKET)
+               sockstr = "PACKET";
+#endif
              else
                {
                  snprintf (sockbuf, sizeof (sockbuf), "%d",
index f5c12af..611b258 100644 (file)
--- a/nss/nss.h
+++ b/nss/nss.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1999, 2008 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
@@ -23,6 +23,7 @@
 #define _NSS_H 1
 
 #include <features.h>
+#include <stdint.h>
 
 
 __BEGIN_DECLS
@@ -38,6 +39,17 @@ enum nss_status
 };
 
 
+/* Data structure used for the 'gethostbyname4_r' function.  */
+struct gaih_addrtuple
+  {
+    struct gaih_addrtuple *next;
+    char *name;
+    int family;
+    uint32_t addr[4];
+    uint32_t scopeid;
+  };
+
+
 /* Overwrite service selection for database DBNAME using specification
    in STRING.
    This function should only be used by system programs which have to
index b064672..7b69d47 100644 (file)
@@ -1,6 +1,5 @@
 /* Hosts file parser in nss_files module.
-   Copyright (C) 1996-2001, 2003, 2004, 2006, 2007
-   Free Software Foundation, Inc.
+   Copyright (C) 1996-2001, 2003-2007, 2008 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
@@ -56,7 +55,10 @@ LINE_PARSER
    STRING_FIELD (addr, isspace, 1);
 
    /* Parse address.  */
-   if (inet_pton (af, addr, entdata->host_addr) <= 0)
+   if (inet_pton (af == AF_UNSPEC ? AF_INET : af, addr, entdata->host_addr)
+       > 0)
+     af = af == AF_UNSPEC ? AF_INET : af;
+   else
      {
        if (af == AF_INET6 && (flags & AI_V4MAPPED) != 0
           && inet_pton (AF_INET, addr, entdata->host_addr) > 0)
@@ -76,6 +78,9 @@ LINE_PARSER
             /* Illegal address: ignore line.  */
             return 0;
         }
+       else if (af == AF_UNSPEC
+               && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
+        af = AF_INET6;
        else
         /* Illegal address: ignore line.  */
         return 0;
@@ -101,8 +106,6 @@ _nss_files_get##name##_r (proto,                                          \
                          struct STRUCTURE *result, char *buffer,             \
                          size_t buflen, int *errnop H_ERRNO_PROTO)           \
 {                                                                            \
-  enum nss_status status;                                                    \
-                                                                             \
   uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct hostent_data);    \
   buffer += pad;                                                             \
   buflen = buflen > pad ? buflen - pad : 0;                                  \
@@ -110,7 +113,7 @@ _nss_files_get##name##_r (proto,                                          \
   __libc_lock_lock (lock);                                                   \
                                                                              \
   /* Reset file pointer to beginning or open file.  */                       \
-  status = internal_setent (keep_stream);                                    \
+  enum nss_status status = internal_setent (keep_stream);                    \
                                                                              \
   if (status == NSS_STATUS_SUCCESS)                                          \
     {                                                                        \
@@ -288,9 +291,9 @@ HOST_DB_LOOKUP (hostbyname, ,,
                {
                  LOOKUP_NAME_CASE (h_name, h_aliases)
                }, const char *name)
+#undef EXTRA_ARGS_VALUE
 
 
-#undef EXTRA_ARGS_VALUE
 /* XXX Is using _res to determine whether we want to convert IPv4 addresses
    to IPv6 addresses really the right thing to do?  */
 #define EXTRA_ARGS_VALUE \
@@ -299,8 +302,9 @@ HOST_DB_LOOKUP (hostbyname2, ,,
                {
                  LOOKUP_NAME_CASE (h_name, h_aliases)
                }, const char *name, int af)
-
 #undef EXTRA_ARGS_VALUE
+
+
 /* We only need to consider IPv4 mapped addresses if the input to the
    gethostbyaddr() function is an IPv6 address.  */
 #define EXTRA_ARGS_VALUE \
@@ -311,3 +315,116 @@ DB_LOOKUP (hostbyaddr, ,,
                 && ! memcmp (addr, result->h_addr_list[0], len))
               break;
           }, const void *addr, socklen_t len, int af)
+#undef EXTRA_ARGS_VALUE
+
+
+enum nss_status
+_nss_files_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
+                            char *buffer, size_t buflen, int *errnop,
+                            int *herrnop, int32_t *ttlp)
+{
+  __libc_lock_lock (lock);
+
+  /* Reset file pointer to beginning or open file.  */
+  enum nss_status status = internal_setent (keep_stream);
+
+  if (status == NSS_STATUS_SUCCESS)
+    {
+      /* Tell getent function that we have repositioned the file pointer.  */
+      last_use = getby;
+
+      bool any = false;
+      bool got_canon = false;
+      while (1)
+       {
+         /* Align the buffer for the next record.  */
+         uintptr_t pad = (-(uintptr_t) buffer
+                          % __alignof__ (struct hostent_data));
+         buffer += pad;
+         buflen = buflen > pad ? buflen - pad : 0;
+
+         struct hostent result;
+         status = internal_getent (&result, buffer, buflen, errnop
+                                   H_ERRNO_ARG, AF_UNSPEC, 0);
+         if (status != NSS_STATUS_SUCCESS)
+           break;
+
+         int naliases = 0;
+         if (__strcasecmp (name, result.h_name) != 0)
+           {
+             for (; result.h_aliases[naliases] != NULL; ++naliases)
+               if (! __strcasecmp (name, result.h_aliases[naliases]))
+                 break;
+             if (result.h_aliases[naliases] == NULL)
+               continue;
+
+             /* We know this alias exist.  Count it.  */
+             ++naliases;
+           }
+
+         /* Determine how much memory has been used so far.  */
+         // XXX It is not necessary to preserve the aliases array
+         while (result.h_aliases[naliases] != NULL)
+           ++naliases;
+         char *bufferend = (char *) &result.h_aliases[naliases + 1];
+         assert (buflen >= bufferend - buffer);
+         buflen -= bufferend - buffer;
+         buffer = bufferend;
+
+         /* We found something.  */
+         any = true;
+
+         /* Create the record the caller expects.  There is only one
+            address.  */
+         assert (result.h_addr_list[1] == NULL);
+         if (*pat == NULL)
+           {
+             uintptr_t pad = (-(uintptr_t) buffer
+                              % __alignof__ (struct gaih_addrtuple));
+             buffer += pad;
+             buflen = buflen > pad ? buflen - pad : 0;
+
+             if (__builtin_expect (buflen < sizeof (struct gaih_addrtuple),
+                                   0))
+               {
+                 *errnop = ERANGE;
+                 *herrnop = NETDB_INTERNAL;
+                 status = NSS_STATUS_TRYAGAIN;
+                 break;
+               }
+
+             *pat = (struct gaih_addrtuple *) buffer;
+             buffer += sizeof (struct gaih_addrtuple);
+             buflen -= sizeof (struct gaih_addrtuple);
+           }
+
+         (*pat)->next = NULL;
+         (*pat)->name = got_canon ? NULL : result.h_name;
+         got_canon = true;
+         (*pat)->family = result.h_addrtype;
+         memcpy ((*pat)->addr, result.h_addr_list[0], result.h_length);
+         (*pat)->scopeid = 0;
+
+         pat = &((*pat)->next);
+
+         /* If we only look for the first matching entry we are done.  */
+         if ((_res_hconf.flags & HCONF_FLAG_MULTI) == 0)
+           break;
+       }
+
+      /* If we have to look for multiple records and found one, this
+        is a success.  */
+      if (status == NSS_STATUS_NOTFOUND && any)
+       {
+         assert ((_res_hconf.flags & HCONF_FLAG_MULTI) != 0);
+         status = NSS_STATUS_SUCCESS;
+       }
+
+      if (! keep_stream)
+       internal_endent ();
+    }
+
+  __libc_lock_unlock (lock);
+
+  return status;
+}
diff --git a/po/lt.po b/po/lt.po
new file mode 100644 (file)
index 0000000..3556ba0
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,7082 @@
+# translation of libc-2.7 to Lithuanian
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
+#
+# Gintautas Miliauskas <gintas@akl.lt>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: libc-2.7\n"
+"POT-Creation-Date: 2007-10-15 21:18-0700\n"
+"PO-Revision-Date: 2008-05-14 01:35+0300\n"
+"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: argp/argp-help.c:228
+#, c-format
+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+msgstr "%.*s: ARGP_HELP_FMT parametrui rekia reikšmės"
+
+#: argp/argp-help.c:238
+#, c-format
+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+msgstr "%.*s: Nežinomas ARGP_HELP_FMT parametras"
+
+#: argp/argp-help.c:251
+#, c-format
+msgid "Garbage in ARGP_HELP_FMT: %s"
+msgstr "Šiukšlės ARGP_HELP_FMT: %s"
+
+#: argp/argp-help.c:1215
+msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+msgstr "Būtini ar nebūtini argumentai ilgiems parametrams atitinkamai būtini ar nebūtini trumpoms jų formoms."
+
+#: argp/argp-help.c:1601
+msgid "Usage:"
+msgstr "Naudojimas:"
+
+#: argp/argp-help.c:1605
+msgid "  or: "
+msgstr "  arba: "
+
+#: argp/argp-help.c:1617
+msgid " [OPTION...]"
+msgstr "[PARAMETRAS...]"
+
+#: argp/argp-help.c:1644
+#, fuzzy, c-format
+msgid "Try `%s --help' or `%s --usage' for more information.\n"
+msgstr "Pabandykite „memusage --help“, jei norite gauti daugiau informacijos."
+
+#: argp/argp-help.c:1672
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Praneškite apie klaidas %s.\n"
+
+#: argp/argp-parse.c:102
+msgid "Give this help list"
+msgstr "Pateikti šį pagalbinį sąrašą"
+
+#: argp/argp-parse.c:103
+msgid "Give a short usage message"
+msgstr "Pateikti trumpą pranešimą apie naudojimą"
+
+#: argp/argp-parse.c:104
+msgid "Set the program name"
+msgstr "Nustatyti programos pavadinimą"
+
+#: argp/argp-parse.c:106
+msgid "Hang for SECS seconds (default 3600)"
+msgstr "Laukti SECS sekundžių (standartiškai 3600)"
+
+#: argp/argp-parse.c:167
+msgid "Print program version"
+msgstr "Išspausdinti programos versiją"
+
+#: argp/argp-parse.c:183
+msgid "(PROGRAM ERROR) No version known!?"
+msgstr "(PROGRAM ERROR) Nežinoma joka versija!?"
+
+#: argp/argp-parse.c:623
+#, c-format
+msgid "%s: Too many arguments\n"
+msgstr "%s: Per daug argumentų\n"
+
+#: argp/argp-parse.c:766
+#, fuzzy
+msgid "(PROGRAM ERROR) Option should have been recognized!?"
+msgstr "(PROGRAM ERROR) Nežinoma joka versija!?"
+
+#: assert/assert-perr.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
+msgstr "%s%s%s:%u: %s%sNetikėta klaida: %s.\n"
+
+#: assert/assert.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+msgstr "%s%s%s:%u: %s%sPrielaida „%s“ pažeista.\n"
+
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+msgid "NAME"
+msgstr "PAVADINIMAS"
+
+#: catgets/gencat.c:111
+msgid "Create C header file NAME containing symbol definitions"
+msgstr "Sukurti C antraščių failą duotu PAVADINIMU, kuriame surašyti simbolių apibrėžimus"
+
+#: catgets/gencat.c:113
+msgid "Do not use existing catalog, force new output file"
+msgstr "Nenaudoti egzistuojančio katalogo, kurti naują išvedimo failą"
+
+#: catgets/gencat.c:114 nss/makedb.c:61
+msgid "Write output to file NAME"
+msgstr "Išvesti į failą duotu PAVADINIMU"
+
+#: catgets/gencat.c:119
+msgid ""
+"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input.  If OUTPUT-FILE\n"
+"is -, output is written to standard output.\n"
+msgstr ""
+
+#: catgets/gencat.c:124
+msgid ""
+"-o OUTPUT-FILE [INPUT-FILE]...\n"
+"[OUTPUT-FILE [INPUT-FILE]...]"
+msgstr ""
+"-o IŠVEDIMO-FAILAS [DUOMENŲ-FAILAS]...\n"
+"[IŠVEDIMO-FAILAS [DUOMENŲ-FAILAS]...]"
+
+#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
+#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
+#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+msgid ""
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+
+#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
+#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
+#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
+#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
+#: posix/getconf.c:1012
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"This is free software; see the source for copying conditions.  There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+
+#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
+#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
+#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
+#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Parašė %s.\n"
+
+#: catgets/gencat.c:282
+msgid "*standard input*"
+msgstr "*standartinis įvedimas*"
+
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: nss/makedb.c:170
+#, fuzzy, c-format
+msgid "cannot open input file `%s'"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: catgets/gencat.c:417 catgets/gencat.c:494
+#, fuzzy
+msgid "illegal set number"
+msgstr "nekorektiška eilutė"
+
+#: catgets/gencat.c:444
+msgid "duplicate set definition"
+msgstr "pakartotinis rinkinio apibrėžimas"
+
+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+msgid "this is the first definition"
+msgstr "šis apibrėžimas pirmasis"
+
+#: catgets/gencat.c:522
+#, c-format
+msgid "unknown set `%s'"
+msgstr "nežinomas rinkinys „%s“"
+
+#: catgets/gencat.c:563
+#, fuzzy
+msgid "invalid quote character"
+msgstr "netaisyklingas kabučių simbolis"
+
+#: catgets/gencat.c:576
+#, c-format
+msgid "unknown directive `%s': line ignored"
+msgstr "nežinoma direktyva „%s“: eilutė ignoruota"
+
+#: catgets/gencat.c:621
+msgid "duplicated message number"
+msgstr "pakartotas pranešimo numeris"
+
+#: catgets/gencat.c:674
+msgid "duplicated message identifier"
+msgstr "pakartotas pranešimo identifikatorius"
+
+#: catgets/gencat.c:731
+#, fuzzy
+msgid "invalid character: message ignored"
+msgstr "netaisyklingas simbolis: pranešimas ignoruotas"
+
+#: catgets/gencat.c:774
+#, fuzzy
+msgid "invalid line"
+msgstr "nekorektiška eilutė"
+
+#: catgets/gencat.c:828
+msgid "malformed line ignored"
+msgstr "nekorektiška eilutė ignoruota"
+
+#: catgets/gencat.c:992 catgets/gencat.c:1033 nss/makedb.c:183
+#, fuzzy, c-format
+msgid "cannot open output file `%s'"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: catgets/gencat.c:1195 locale/programs/linereader.c:560
+#, fuzzy
+msgid "invalid escape sequence"
+msgstr "netaisyklingas naudotojas"
+
+#: catgets/gencat.c:1217
+msgid "unterminated message"
+msgstr "neužbaigtas pranešimas"
+
+#: catgets/gencat.c:1241
+#, fuzzy, c-format
+msgid "while opening old catalog file"
+msgstr "rašant duomenų bazės failą"
+
+#: catgets/gencat.c:1332
+#, fuzzy, c-format
+msgid "conversion modules not available"
+msgstr "RPC programa nerasta"
+
+#: catgets/gencat.c:1358
+#, c-format
+msgid "cannot determine escape character"
+msgstr ""
+
+#: debug/pcprofiledump.c:53
+msgid "Don't buffer output"
+msgstr ""
+
+#: debug/pcprofiledump.c:58
+msgid "Dump information generated by PC profiling."
+msgstr ""
+
+#: debug/pcprofiledump.c:61
+msgid "[FILE]"
+msgstr "[FAILAS]"
+
+#: debug/pcprofiledump.c:104
+#, fuzzy, c-format
+msgid "cannot open input file"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: debug/pcprofiledump.c:111
+#, c-format
+msgid "cannot read header"
+msgstr "nepavyko perskaityti antraštės"
+
+#: debug/pcprofiledump.c:175
+#, fuzzy, c-format
+msgid "invalid pointer size"
+msgstr "netaisyklingas naudotojas"
+
+#: debug/xtrace.sh:27 debug/xtrace.sh:45
+msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
+msgstr ""
+
+#: debug/xtrace.sh:33
+#, fuzzy
+msgid "Try \\`xtrace --help' for more information.\\n"
+msgstr "Pabandykite „memusage --help“, jei norite gauti daugiau informacijos."
+
+#: debug/xtrace.sh:39
+#, fuzzy
+msgid "xtrace: option \\`$1' requires an argument.\\n"
+msgstr "memusage: parametrui „$1“ reikia argumento"
+
+#: debug/xtrace.sh:46
+msgid ""
+"Trace execution of program by printing currently executed function.\n"
+"\n"
+"     --data=FILE          Don't run the program, just print the data from FILE.\n"
+"\n"
+"   -?,--help              Print this help and exit\n"
+"      --usage             Give a short usage message\n"
+"   -V,--version           Print version information and exit\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\\n"
+msgstr ""
+
+#: debug/xtrace.sh:125
+#, fuzzy
+msgid "xtrace: unrecognized option \\`$1'\\n"
+msgstr "%s: neatpažintas parametras „--%s“\n"
+
+#: debug/xtrace.sh:138
+msgid "No program name given\\n"
+msgstr "Nenurodytas programos vardas\\n"
+
+#: debug/xtrace.sh:146
+#, sh-format
+msgid "executable \\`$program' not found\\n"
+msgstr ""
+
+#: debug/xtrace.sh:150
+#, sh-format
+msgid "\\`$program' is no executable\\n"
+msgstr ""
+
+#: dlfcn/dlinfo.c:64
+msgid "RTLD_SELF used in code not dynamically loaded"
+msgstr "RTLD_SELF panaudotas ne dinamiškai įkeltame kode"
+
+#: dlfcn/dlinfo.c:73
+msgid "unsupported dlinfo request"
+msgstr "nepalaikoma dlinfo užklausa"
+
+#: dlfcn/dlmopen.c:64
+#, fuzzy
+msgid "invalid namespace"
+msgstr "netaisyklingas kvietėjas"
+
+#: dlfcn/dlmopen.c:69
+msgid "invalid mode"
+msgstr "netaisyklinga veiksena"
+
+#: dlfcn/dlopen.c:64
+#, fuzzy
+msgid "invalid mode parameter"
+msgstr "netaisyklinga veiksena"
+
+#: elf/cache.c:69
+#, fuzzy
+msgid "unknown"
+msgstr "%s: adresas nežinomas"
+
+#: elf/cache.c:112
+msgid "Unknown OS"
+msgstr "Nežinoma OS"
+
+#: elf/cache.c:117
+#, c-format
+msgid ", OS ABI: %s %d.%d.%d"
+msgstr ""
+
+#: elf/cache.c:134 elf/ldconfig.c:1270
+#, c-format
+msgid "Can't open cache file %s\n"
+msgstr "Nepavyko atverti podėlio failo %s\n"
+
+#: elf/cache.c:148
+#, fuzzy, c-format
+msgid "mmap of cache file failed.\n"
+msgstr "Nepavyko atverti podėlio failo %s\n"
+
+#: elf/cache.c:152 elf/cache.c:166
+#, c-format
+msgid "File is not a cache file.\n"
+msgstr "Failas nėra podėlio failas.\n"
+
+#: elf/cache.c:199 elf/cache.c:209
+#, c-format
+msgid "%d libs found in cache `%s'\n"
+msgstr "Rasta %d bibliotekų podėlyje „%s“\n"
+
+#: elf/cache.c:403
+#, fuzzy, c-format
+msgid "Can't create temporary cache file %s"
+msgstr "Nepavyko atverti podėlio failo %s\n"
+
+#: elf/cache.c:411 elf/cache.c:421 elf/cache.c:425 elf/cache.c:430
+#, c-format
+msgid "Writing of cache data failed"
+msgstr ""
+
+#: elf/cache.c:435
+#, fuzzy, c-format
+msgid "Changing access rights of %s to %#o failed"
+msgstr "%s pervardinimas į %s nesėkmingas"
+
+#: elf/cache.c:440
+#, c-format
+msgid "Renaming of %s to %s failed"
+msgstr "%s pervardinimas į %s nesėkmingas"
+
+#: elf/dl-close.c:378 elf/dl-open.c:460
+#, fuzzy
+msgid "cannot create scope list"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: elf/dl-close.c:724
+msgid "shared object not open"
+msgstr "bendrasis objektas neatvertas"
+
+#: elf/dl-deps.c:114
+msgid "DST not allowed in SUID/SGID programs"
+msgstr "DST neleidžiamas SUID/SGID programose"
+
+#: elf/dl-deps.c:127 elf/dl-open.c:282
+msgid "empty dynamic string token substitution"
+msgstr ""
+
+#: elf/dl-deps.c:133
+#, c-format
+msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
+msgstr ""
+
+#: elf/dl-deps.c:474
+#, fuzzy
+msgid "cannot allocate dependency list"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: elf/dl-deps.c:510 elf/dl-deps.c:565
+#, fuzzy
+msgid "cannot allocate symbol search list"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: elf/dl-deps.c:550
+msgid "Filters not supported with LD_TRACE_PRELINKING"
+msgstr ""
+
+#: elf/dl-error.c:77
+msgid "DYNAMIC LINKER BUG!!!"
+msgstr ""
+
+#: elf/dl-error.c:124
+msgid "error while loading shared libraries"
+msgstr "klaida įkeliant bendrąsias bibliotekas"
+
+#: elf/dl-fptr.c:88
+msgid "cannot map pages for fdesc table"
+msgstr ""
+
+#: elf/dl-fptr.c:192
+msgid "cannot map pages for fptr table"
+msgstr ""
+
+#: elf/dl-fptr.c:221
+msgid "internal error: symidx out of range of fptr table"
+msgstr ""
+
+#: elf/dl-load.c:372
+#, fuzzy
+msgid "cannot allocate name record"
+msgstr "Nepavyko išskirti atminties"
+
+#: elf/dl-load.c:474 elf/dl-load.c:582 elf/dl-load.c:667 elf/dl-load.c:780
+#, fuzzy
+msgid "cannot create cache for search path"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: elf/dl-load.c:565
+msgid "cannot create RUNPATH/RPATH copy"
+msgstr ""
+
+#: elf/dl-load.c:653
+#, fuzzy
+msgid "cannot create search path array"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: elf/dl-load.c:864
+#, fuzzy
+msgid "cannot stat shared object"
+msgstr "nepavyko atverti bendrojo objekto failo"
+
+#: elf/dl-load.c:934
+#, fuzzy
+msgid "cannot open zero fill device"
+msgstr "nepavyko atverti duomenų failo „%s“"
+
+#: elf/dl-load.c:979 elf/dl-load.c:2224
+#, fuzzy
+msgid "cannot create shared object descriptor"
+msgstr "nepavyko užverti failo deskriptoriaus"
+
+#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+msgid "cannot read file data"
+msgstr "nepavyko nuskaityti failo duomenų"
+
+#: elf/dl-load.c:1042
+msgid "ELF load command alignment not page-aligned"
+msgstr ""
+
+#: elf/dl-load.c:1049
+msgid "ELF load command address/offset not properly aligned"
+msgstr ""
+
+#: elf/dl-load.c:1132
+msgid "cannot allocate TLS data structures for initial thread"
+msgstr ""
+
+#: elf/dl-load.c:1155
+msgid "cannot handle TLS data"
+msgstr "nepavyko apdoroti TLS duomenų"
+
+#: elf/dl-load.c:1174
+msgid "object file has no loadable segments"
+msgstr "objektiniame faile nėra įkeliamų segmentų"
+
+#: elf/dl-load.c:1210
+msgid "failed to map segment from shared object"
+msgstr ""
+
+#: elf/dl-load.c:1236
+#, fuzzy
+msgid "cannot dynamically load executable"
+msgstr "\tne dinaminis paleidžiamasis failas"
+
+#: elf/dl-load.c:1298
+#, fuzzy
+msgid "cannot change memory protections"
+msgstr "nepavyko išskirti atminties programos antraštei"
+
+#: elf/dl-load.c:1317
+msgid "cannot map zero-fill pages"
+msgstr ""
+
+#: elf/dl-load.c:1331
+msgid "object file has no dynamic section"
+msgstr "objektiniame faile nėra dinaminės sekcijos"
+
+#: elf/dl-load.c:1354
+msgid "shared object cannot be dlopen()ed"
+msgstr "bendrasis objektas negali būti atvertas su dlopen()"
+
+#: elf/dl-load.c:1367
+msgid "cannot allocate memory for program header"
+msgstr "nepavyko išskirti atminties programos antraštei"
+
+#: elf/dl-load.c:1384 elf/dl-open.c:218
+#, fuzzy
+msgid "invalid caller"
+msgstr "netaisyklingas kvietėjas"
+
+#: elf/dl-load.c:1423
+msgid "cannot enable executable stack as shared object requires"
+msgstr ""
+
+#: elf/dl-load.c:1436
+msgid "cannot close file descriptor"
+msgstr "nepavyko užverti failo deskriptoriaus"
+
+#: elf/dl-load.c:1478
+msgid "cannot create searchlist"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: elf/dl-load.c:1656
+msgid "file too short"
+msgstr "failas per trumpas"
+
+#: elf/dl-load.c:1685
+msgid "invalid ELF header"
+msgstr "netaisyklinga ELF antraštė"
+
+#: elf/dl-load.c:1697
+#, fuzzy
+msgid "ELF file data encoding not big-endian"
+msgstr "ELF failo duomenų koduotė ne big-endian"
+
+#: elf/dl-load.c:1699
+#, fuzzy
+msgid "ELF file data encoding not little-endian"
+msgstr "ELF failo duomenų koduotė ne big-endian"
+
+#: elf/dl-load.c:1703
+msgid "ELF file version ident does not match current one"
+msgstr "ELF failo versijos identifikatorius neatitinka esamo"
+
+#: elf/dl-load.c:1707
+msgid "ELF file OS ABI invalid"
+msgstr "ELF failo OS ABI netaisyklingas"
+
+#: elf/dl-load.c:1709
+msgid "ELF file ABI version invalid"
+msgstr "ELF failo ABI versioja netaisyklinga"
+
+#: elf/dl-load.c:1712
+#, fuzzy
+msgid "internal error"
+msgstr "Vardų paieškos vidinė klaida"
+
+#: elf/dl-load.c:1719
+msgid "ELF file version does not match current one"
+msgstr "ELF failo versija neatitinka esamos"
+
+#: elf/dl-load.c:1727
+msgid "only ET_DYN and ET_EXEC can be loaded"
+msgstr ""
+
+#: elf/dl-load.c:1733
+msgid "ELF file's phentsize not the expected size"
+msgstr ""
+
+#: elf/dl-load.c:2240
+msgid "wrong ELF class: ELFCLASS64"
+msgstr "klaidinga ELF klasė: ELFCLASS64"
+
+#: elf/dl-load.c:2241
+msgid "wrong ELF class: ELFCLASS32"
+msgstr "klaidinga ELF klasė: ELFCLASS32"
+
+#: elf/dl-load.c:2244
+#, fuzzy
+msgid "cannot open shared object file"
+msgstr "nepavyko atverti bendrojo objekto failo"
+
+#: elf/dl-lookup.c:356
+msgid "relocation error"
+msgstr "relokacijos klaida"
+
+#: elf/dl-lookup.c:384
+msgid "symbol lookup error"
+msgstr "simbolio paieškos klaida"
+
+#: elf/dl-open.c:114
+msgid "cannot extend global scope"
+msgstr ""
+
+#: elf/dl-open.c:512
+msgid "TLS generation counter wrapped!  Please report this."
+msgstr "TLS kartų skaitiklis persivertė!  Prašytume apie tai pranešti."
+
+#: elf/dl-open.c:549
+#, fuzzy
+msgid "invalid mode for dlopen()"
+msgstr "netaisyklinga veiksena dlopen()"
+
+#: elf/dl-open.c:566
+msgid "no more namespaces available for dlmopen()"
+msgstr ""
+
+#: elf/dl-open.c:579
+#, fuzzy
+msgid "invalid target namespace in dlmopen()"
+msgstr "netaisyklinga veiksena dlopen()"
+
+#: elf/dl-reloc.c:54
+#, fuzzy
+msgid "cannot allocate memory in static TLS block"
+msgstr "Nepavyko išskirti atminties"
+
+#: elf/dl-reloc.c:196
+msgid "cannot make segment writable for relocation"
+msgstr ""
+
+#: elf/dl-reloc.c:277
+#, c-format
+msgid "%s: no PLTREL found in object %s\n"
+msgstr "%s: objekte %s nerasta PLTREL\n"
+
+#: elf/dl-reloc.c:288
+#, c-format
+msgid "%s: out of memory to store relocation results for %s\n"
+msgstr ""
+
+#: elf/dl-reloc.c:304
+msgid "cannot restore segment prot after reloc"
+msgstr ""
+
+#: elf/dl-reloc.c:329
+msgid "cannot apply additional memory protection after relocation"
+msgstr ""
+
+#: elf/dl-sym.c:162
+#, fuzzy
+msgid "RTLD_NEXT used in code not dynamically loaded"
+msgstr "RTLD_SELF panaudotas ne dinamiškai įkeltame kode"
+
+#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#, fuzzy
+msgid "cannot create capability list"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: elf/dl-tls.c:825
+#, fuzzy
+msgid "cannot create TLS data structures"
+msgstr "nepavyko apdoroti TLS duomenų"
+
+#: elf/dl-version.c:303
+#, fuzzy
+msgid "cannot allocate version reference table"
+msgstr "nepavyko išskirti atminties programos antraštei"
+
+#: elf/ldconfig.c:138
+msgid "Print cache"
+msgstr "Spausdinti podėlį"
+
+#: elf/ldconfig.c:139
+msgid "Generate verbose messages"
+msgstr "Generuoti išsamius pranešimus"
+
+#: elf/ldconfig.c:140
+msgid "Don't build cache"
+msgstr "Nekurti podėlio"
+
+#: elf/ldconfig.c:141
+msgid "Don't generate links"
+msgstr "Nekurti nuorodų"
+
+#: elf/ldconfig.c:142
+msgid "Change to and use ROOT as root directory"
+msgstr "Naudoti ŠAKNĮ kaip šakninį aplanką"
+
+#: elf/ldconfig.c:142
+msgid "ROOT"
+msgstr "ŠAKNIS"
+
+#: elf/ldconfig.c:143
+msgid "CACHE"
+msgstr "PODĖLIS"
+
+#: elf/ldconfig.c:143
+msgid "Use CACHE as cache file"
+msgstr "Naudoti PODĖLĮ kaip podėlio failą"
+
+#: elf/ldconfig.c:144
+msgid "CONF"
+msgstr "KONF"
+
+#: elf/ldconfig.c:144
+msgid "Use CONF as configuration file"
+msgstr "Naudoti KONF kaip konfigūracijos failą"
+
+#: elf/ldconfig.c:145
+msgid "Only process directories specified on the command line.  Don't build cache."
+msgstr "Apdoroti tik aplankus, nurodytus komandų eilutėje. Nekurti podėlio."
+
+#: elf/ldconfig.c:146
+msgid "Manually link individual libraries."
+msgstr "Rankiniu būdu susaistyti (link) atskiras bibliotekas."
+
+#: elf/ldconfig.c:147
+msgid "FORMAT"
+msgstr "FORMATAS"
+
+#: elf/ldconfig.c:147
+msgid "Format to use: new, old or compat (default)"
+msgstr "Formatas: new (naujas), old (senas) arba compat (numatytasis)"
+
+#: elf/ldconfig.c:148
+msgid "Ignore auxiliary cache file"
+msgstr "Ignoruoti pagalbinį podėlio failą"
+
+#: elf/ldconfig.c:156
+msgid "Configure Dynamic Linker Run Time Bindings."
+msgstr ""
+
+#: elf/ldconfig.c:319
+#, fuzzy, c-format
+msgid "Path `%s' given more than once"
+msgstr "%s: laukas „%s“ apibrėžtas daugiau negu vieną kartą"
+
+#: elf/ldconfig.c:359
+#, c-format
+msgid "%s is not a known library type"
+msgstr "%s nėra žinomas bibliotekos tipas"
+
+#: elf/ldconfig.c:384
+#, fuzzy, c-format
+msgid "Can't stat %s"
+msgstr "Nepavyko rasti %s"
+
+#: elf/ldconfig.c:458
+#, fuzzy, c-format
+msgid "Can't stat %s\n"
+msgstr "Nepavyko susaistyti (link) %s su %s"
+
+#: elf/ldconfig.c:468
+#, fuzzy, c-format
+msgid "%s is not a symbolic link\n"
+msgstr "simbolinė nuoroda"
+
+#: elf/ldconfig.c:487
+#, fuzzy, c-format
+msgid "Can't unlink %s"
+msgstr "Nepavyko rasti %s"
+
+#: elf/ldconfig.c:493
+#, c-format
+msgid "Can't link %s to %s"
+msgstr "Nepavyko susaistyti (link) %s su %s"
+
+#: elf/ldconfig.c:499
+msgid " (changed)\n"
+msgstr " (pakeista)\n"
+
+#: elf/ldconfig.c:501
+msgid " (SKIPPED)\n"
+msgstr " (PRALEISTA)\n"
+
+#: elf/ldconfig.c:556
+#, c-format
+msgid "Can't find %s"
+msgstr "Nepavyko rasti %s"
+
+#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#, fuzzy, c-format
+msgid "Cannot lstat %s"
+msgstr "%s: nepavyko perskaityti: %s"
+
+#: elf/ldconfig.c:579
+#, fuzzy, c-format
+msgid "Ignored file %s since it is not a regular file."
+msgstr "ne paprastas failas"
+
+#: elf/ldconfig.c:588
+#, c-format
+msgid "No link created since soname could not be found for %s"
+msgstr ""
+
+#: elf/ldconfig.c:671
+#, c-format
+msgid "Can't open directory %s"
+msgstr "Nepavyko atverti aplanko %s"
+
+#: elf/ldconfig.c:759
+#, fuzzy, c-format
+msgid "Cannot stat %s"
+msgstr "%s: nepavyko perskaityti: %s"
+
+#: elf/ldconfig.c:814 elf/readlib.c:91
+#, fuzzy, c-format
+msgid "Input file %s not found.\n"
+msgstr "Duomenų failas %s nerastas.\n"
+
+#: elf/ldconfig.c:888
+#, c-format
+msgid "libc5 library %s in wrong directory"
+msgstr "libc5 biblioteka %s ne tame aplanke"
+
+#: elf/ldconfig.c:891
+#, c-format
+msgid "libc6 library %s in wrong directory"
+msgstr "libc6 biblioteka %s ne tame aplanke"
+
+#: elf/ldconfig.c:894
+#, c-format
+msgid "libc4 library %s in wrong directory"
+msgstr "libc4 biblioteka %s ne tame aplanke"
+
+#: elf/ldconfig.c:922
+#, c-format
+msgid "libraries %s and %s in directory %s have same soname but different type."
+msgstr ""
+
+#: elf/ldconfig.c:1031
+#, c-format
+msgid "Can't open configuration file %s"
+msgstr "Nepavyko atverti konfigūracijos failo %s"
+
+#: elf/ldconfig.c:1095
+#, c-format
+msgid "%s:%u: bad syntax in hwcap line"
+msgstr "%s:%u: klaidinga sintaksė hwcap eilutėje"
+
+#: elf/ldconfig.c:1101
+#, c-format
+msgid "%s:%u: hwcap index %lu above maximum %u"
+msgstr ""
+
+#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#, c-format
+msgid "%s:%u: hwcap index %lu already defined as %s"
+msgstr ""
+
+#: elf/ldconfig.c:1119
+#, c-format
+msgid "%s:%u: duplicate hwcap %lu %s"
+msgstr ""
+
+#: elf/ldconfig.c:1141
+#, c-format
+msgid "need absolute file name for configuration file when using -r"
+msgstr ""
+
+#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#, c-format
+msgid "memory exhausted"
+msgstr "baigėsi atmintis"
+
+#: elf/ldconfig.c:1178
+#, fuzzy, c-format
+msgid "%s:%u: cannot read directory %s"
+msgstr "nepavyko atverti aplanko %s"
+
+#: elf/ldconfig.c:1223
+#, c-format
+msgid "relative path `%s' used to build cache"
+msgstr ""
+
+#: elf/ldconfig.c:1249
+#, fuzzy, c-format
+msgid "Can't chdir to /"
+msgstr "Nepavyko susaistyti (link) %s su %s"
+
+#: elf/ldconfig.c:1291
+#, c-format
+msgid "Can't open cache file directory %s\n"
+msgstr "Nepavyko atverti podėlio failo aplanko %s\n"
+
+#: elf/ldd.bash.in:43
+msgid "Written by %s and %s.\n"
+msgstr "Parašė %s ir %s.\n"
+
+#: elf/ldd.bash.in:48
+msgid ""
+"Usage: ldd [OPTION]... FILE...\n"
+"      --help              print this help and exit\n"
+"      --version           print version information and exit\n"
+"  -d, --data-relocs       process data relocations\n"
+"  -r, --function-relocs   process data and function relocations\n"
+"  -u, --unused            print unused direct dependencies\n"
+"  -v, --verbose           print all information\n"
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>."
+msgstr ""
+
+#: elf/ldd.bash.in:80
+msgid "ldd: option \\`$1' is ambiguous"
+msgstr "ldd: parametras „$1“ dviprasmis"
+
+#: elf/ldd.bash.in:87
+msgid "unrecognized option"
+msgstr "neatpažintas parametras"
+
+#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#, fuzzy
+msgid "Try \\`ldd --help' for more information."
+msgstr "Pabandykite „memusage --help“, jei norite gauti daugiau informacijos."
+
+#: elf/ldd.bash.in:125
+msgid "missing file arguments"
+msgstr "trūksta failo argumento"
+
+#. TRANS No such file or directory.  This is a ``file doesn't exist'' error
+#. TRANS for ordinary files that are referenced in contexts where they are
+#. TRANS expected to already exist.
+#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+msgid "No such file or directory"
+msgstr "Toks failas ar aplankas neegzistuoja"
+
+#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#, fuzzy
+msgid "not regular file"
+msgstr "paprastas failas"
+
+#: elf/ldd.bash.in:154
+msgid "warning: you do not have execution permission for"
+msgstr "įspėjimas: neturite teisės paleisti"
+
+#: elf/ldd.bash.in:183
+msgid "\tnot a dynamic executable"
+msgstr "\tne dinaminis paleidžiamasis failas"
+
+#: elf/ldd.bash.in:191
+msgid "exited with unknown exit code"
+msgstr "išėjo su nežinomu išėjimo kodu"
+
+#: elf/ldd.bash.in:196
+msgid "error: you do not have read permission for"
+msgstr "klaida: neturite skaitymo teisių"
+
+#: elf/readelflib.c:35
+#, c-format
+msgid "file %s is truncated\n"
+msgstr ""
+
+#: elf/readelflib.c:67
+#, c-format
+msgid "%s is a 32 bit ELF file.\n"
+msgstr "%s yra 32 bitų ELF failas.\n"
+
+#: elf/readelflib.c:69
+#, c-format
+msgid "%s is a 64 bit ELF file.\n"
+msgstr "%s yra 64 bitų ELF failas.\n"
+
+#: elf/readelflib.c:71
+#, c-format
+msgid "Unknown ELFCLASS in file %s.\n"
+msgstr "Netaisyklinga ELFCLASS faile %s.\n"
+
+#: elf/readelflib.c:78
+#, c-format
+msgid "%s is not a shared object file (Type: %d).\n"
+msgstr ""
+
+#: elf/readelflib.c:109
+#, c-format
+msgid "more than one dynamic segment\n"
+msgstr "daugiau negu vienas dinaminis segmentas\n"
+
+#: elf/readlib.c:97
+#, fuzzy, c-format
+msgid "Cannot fstat file %s.\n"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: elf/readlib.c:108
+#, c-format
+msgid "File %s is empty, not checked."
+msgstr "Failas %s tuščias, todėl netikrintas."
+
+#: elf/readlib.c:114
+#, c-format
+msgid "File %s is too small, not checked."
+msgstr "Failas %s per mažas, todėl netikrintas."
+
+#: elf/readlib.c:124
+#, fuzzy, c-format
+msgid "Cannot mmap file %s.\n"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: elf/readlib.c:162
+#, c-format
+msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
+msgstr "%s nėra ELF failas - magiškieji baitai failo pradžioje neteisingi.\n"
+
+#: elf/sprof.c:77
+msgid "Output selection:"
+msgstr ""
+
+#: elf/sprof.c:79
+msgid "print list of count paths and their number of use"
+msgstr ""
+
+#: elf/sprof.c:81
+msgid "generate flat profile with counts and ticks"
+msgstr ""
+
+#: elf/sprof.c:82
+msgid "generate call graph"
+msgstr ""
+
+#: elf/sprof.c:89
+msgid ""
+"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+
+#: elf/sprof.c:94
+msgid "SHOBJ [PROFDATA]"
+msgstr ""
+
+#: elf/sprof.c:400
+#, fuzzy, c-format
+msgid "failed to load shared object `%s'"
+msgstr "nepavyko atverti bendrojo objekto failo"
+
+#: elf/sprof.c:409
+#, fuzzy, c-format
+msgid "cannot create internal descriptors"
+msgstr "nepavyko užverti failo deskriptoriaus"
+
+#: elf/sprof.c:528
+#, fuzzy, c-format
+msgid "Reopening shared object `%s' failed"
+msgstr "nepavyko atverti bendrojo objekto failo"
+
+#: elf/sprof.c:535 elf/sprof.c:629
+#, fuzzy, c-format
+msgid "reading of section headers failed"
+msgstr "%s pervardinimas į %s nesėkmingas"
+
+#: elf/sprof.c:543 elf/sprof.c:637
+#, c-format
+msgid "reading of section header string table failed"
+msgstr ""
+
+#: elf/sprof.c:569
+#, c-format
+msgid "*** Cannot read debuginfo file name: %m\n"
+msgstr ""
+
+#: elf/sprof.c:589
+#, fuzzy, c-format
+msgid "cannot determine file name"
+msgstr "nepavyko nuskaityti failo duomenų"
+
+#: elf/sprof.c:622
+#, fuzzy, c-format
+msgid "reading of ELF header failed"
+msgstr "%s pervardinimas į %s nesėkmingas"
+
+#: elf/sprof.c:658
+#, c-format
+msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
+msgstr ""
+
+#: elf/sprof.c:688
+#, fuzzy, c-format
+msgid "failed to load symbol data"
+msgstr "failas per trumpas"
+
+#: elf/sprof.c:755
+#, fuzzy, c-format
+msgid "cannot load profiling data"
+msgstr "nepavyko nuskaityti failo duomenų"
+
+#: elf/sprof.c:764
+#, fuzzy, c-format
+msgid "while stat'ing profiling data file"
+msgstr "rašant duomenų bazės failą"
+
+#: elf/sprof.c:772
+#, c-format
+msgid "profiling data file `%s' does not match shared object `%s'"
+msgstr ""
+
+#: elf/sprof.c:783
+#, c-format
+msgid "failed to mmap the profiling data file"
+msgstr ""
+
+#: elf/sprof.c:791
+#, fuzzy, c-format
+msgid "error while closing the profiling data file"
+msgstr "klaida užveriant išvedimo failą"
+
+#: elf/sprof.c:800 elf/sprof.c:870
+#, fuzzy, c-format
+msgid "cannot create internal descriptor"
+msgstr "nepavyko užverti failo deskriptoriaus"
+
+#: elf/sprof.c:846
+#, c-format
+msgid "`%s' is no correct profile data file for `%s'"
+msgstr ""
+
+#: elf/sprof.c:1027 elf/sprof.c:1085
+#, fuzzy, c-format
+msgid "cannot allocate symbol data"
+msgstr "Nepavyko išskirti atminties"
+
+#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#, fuzzy, c-format
+msgid "error while closing input `%s'"
+msgstr "klaida užveriant išvedimo failą"
+
+#: iconv/iconv_charmap.c:450
+#, c-format
+msgid "illegal input sequence at position %Zd"
+msgstr ""
+
+#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#, c-format
+msgid "incomplete character or shift sequence at end of buffer"
+msgstr ""
+
+#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
+#: iconv/iconv_prog.c:605
+#, fuzzy, c-format
+msgid "error while reading the input"
+msgstr "klaida įkeliant bendrąsias bibliotekas"
+
+#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#, c-format
+msgid "unable to allocate buffer for input"
+msgstr ""
+
+#: iconv/iconv_prog.c:60
+msgid "Input/Output format specification:"
+msgstr ""
+
+#: iconv/iconv_prog.c:61
+msgid "encoding of original text"
+msgstr "originalaus teksto koduotė"
+
+#: iconv/iconv_prog.c:62
+#, fuzzy
+msgid "encoding for output"
+msgstr "originalaus teksto koduotė"
+
+#: iconv/iconv_prog.c:63
+msgid "Information:"
+msgstr "Informacija:"
+
+#: iconv/iconv_prog.c:64
+msgid "list all known coded character sets"
+msgstr ""
+
+#: iconv/iconv_prog.c:65 locale/programs/localedef.c:127
+msgid "Output control:"
+msgstr ""
+
+#: iconv/iconv_prog.c:66
+msgid "omit invalid characters from output"
+msgstr ""
+
+#: iconv/iconv_prog.c:67
+#, fuzzy
+msgid "output file"
+msgstr "Išvesti į failą duotu PAVADINIMU"
+
+#: iconv/iconv_prog.c:68
+#, fuzzy
+msgid "suppress warnings"
+msgstr "įspėjimas: "
+
+#: iconv/iconv_prog.c:69
+#, fuzzy
+msgid "print progress information"
+msgstr "Spausdinti daugiau informacijos"
+
+#: iconv/iconv_prog.c:74
+msgid "Convert encoding of given files from one encoding to another."
+msgstr ""
+
+#: iconv/iconv_prog.c:78
+msgid "[FILE...]"
+msgstr "[FAILAS...]"
+
+#: iconv/iconv_prog.c:200
+#, fuzzy, c-format
+msgid "cannot open output file"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: iconv/iconv_prog.c:242
+#, c-format
+msgid "conversions from `%s' and to `%s' are not supported"
+msgstr ""
+
+#: iconv/iconv_prog.c:247
+#, fuzzy, c-format
+msgid "conversion from `%s' is not supported"
+msgstr "Operacija nepalaikoma"
+
+#: iconv/iconv_prog.c:254
+#, fuzzy, c-format
+msgid "conversion to `%s' is not supported"
+msgstr "Protokolas nepalaikomas"
+
+#: iconv/iconv_prog.c:258
+#, c-format
+msgid "conversion from `%s' to `%s' is not supported"
+msgstr ""
+
+#: iconv/iconv_prog.c:268
+#, c-format
+msgid "failed to start conversion processing"
+msgstr ""
+
+#: iconv/iconv_prog.c:362
+#, c-format
+msgid "error while closing output file"
+msgstr "klaida užveriant išvedimo failą"
+
+#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#, c-format
+msgid "conversion stopped due to problem in writing the output"
+msgstr ""
+
+#: iconv/iconv_prog.c:522
+#, c-format
+msgid "illegal input sequence at position %ld"
+msgstr ""
+
+#: iconv/iconv_prog.c:530
+#, c-format
+msgid "internal error (illegal descriptor)"
+msgstr "vidinė klaida (nekorektiškas deskriptorius)"
+
+#: iconv/iconv_prog.c:533
+#, fuzzy, c-format
+msgid "unknown iconv() error %d"
+msgstr "nežinoma iconv() klaida %d"
+
+#: iconv/iconv_prog.c:779
+msgid ""
+"The following list contain all the coded character sets known.  This does\n"
+"not necessarily mean that all combinations of these names can be used for\n"
+"the FROM and TO command line parameters.  One coded character set can be\n"
+"listed with several different names (aliases).\n"
+"\n"
+"  "
+msgstr ""
+
+#: iconv/iconvconfig.c:110
+#, fuzzy
+msgid "Create fastloading iconv module configuration file."
+msgstr "Nepavyko atverti konfigūracijos failo %s"
+
+#: iconv/iconvconfig.c:114
+#, fuzzy
+msgid "[DIR...]"
+msgstr "[FAILAS...]"
+
+#: iconv/iconvconfig.c:127
+msgid "Prefix used for all file accesses"
+msgstr ""
+
+#: iconv/iconvconfig.c:128
+msgid "Put output in FILE instead of installed location (--prefix does not apply to FILE)"
+msgstr ""
+
+#: iconv/iconvconfig.c:132
+msgid "Do not search standard directories, only those on the command line"
+msgstr ""
+
+#: iconv/iconvconfig.c:301
+#, c-format
+msgid "Directory arguments required when using --nostdlib"
+msgstr ""
+
+#: iconv/iconvconfig.c:343 locale/programs/localedef.c:291
+#, c-format
+msgid "no output file produced because warnings were issued"
+msgstr ""
+
+#: iconv/iconvconfig.c:429
+#, c-format
+msgid "while inserting in search tree"
+msgstr ""
+
+#: iconv/iconvconfig.c:1238
+#, fuzzy, c-format
+msgid "cannot generate output file"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: inet/rcmd.c:157
+#, fuzzy
+msgid "rcmd: Cannot allocate memory\n"
+msgstr "Nepavyko išskirti atminties"
+
+#: inet/rcmd.c:172
+msgid "rcmd: socket: All ports in use\n"
+msgstr ""
+
+#: inet/rcmd.c:200
+#, c-format
+msgid "connect to address %s: "
+msgstr "jungtis prie adreso %s: "
+
+#: inet/rcmd.c:213
+#, c-format
+msgid "Trying %s...\n"
+msgstr "Bandoma %s...\n"
+
+#: inet/rcmd.c:249
+#, c-format
+msgid "rcmd: write (setting up stderr): %m\n"
+msgstr ""
+
+#: inet/rcmd.c:265
+#, c-format
+msgid "rcmd: poll (setting up stderr): %m\n"
+msgstr ""
+
+#: inet/rcmd.c:268
+msgid "poll: protocol failure in circuit setup\n"
+msgstr ""
+
+#: inet/rcmd.c:301
+msgid "socket: protocol failure in circuit setup\n"
+msgstr ""
+
+#: inet/rcmd.c:325
+#, c-format
+msgid "rcmd: %s: short read"
+msgstr ""
+
+#: inet/rcmd.c:481
+msgid "lstat failed"
+msgstr ""
+
+#: inet/rcmd.c:488
+#, fuzzy
+msgid "cannot open"
+msgstr "nepavyko atverti"
+
+#: inet/rcmd.c:490
+msgid "fstat failed"
+msgstr ""
+
+#: inet/rcmd.c:492
+#, fuzzy
+msgid "bad owner"
+msgstr "blogas jungtukas"
+
+#: inet/rcmd.c:494
+msgid "writeable by other than owner"
+msgstr ""
+
+#: inet/rcmd.c:496
+msgid "hard linked somewhere"
+msgstr ""
+
+#: inet/ruserpass.c:170 inet/ruserpass.c:193
+msgid "out of memory"
+msgstr "baigėsi atmintis"
+
+#: inet/ruserpass.c:184
+msgid "Error: .netrc file is readable by others."
+msgstr ""
+
+#: inet/ruserpass.c:185
+msgid "Remove password or make file unreadable by others."
+msgstr ""
+
+#: inet/ruserpass.c:277
+#, fuzzy, c-format
+msgid "Unknown .netrc keyword %s"
+msgstr "Nežinoma klaida "
+
+#: libidn/nfkc.c:464
+#, fuzzy
+msgid "Character out of range for UTF-8"
+msgstr "Kanalo numeris už ribų"
+
+#: locale/programs/charmap-dir.c:59
+#, fuzzy, c-format
+msgid "cannot read character map directory `%s'"
+msgstr "nepavyko atverti aplanko %s"
+
+#: locale/programs/charmap.c:138
+#, fuzzy, c-format
+msgid "character map file `%s' not found"
+msgstr "Duomenų failas %s nerastas.\n"
+
+#: locale/programs/charmap.c:195
+#, c-format
+msgid "default character map file `%s' not found"
+msgstr ""
+
+#: locale/programs/charmap.c:258
+#, c-format
+msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
+msgstr ""
+
+#: locale/programs/charmap.c:337
+#, c-format
+msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
+msgstr ""
+
+#: locale/programs/charmap.c:357 locale/programs/charmap.c:374
+#: locale/programs/repertoire.c:174
+#, fuzzy, c-format
+msgid "syntax error in prolog: %s"
+msgstr "sintaksės klaida prologe: %s"
+
+#: locale/programs/charmap.c:358
+#, fuzzy
+msgid "invalid definition"
+msgstr "%s: netaisyklingas parametras --%c\n"
+
+#: locale/programs/charmap.c:375 locale/programs/locfile.c:126
+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:175
+#, fuzzy
+msgid "bad argument"
+msgstr "blogas argumentas"
+
+#: locale/programs/charmap.c:403
+#, c-format
+msgid "duplicate definition of <%s>"
+msgstr "kartotinis <%s> apibrėžimas"
+
+#: locale/programs/charmap.c:410
+#, c-format
+msgid "value for <%s> must be 1 or greater"
+msgstr "<%s> reikšmė turi būti 1 arba didesnė"
+
+#: locale/programs/charmap.c:422
+#, c-format
+msgid "value of <%s> must be greater or equal than the value of <%s>"
+msgstr "<%s> reikšmė turi būti lygi arba didesnė už <%s> reikšmę"
+
+#: locale/programs/charmap.c:445 locale/programs/repertoire.c:183
+#, c-format
+msgid "argument to <%s> must be a single character"
+msgstr "<%s> argumentas turi būti vienas simbolis"
+
+#: locale/programs/charmap.c:471
+msgid "character sets with locking states are not supported"
+msgstr ""
+
+#: locale/programs/charmap.c:498 locale/programs/charmap.c:552
+#: locale/programs/charmap.c:584 locale/programs/charmap.c:678
+#: locale/programs/charmap.c:733 locale/programs/charmap.c:774
+#: locale/programs/charmap.c:815
+#, fuzzy, c-format
+msgid "syntax error in %s definition: %s"
+msgstr "sintaksės klaida prologe: %s"
+
+#: locale/programs/charmap.c:499 locale/programs/charmap.c:679
+#: locale/programs/charmap.c:775 locale/programs/repertoire.c:230
+msgid "no symbolic name given"
+msgstr "neduotas joks simbolinis vardas"
+
+#: locale/programs/charmap.c:553
+msgid "invalid encoding given"
+msgstr "nurodyta netaisyklinga koduotė"
+
+#: locale/programs/charmap.c:562
+msgid "too few bytes in character encoding"
+msgstr "per mažai baitų simbolio koduotėje"
+
+#: locale/programs/charmap.c:564
+msgid "too many bytes in character encoding"
+msgstr "per daug baitų simbolio koduotėje"
+
+#: locale/programs/charmap.c:586 locale/programs/charmap.c:734
+#: locale/programs/charmap.c:817 locale/programs/repertoire.c:296
+#, fuzzy
+msgid "no symbolic name given for end of range"
+msgstr "neduotas joks simbolinis vardas"
+
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
+#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
+#: locale/programs/ld-identification.c:452
+#: locale/programs/ld-measurement.c:238 locale/programs/ld-messages.c:332
+#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:307
+#: locale/programs/ld-numeric.c:368 locale/programs/ld-paper.c:241
+#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1221
+#: locale/programs/repertoire.c:313
+#, c-format
+msgid "%1$s: definition does not end with `END %1$s'"
+msgstr "%1$s: apibrėžimas neužbaigtas „END %1$s“"
+
+#: locale/programs/charmap.c:643
+msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
+msgstr ""
+
+#: locale/programs/charmap.c:651 locale/programs/charmap.c:714
+#, c-format
+msgid "value for %s must be an integer"
+msgstr "%s reikšmė turi būti sveikasis skaičius"
+
+#: locale/programs/charmap.c:842
+#, c-format
+msgid "%s: error in state machine"
+msgstr "%s: klaida būsenų automate"
+
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
+#: locale/programs/ld-identification.c:468
+#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
+#: locale/programs/ld-monetary.c:959 locale/programs/ld-name.c:323
+#: locale/programs/ld-numeric.c:384 locale/programs/ld-paper.c:257
+#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1237
+#: locale/programs/locfile.c:826 locale/programs/repertoire.c:324
+#, fuzzy, c-format
+msgid "%s: premature end of file"
+msgstr "%s: failo pabaiga"
+
+#: locale/programs/charmap.c:869 locale/programs/charmap.c:880
+#, c-format
+msgid "unknown character `%s'"
+msgstr "nežinomas simbolis „%s“"
+
+#: locale/programs/charmap.c:888
+#, c-format
+msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
+msgstr ""
+
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/repertoire.c:419
+#, fuzzy
+msgid "invalid names for character range"
+msgstr "netaisyklingas kabučių simbolis"
+
+#: locale/programs/charmap.c:1005 locale/programs/repertoire.c:431
+msgid "hexadecimal range format should use only capital characters"
+msgstr ""
+
+#: locale/programs/charmap.c:1023 locale/programs/repertoire.c:449
+#, c-format
+msgid "<%s> and <%s> are invalid names for range"
+msgstr ""
+
+#: locale/programs/charmap.c:1029 locale/programs/repertoire.c:456
+msgid "upper limit in range is smaller than lower limit"
+msgstr "viršutinė riba mažesnė už apatinę ribą"
+
+#: locale/programs/charmap.c:1087
+msgid "resulting bytes for range not representable."
+msgstr ""
+
+#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
+#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
+#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
+#: locale/programs/ld-numeric.c:98 locale/programs/ld-paper.c:91
+#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:159
+#, c-format
+msgid "No definition for %s category found"
+msgstr "Nerastas %s kategorijos apibrėžimas"
+
+#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
+#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
+#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
+#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
+#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
+#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
+#: locale/programs/ld-name.c:142 locale/programs/ld-numeric.c:112
+#: locale/programs/ld-numeric.c:126 locale/programs/ld-paper.c:102
+#: locale/programs/ld-paper.c:111 locale/programs/ld-telephone.c:105
+#: locale/programs/ld-telephone.c:162 locale/programs/ld-time.c:175
+#: locale/programs/ld-time.c:196
+#, fuzzy, c-format
+msgid "%s: field `%s' not defined"
+msgstr "simbolis „%s“ neapibrėžtas"
+
+#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
+#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
+#, c-format
+msgid "%s: field `%s' must not be empty"
+msgstr ""
+
+#: locale/programs/ld-address.c:168
+#, c-format
+msgid "%s: invalid escape `%%%c' sequence in field `%s'"
+msgstr ""
+
+#: locale/programs/ld-address.c:219
+#, fuzzy, c-format
+msgid "%s: terminology language code `%s' not defined"
+msgstr "simbolis „%s“ neapibrėžtas"
+
+#: locale/programs/ld-address.c:244
+#, fuzzy, c-format
+msgid "%s: field `%s' must not be defined"
+msgstr "simbolis „%s“ neapibrėžtas"
+
+#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#, fuzzy, c-format
+msgid "%s: language abbreviation `%s' not defined"
+msgstr "simbolis „%s“ neapibrėžtas"
+
+#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
+#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#, c-format
+msgid "%s: `%s' value does not match `%s' value"
+msgstr ""
+
+#: locale/programs/ld-address.c:312
+#, c-format
+msgid "%s: numeric country code `%d' not valid"
+msgstr ""
+
+#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
+#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-identification.c:364
+#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
+#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
+#: locale/programs/ld-monetary.c:777 locale/programs/ld-name.c:280
+#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:224
+#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1126
+#: locale/programs/ld-time.c:1168
+#, c-format
+msgid "%s: field `%s' declared more than once"
+msgstr "%s: laukas „%s“ apibrėžtas daugiau negu vieną kartą"
+
+#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
+#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
+#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
+#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:1020
+#: locale/programs/ld-time.c:1089 locale/programs/ld-time.c:1131
+#, c-format
+msgid "%s: unknown character in field `%s'"
+msgstr "%s: nežinomas simbolis lauke „%s“"
+
+#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
+#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
+#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
+#: locale/programs/ld-numeric.c:366 locale/programs/ld-paper.c:239
+#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1219
+#, c-format
+msgid "%s: incomplete `END' line"
+msgstr "%s: nepilna „END“ eilutė"
+
+#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
+#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
+#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
+#: locale/programs/ld-identification.c:459
+#: locale/programs/ld-measurement.c:245 locale/programs/ld-messages.c:339
+#: locale/programs/ld-monetary.c:950 locale/programs/ld-name.c:314
+#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:248
+#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1228
+#, c-format
+msgid "%s: syntax error"
+msgstr "%s: sintaksės klaida"
+
+#: locale/programs/ld-collate.c:417
+#, c-format
+msgid "`%.*s' already defined in charmap"
+msgstr ""
+
+#: locale/programs/ld-collate.c:426
+#, c-format
+msgid "`%.*s' already defined in repertoire"
+msgstr ""
+
+#: locale/programs/ld-collate.c:433
+#, c-format
+msgid "`%.*s' already defined as collating symbol"
+msgstr ""
+
+#: locale/programs/ld-collate.c:440
+#, c-format
+msgid "`%.*s' already defined as collating element"
+msgstr ""
+
+#: locale/programs/ld-collate.c:471 locale/programs/ld-collate.c:497
+#, c-format
+msgid "%s: `forward' and `backward' are mutually excluding each other"
+msgstr ""
+
+#: locale/programs/ld-collate.c:481 locale/programs/ld-collate.c:507
+#: locale/programs/ld-collate.c:523
+#, c-format
+msgid "%s: `%s' mentioned more than once in definition of weight %d"
+msgstr ""
+
+#: locale/programs/ld-collate.c:579
+#, c-format
+msgid "%s: too many rules; first entry only had %d"
+msgstr ""
+
+#: locale/programs/ld-collate.c:615
+#, c-format
+msgid "%s: not enough sorting rules"
+msgstr ""
+
+#: locale/programs/ld-collate.c:780
+#, c-format
+msgid "%s: empty weight string not allowed"
+msgstr ""
+
+#: locale/programs/ld-collate.c:875
+#, c-format
+msgid "%s: weights must use the same ellipsis symbol as the name"
+msgstr ""
+
+#: locale/programs/ld-collate.c:931
+#, fuzzy, c-format
+msgid "%s: too many values"
+msgstr "%s: Per daug argumentų\n"
+
+#: locale/programs/ld-collate.c:1051 locale/programs/ld-collate.c:1226
+#, c-format
+msgid "order for `%.*s' already defined at %s:%Zu"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1101
+#, c-format
+msgid "%s: the start and the end symbol of a range must stand for characters"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1128
+#, c-format
+msgid "%s: byte sequences of first and last character must have the same length"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1170
+#, c-format
+msgid "%s: byte sequence of first character of range is not lower than that of the last character"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1295
+#, c-format
+msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1299
+#, c-format
+msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1319 locale/programs/ld-ctype.c:1477
+#, c-format
+msgid "`%s' and `%.*s' are not valid names for symbolic range"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3858
+#, c-format
+msgid "%s: order for `%.*s' already defined at %s:%Zu"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1378
+#, fuzzy, c-format
+msgid "%s: `%s' must be a character"
+msgstr "„%s“: trūksta formato simbolio"
+
+#: locale/programs/ld-collate.c:1573
+#, c-format
+msgid "%s: `position' must be used for a specific level in all sections or none"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1598
+#, c-format
+msgid "symbol `%s' not defined"
+msgstr "simbolis „%s“ neapibrėžtas"
+
+#: locale/programs/ld-collate.c:1674 locale/programs/ld-collate.c:1780
+#, c-format
+msgid "symbol `%s' has the same encoding as"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1678 locale/programs/ld-collate.c:1784
+#, c-format
+msgid "symbol `%s'"
+msgstr "simbolis „%s“"
+
+#: locale/programs/ld-collate.c:1826
+#, c-format
+msgid "no definition of `UNDEFINED'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1855
+#, c-format
+msgid "too many errors; giving up"
+msgstr "per daug klaidų; pasiduodu"
+
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#, fuzzy, c-format
+msgid "%s: nested conditionals not supported"
+msgstr "Operacija nepalaikoma"
+
+#: locale/programs/ld-collate.c:2677
+#, c-format
+msgid "%s: more then one 'else'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:2852
+#, fuzzy, c-format
+msgid "%s: duplicate definition of `%s'"
+msgstr "kartotinis <%s> apibrėžimas"
+
+#: locale/programs/ld-collate.c:2888
+#, fuzzy, c-format
+msgid "%s: duplicate declaration of section `%s'"
+msgstr "kartotinis <%s> apibrėžimas"
+
+#: locale/programs/ld-collate.c:3027
+#, fuzzy, c-format
+msgid "%s: unknown character in collating symbol name"
+msgstr "%s: nežinomas simbolis lauke „%s“"
+
+#: locale/programs/ld-collate.c:3159
+#, fuzzy, c-format
+msgid "%s: unknown character in equivalent definition name"
+msgstr "%s: nežinomas simbolis lauke „%s“"
+
+#: locale/programs/ld-collate.c:3172
+#, fuzzy, c-format
+msgid "%s: unknown character in equivalent definition value"
+msgstr "%s: nežinomas simbolis lauke „%s“"
+
+#: locale/programs/ld-collate.c:3182
+#, c-format
+msgid "%s: unknown symbol `%s' in equivalent definition"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3191
+#, fuzzy
+msgid "error while adding equivalent collating symbol"
+msgstr "klaida įkeliant bendrąsias bibliotekas"
+
+#: locale/programs/ld-collate.c:3221
+#, fuzzy, c-format
+msgid "duplicate definition of script `%s'"
+msgstr "kartotinis <%s> apibrėžimas"
+
+#: locale/programs/ld-collate.c:3269
+#, fuzzy, c-format
+msgid "%s: unknown section name `%.*s'"
+msgstr "„%s“: nežinomas funkcijos pavadinimas"
+
+#: locale/programs/ld-collate.c:3298
+#, c-format
+msgid "%s: multiple order definitions for section `%s'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3326
+#, fuzzy, c-format
+msgid "%s: invalid number of sorting rules"
+msgstr "%s: netaisyklingas argumentas"
+
+#: locale/programs/ld-collate.c:3353
+#, c-format
+msgid "%s: multiple order definitions for unnamed section"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3407 locale/programs/ld-collate.c:3537
+#: locale/programs/ld-collate.c:3900
+#, fuzzy, c-format
+msgid "%s: missing `order_end' keyword"
+msgstr "%s: trūksta dvitaškio skirtuko"
+
+#: locale/programs/ld-collate.c:3470
+#, c-format
+msgid "%s: order for collating symbol %.*s not yet defined"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3488
+#, c-format
+msgid "%s: order for collating element %.*s not yet defined"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3499
+#, c-format
+msgid "%s: cannot reorder after %.*s: symbol not known"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3551 locale/programs/ld-collate.c:3912
+#, fuzzy, c-format
+msgid "%s: missing `reorder-end' keyword"
+msgstr "%s: trūksta dvitaškio skirtuko"
+
+#: locale/programs/ld-collate.c:3585 locale/programs/ld-collate.c:3783
+#, fuzzy, c-format
+msgid "%s: section `%.*s' not known"
+msgstr "Duomenų failas %s nerastas.\n"
+
+#: locale/programs/ld-collate.c:3650
+#, c-format
+msgid "%s: bad symbol <%.*s>"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3846
+#, c-format
+msgid "%s: cannot have `%s' as end of ellipsis range"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3896
+#, c-format
+msgid "%s: empty category description not allowed"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3915
+#, c-format
+msgid "%s: missing `reorder-sections-end' keyword"
+msgstr ""
+
+#: locale/programs/ld-collate.c:4077
+#, c-format
+msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:4095
+#, c-format
+msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:439
+#, c-format
+msgid "No character set name specified in charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:468
+#, c-format
+msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:483
+#, c-format
+msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:497 locale/programs/ld-ctype.c:555
+#, c-format
+msgid "internal error in %s, line %u"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:526
+#, c-format
+msgid "character '%s' in class `%s' must be in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:542
+#, c-format
+msgid "character '%s' in class `%s' must not be in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:572 locale/programs/ld-ctype.c:610
+#, c-format
+msgid "<SP> character not in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:584 locale/programs/ld-ctype.c:621
+#, c-format
+msgid "<SP> character must not be in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:599
+#, c-format
+msgid "character <SP> not defined in character map"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:714
+#, c-format
+msgid "`digit' category has not entries in groups of ten"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:763
+#, c-format
+msgid "no input digits defined and none of the standard names in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:828
+#, c-format
+msgid "not all characters used in `outdigit' are available in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:845
+#, c-format
+msgid "not all characters used in `outdigit' are available in the repertoire"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1245
+#, c-format
+msgid "character class `%s' already defined"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1251
+#, c-format
+msgid "implementation limit: no more than %Zd character classes allowed"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1277
+#, c-format
+msgid "character map `%s' already defined"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1283
+#, c-format
+msgid "implementation limit: no more than %d character maps allowed"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1548 locale/programs/ld-ctype.c:1673
+#: locale/programs/ld-ctype.c:1779 locale/programs/ld-ctype.c:2471
+#: locale/programs/ld-ctype.c:3467
+#, fuzzy, c-format
+msgid "%s: field `%s' does not contain exactly ten entries"
+msgstr "%s: laukas „%s“ apibrėžtas daugiau negu vieną kartą"
+
+#: locale/programs/ld-ctype.c:1576 locale/programs/ld-ctype.c:2150
+#, c-format
+msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1703
+msgid "start and end character sequence of range must have the same length"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1710
+msgid "to-value character sequence is smaller than from-value sequence"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2070 locale/programs/ld-ctype.c:2121
+msgid "premature end of `translit_ignore' definition"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2076 locale/programs/ld-ctype.c:2127
+#: locale/programs/ld-ctype.c:2169
+msgid "syntax error"
+msgstr "sintaksės klaida"
+
+#: locale/programs/ld-ctype.c:2303
+#, fuzzy, c-format
+msgid "%s: syntax error in definition of new character class"
+msgstr "sintaksės klaida %s aprašyme: %s"
+
+#: locale/programs/ld-ctype.c:2318
+#, c-format
+msgid "%s: syntax error in definition of new character map"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2493
+msgid "ellipsis range must be marked by two operands of same type"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2502
+msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2517
+msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2531
+msgid "with character code range values one must use the absolute ellipsis `...'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2682
+#, fuzzy, c-format
+msgid "duplicated definition for mapping `%s'"
+msgstr "kartotinis <%s> apibrėžimas"
+
+#: locale/programs/ld-ctype.c:2768 locale/programs/ld-ctype.c:2912
+#, fuzzy, c-format
+msgid "%s: `translit_start' section does not end with `translit_end'"
+msgstr "%1$s: apibrėžimas neužbaigtas „END %1$s“"
+
+#: locale/programs/ld-ctype.c:2863
+#, fuzzy, c-format
+msgid "%s: duplicate `default_missing' definition"
+msgstr "pakartotinis rinkinio apibrėžimas"
+
+#: locale/programs/ld-ctype.c:2868
+msgid "previous definition was here"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2890
+#, c-format
+msgid "%s: no representable `default_missing' definition found"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3043 locale/programs/ld-ctype.c:3127
+#: locale/programs/ld-ctype.c:3147 locale/programs/ld-ctype.c:3168
+#: locale/programs/ld-ctype.c:3189 locale/programs/ld-ctype.c:3210
+#: locale/programs/ld-ctype.c:3231 locale/programs/ld-ctype.c:3271
+#: locale/programs/ld-ctype.c:3292 locale/programs/ld-ctype.c:3359
+#: locale/programs/ld-ctype.c:3401 locale/programs/ld-ctype.c:3426
+#, c-format
+msgid "%s: character `%s' not defined while needed as default value"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3048 locale/programs/ld-ctype.c:3132
+#: locale/programs/ld-ctype.c:3152 locale/programs/ld-ctype.c:3173
+#: locale/programs/ld-ctype.c:3194 locale/programs/ld-ctype.c:3215
+#: locale/programs/ld-ctype.c:3236 locale/programs/ld-ctype.c:3276
+#: locale/programs/ld-ctype.c:3297 locale/programs/ld-ctype.c:3364
+#, c-format
+msgid "%s: character `%s' in charmap not representable with one byte"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3408 locale/programs/ld-ctype.c:3433
+#, c-format
+msgid "%s: character `%s' needed as default value not representable with one byte"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3489
+#, c-format
+msgid "no output digits defined and none of the standard names in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3780
+#, c-format
+msgid "%s: transliteration data from locale `%s' not available"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3881
+#, c-format
+msgid "%s: table for class \"%s\": %lu bytes\n"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3950
+#, fuzzy, c-format
+msgid "%s: table for map \"%s\": %lu bytes\n"
+msgstr "%s: nepavyko atverti %s: %m\n"
+
+#: locale/programs/ld-ctype.c:4083
+#, c-format
+msgid "%s: table for width: %lu bytes\n"
+msgstr ""
+
+#: locale/programs/ld-identification.c:170
+#, fuzzy, c-format
+msgid "%s: no identification for category `%s'"
+msgstr "Nerastas %s kategorijos apibrėžimas"
+
+#: locale/programs/ld-identification.c:435
+#, fuzzy, c-format
+msgid "%s: duplicate category version definition"
+msgstr "pakartotinis rinkinio apibrėžimas"
+
+#: locale/programs/ld-measurement.c:113
+#, fuzzy, c-format
+msgid "%s: invalid value for field `%s'"
+msgstr "%s: per mažai reikšmių laukui „%s“"
+
+#: locale/programs/ld-messages.c:114 locale/programs/ld-messages.c:148
+#, fuzzy, c-format
+msgid "%s: field `%s' undefined"
+msgstr "simbolis „%s“ neapibrėžtas"
+
+#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:155
+#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:118
+#, fuzzy, c-format
+msgid "%s: value for field `%s' must not be an empty string"
+msgstr "%s reikšmė turi būti sveikasis skaičius"
+
+#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:171
+#, fuzzy, c-format
+msgid "%s: no correct regular expression for field `%s': %s"
+msgstr "%s: nežinomas simbolis lauke „%s“"
+
+#: locale/programs/ld-monetary.c:224
+#, c-format
+msgid "%s: value of field `int_curr_symbol' has wrong length"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:237
+#, c-format
+msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:285 locale/programs/ld-monetary.c:315
+#, fuzzy, c-format
+msgid "%s: value for field `%s' must be in range %d...%d"
+msgstr "%s reikšmė turi būti sveikasis skaičius"
+
+#: locale/programs/ld-monetary.c:747 locale/programs/ld-numeric.c:274
+#, fuzzy, c-format
+msgid "%s: value for field `%s' must be a single character"
+msgstr "<%s> argumentas turi būti vienas simbolis"
+
+#: locale/programs/ld-monetary.c:844 locale/programs/ld-numeric.c:318
+#, c-format
+msgid "%s: `-1' must be last entry in `%s' field"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:866 locale/programs/ld-numeric.c:335
+#, fuzzy, c-format
+msgid "%s: values for field `%s' must be smaller than 127"
+msgstr "%s: per mažai reikšmių laukui „%s“"
+
+#: locale/programs/ld-monetary.c:909
+msgid "conversion rate value cannot be zero"
+msgstr ""
+
+#: locale/programs/ld-name.c:129 locale/programs/ld-telephone.c:126
+#: locale/programs/ld-telephone.c:149
+#, fuzzy, c-format
+msgid "%s: invalid escape sequence in field `%s'"
+msgstr "%s: nežinomas simbolis lauke „%s“"
+
+#: locale/programs/ld-time.c:247
+#, c-format
+msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
+msgstr ""
+
+#: locale/programs/ld-time.c:258
+#, c-format
+msgid "%s: direction flag in string %Zd in `era' field is not a single character"
+msgstr ""
+
+#: locale/programs/ld-time.c:271
+#, c-format
+msgid "%s: invalid number for offset in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:279
+#, c-format
+msgid "%s: garbage at end of offset value in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:330
+#, c-format
+msgid "%s: invalid starting date in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:339
+#, c-format
+msgid "%s: garbage at end of starting date in string %Zd in `era' field "
+msgstr ""
+
+#: locale/programs/ld-time.c:358
+#, c-format
+msgid "%s: starting date is invalid in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:407
+#, c-format
+msgid "%s: invalid stopping date in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:416
+#, c-format
+msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:435
+#, c-format
+msgid "%s: stopping date is invalid in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:444
+#, c-format
+msgid "%s: missing era name in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:456
+#, c-format
+msgid "%s: missing era format in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:497
+#, c-format
+msgid "%s: third operand for value of field `%s' must not be larger than %d"
+msgstr ""
+
+#: locale/programs/ld-time.c:505 locale/programs/ld-time.c:513
+#: locale/programs/ld-time.c:521
+#, fuzzy, c-format
+msgid "%s: values for field `%s' must not be larger than %d"
+msgstr "%s reikšmė turi būti sveikasis skaičius"
+
+#: locale/programs/ld-time.c:1004
+#, c-format
+msgid "%s: too few values for field `%s'"
+msgstr "%s: per mažai reikšmių laukui „%s“"
+
+#: locale/programs/ld-time.c:1049
+msgid "extra trailing semicolon"
+msgstr "papildomas kabliataškis pabaigoje"
+
+#: locale/programs/ld-time.c:1052
+#, fuzzy, c-format
+msgid "%s: too many values for field `%s'"
+msgstr "%s: per mažai reikšmių laukui „%s“"
+
+#: locale/programs/linereader.c:130
+msgid "trailing garbage at end of line"
+msgstr "šiukšlės eilutės pabaigoje"
+
+#: locale/programs/linereader.c:298
+msgid "garbage at end of number"
+msgstr "šiukšlės skaičiaus pabaigoje"
+
+#: locale/programs/linereader.c:410
+msgid "garbage at end of character code specification"
+msgstr ""
+
+#: locale/programs/linereader.c:496
+#, fuzzy
+msgid "unterminated symbolic name"
+msgstr "neužbaigtas pranešimas"
+
+#: locale/programs/linereader.c:623
+msgid "illegal escape sequence at end of string"
+msgstr ""
+
+#: locale/programs/linereader.c:627 locale/programs/linereader.c:855
+#, fuzzy
+msgid "unterminated string"
+msgstr "neužbaigtas pranešimas"
+
+#: locale/programs/linereader.c:669
+msgid "non-symbolic character value should not be used"
+msgstr ""
+
+#: locale/programs/linereader.c:816
+#, fuzzy, c-format
+msgid "symbol `%.*s' not in charmap"
+msgstr "simbolis „%s“ neapibrėžtas"
+
+#: locale/programs/linereader.c:837
+#, fuzzy, c-format
+msgid "symbol `%.*s' not in repertoire map"
+msgstr "simbolis „%s“ neapibrėžtas"
+
+#: locale/programs/locale.c:74
+msgid "System information:"
+msgstr "Sistemos informacija:"
+
+#: locale/programs/locale.c:76
+msgid "Write names of available locales"
+msgstr ""
+
+#: locale/programs/locale.c:78
+msgid "Write names of available charmaps"
+msgstr ""
+
+#: locale/programs/locale.c:79
+msgid "Modify output format:"
+msgstr ""
+
+#: locale/programs/locale.c:80
+msgid "Write names of selected categories"
+msgstr ""
+
+#: locale/programs/locale.c:81
+msgid "Write names of selected keywords"
+msgstr ""
+
+#: locale/programs/locale.c:82
+msgid "Print more information"
+msgstr "Spausdinti daugiau informacijos"
+
+#: locale/programs/locale.c:87
+msgid ""
+"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+
+#: locale/programs/locale.c:92
+msgid ""
+"NAME\n"
+"[-a|-m]"
+msgstr ""
+
+#: locale/programs/locale.c:193
+#, c-format
+msgid "Cannot set LC_CTYPE to default locale"
+msgstr "Nepavyko nustatyti LC_CTYPE į numatytąją lokalę"
+
+#: locale/programs/locale.c:195
+#, c-format
+msgid "Cannot set LC_MESSAGES to default locale"
+msgstr "Nepavyko nustatyti LC_MESSAGES į numatytąją lokalę"
+
+#: locale/programs/locale.c:208
+#, c-format
+msgid "Cannot set LC_COLLATE to default locale"
+msgstr "Nepavyko nustatyti LC_COLLATE į numatytąją lokalę"
+
+#: locale/programs/locale.c:224
+#, c-format
+msgid "Cannot set LC_ALL to default locale"
+msgstr "Nepavyko nustatyti LC_ALL į numatytąją lokalę"
+
+#: locale/programs/locale.c:500
+#, fuzzy, c-format
+msgid "while preparing output"
+msgstr "skaitant duomenų bazę"
+
+#: locale/programs/localedef.c:120
+msgid "Input Files:"
+msgstr ""
+
+#: locale/programs/localedef.c:122
+msgid "Symbolic character names defined in FILE"
+msgstr ""
+
+#: locale/programs/localedef.c:123
+#, fuzzy
+msgid "Source definitions are found in FILE"
+msgstr "Nerastas %s kategorijos apibrėžimas"
+
+#: locale/programs/localedef.c:125
+msgid "FILE contains mapping from symbolic names to UCS4 values"
+msgstr ""
+
+#: locale/programs/localedef.c:129
+msgid "Create output even if warning messages were issued"
+msgstr ""
+
+#: locale/programs/localedef.c:130
+msgid "Create old-style tables"
+msgstr ""
+
+#: locale/programs/localedef.c:131
+#, fuzzy
+msgid "Optional output file prefix"
+msgstr "netaisyklinga grupė"
+
+#: locale/programs/localedef.c:132
+msgid "Be strictly POSIX conform"
+msgstr ""
+
+#: locale/programs/localedef.c:134
+msgid "Suppress warnings and information messages"
+msgstr ""
+
+#: locale/programs/localedef.c:135
+#, fuzzy
+msgid "Print more messages"
+msgstr "neužbaigtas pranešimas"
+
+#: locale/programs/localedef.c:136
+msgid "Archive control:"
+msgstr ""
+
+#: locale/programs/localedef.c:138
+msgid "Don't add new data to archive"
+msgstr ""
+
+#: locale/programs/localedef.c:140
+msgid "Add locales named by parameters to archive"
+msgstr ""
+
+#: locale/programs/localedef.c:141
+msgid "Replace existing archive content"
+msgstr ""
+
+#: locale/programs/localedef.c:143
+msgid "Remove locales named by parameters from archive"
+msgstr ""
+
+#: locale/programs/localedef.c:144
+msgid "List content of archive"
+msgstr ""
+
+#: locale/programs/localedef.c:146
+msgid "locale.alias file to consult when making archive"
+msgstr ""
+
+#: locale/programs/localedef.c:151
+#, fuzzy
+msgid "Compile locale specification"
+msgstr "%s: nėra baigimo specifikacijos"
+
+#: locale/programs/localedef.c:154
+msgid ""
+"NAME\n"
+"[--add-to-archive|--delete-from-archive] FILE...\n"
+"--list-archive [FILE]"
+msgstr ""
+
+#: locale/programs/localedef.c:232
+#, fuzzy, c-format
+msgid "cannot create directory for output files"
+msgstr "nepavyko atverti aplanko %s"
+
+#: locale/programs/localedef.c:243
+#, c-format
+msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
+msgstr ""
+
+#: locale/programs/localedef.c:257 locale/programs/localedef.c:273
+#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
+#, fuzzy, c-format
+msgid "cannot open locale definition file `%s'"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: locale/programs/localedef.c:285
+#, fuzzy, c-format
+msgid "cannot write output files to `%s'"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: locale/programs/localedef.c:366
+#, c-format
+msgid ""
+"System's directory for character maps : %s\n"
+"                       repertoire maps: %s\n"
+"                       locale path    : %s\n"
+"%s"
+msgstr ""
+
+#: locale/programs/localedef.c:567
+#, c-format
+msgid "circular dependencies between locale definitions"
+msgstr ""
+
+#: locale/programs/localedef.c:573
+#, c-format
+msgid "cannot add already read locale `%s' a second time"
+msgstr ""
+
+#: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
+#, c-format
+msgid "cannot create temporary file"
+msgstr ""
+
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:307
+#, c-format
+msgid "cannot initialize archive file"
+msgstr ""
+
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:314
+#, fuzzy, c-format
+msgid "cannot resize archive file"
+msgstr "%s: nepavyko perskaityti: %s"
+
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:323
+#: locale/programs/locarchive.c:527
+#, fuzzy, c-format
+msgid "cannot map archive header"
+msgstr "nepavyko perskaityti antraštės"
+
+#: locale/programs/locarchive.c:156
+#, c-format
+msgid "failed to create new locale archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:168
+#, c-format
+msgid "cannot change mode of new locale archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:255
+#, c-format
+msgid "cannot map locale archive file"
+msgstr ""
+
+#: locale/programs/locarchive.c:331
+#, fuzzy, c-format
+msgid "cannot lock new archive"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: locale/programs/locarchive.c:396
+#, fuzzy, c-format
+msgid "cannot extend locale archive file"
+msgstr "nepavyko atverti duomenų failo"
+
+#: locale/programs/locarchive.c:405
+#, c-format
+msgid "cannot change mode of resized locale archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:413
+#, fuzzy, c-format
+msgid "cannot rename new archive"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: locale/programs/locarchive.c:466
+#, fuzzy, c-format
+msgid "cannot open locale archive \"%s\""
+msgstr "Nepavyko atverti podėlio failo %s\n"
+
+#: locale/programs/locarchive.c:471
+#, fuzzy, c-format
+msgid "cannot stat locale archive \"%s\""
+msgstr "%s: nepavyko perskaityti: %s"
+
+#: locale/programs/locarchive.c:490
+#, fuzzy, c-format
+msgid "cannot lock locale archive \"%s\""
+msgstr "%s: nepavyko perskaityti: %s"
+
+#: locale/programs/locarchive.c:513
+#, fuzzy, c-format
+msgid "cannot read archive header"
+msgstr "nepavyko perskaityti antraštės"
+
+#: locale/programs/locarchive.c:573
+#, c-format
+msgid "locale '%s' already exists"
+msgstr ""
+
+#: locale/programs/locarchive.c:804 locale/programs/locarchive.c:819
+#: locale/programs/locarchive.c:831 locale/programs/locarchive.c:843
+#: locale/programs/locfile.c:344
+#, fuzzy, c-format
+msgid "cannot add to locale archive"
+msgstr "nepavyko sukurti paieškos sąrašo"
+
+#: locale/programs/locarchive.c:998
+#, fuzzy, c-format
+msgid "locale alias file `%s' not found"
+msgstr "Duomenų failas %s nerastas.\n"
+
+#: locale/programs/locarchive.c:1142
+#, fuzzy, c-format
+msgid "Adding %s\n"
+msgstr "skaitomas %s"
+
+#: locale/programs/locarchive.c:1148
+#, c-format
+msgid "stat of \"%s\" failed: %s: ignored"
+msgstr ""
+
+#: locale/programs/locarchive.c:1154
+#, fuzzy, c-format
+msgid "\"%s\" is no directory; ignored"
+msgstr "Aplankas"
+
+#: locale/programs/locarchive.c:1161
+#, fuzzy, c-format
+msgid "cannot open directory \"%s\": %s: ignored"
+msgstr "nepavyko atverti aplanko %s"
+
+#: locale/programs/locarchive.c:1233
+#, c-format
+msgid "incomplete set of locale files in \"%s\""
+msgstr ""
+
+#: locale/programs/locarchive.c:1297
+#, fuzzy, c-format
+msgid "cannot read all files in \"%s\": ignored"
+msgstr "nepavyko nuskaityti failo duomenų"
+
+#: locale/programs/locarchive.c:1367
+#, c-format
+msgid "locale \"%s\" not in archive"
+msgstr ""
+
+#: locale/programs/locfile.c:132
+#, fuzzy, c-format
+msgid "argument to `%s' must be a single character"
+msgstr "<%s> argumentas turi būti vienas simbolis"
+
+#: locale/programs/locfile.c:252
+#, fuzzy
+msgid "syntax error: not inside a locale definition section"
+msgstr "sintaksės klaida %s aprašyme: %s"
+
+#: locale/programs/locfile.c:626
+#, fuzzy, c-format
+msgid "cannot open output file `%s' for category `%s'"
+msgstr "nepavyko atverti duomenų bazės failo „%s“: %s"
+
+#: locale/programs/locfile.c:650
+#, c-format
+msgid "failure while writing data for category `%s'"
+msgstr ""
+
+#: locale/programs/locfile.c:746
+#, fuzzy, c-format
+msgid "cannot create output file `%s' for category `%s'"
+msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s"
+
+#: locale/programs/locfile.c:782
+#, fuzzy
+msgid "expect string argument for `copy'"
+msgstr "„%s“ trūksta parametro"
+
+#: locale/programs/locfile.c:786
+msgid "locale name should consist only of portable characters"
+msgstr ""
+
+#: locale/programs/locfile.c:805
+msgid "no other keyword shall be specified when `copy' is used"
+msgstr ""
+
+#: locale/programs/locfile.c:819
+#, fuzzy, c-format
+msgid "`%1$s' definition does not end with `END %1$s'"
+msgstr "%1$s: apibrėžimas neužbaigtas „END %1$s“"
+
+#: locale/programs/repertoire.c:229 locale/programs/repertoire.c:270
+#: locale/programs/repertoire.c:295
+#, fuzzy, c-format
+msgid "syntax error in repertoire map definition: %s"
+msgstr "sintaksės klaida prologe: %s"
+
+#: locale/programs/repertoire.c:271
+msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
+msgstr ""
+
+#: locale/programs/repertoire.c:331
+#, c-format
+msgid "cannot save new repertoire map"
+msgstr ""
+
+#: locale/programs/repertoire.c:342
+#, fuzzy, c-format
+msgid "repertoire map file `%s' not found"
+msgstr "Duomenų failas %s nerastas.\n"
+
+#: login/programs/pt_chown.c:74
+#, c-format
+msgid "Set the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `%d'.  This is the helper program for the `grantpt' function.  It is not intended to be run directly from the command line.\n"
+msgstr ""
+
+#: login/programs/pt_chown.c:84
+#, c-format
+msgid ""
+"The owner is set to the current user, the group is set to `%s', and the access permission is set to `%o'.\n"
+"\n"
+"%s"
+msgstr ""
+
+#: login/programs/pt_chown.c:161
+#, c-format
+msgid "too many arguments"
+msgstr "per daug argumentų"
+
+#: login/programs/pt_chown.c:169
+#, c-format
+msgid "needs to be installed setuid `root'"
+msgstr "turi būti instaliuota setuid „root“"
+
+#: malloc/mcheck.c:330
+msgid "memory is consistent, library is buggy\n"
+msgstr "atminties turinys korektiškas, bibliotekoje yra klaida\n"
+
+#: malloc/mcheck.c:333
+msgid "memory clobbered before allocated block\n"
+msgstr ""
+
+#: malloc/mcheck.c:336
+msgid "memory clobbered past end of allocated block\n"
+msgstr ""
+
+#: malloc/mcheck.c:339
+msgid "block freed twice\n"
+msgstr "blokas atlaisvintas du kartus\n"
+
+#: malloc/mcheck.c:342
+#, fuzzy
+msgid "bogus mcheck_status, library is buggy\n"
+msgstr "atminties turinys korektiškas, bibliotekoje yra klaida\n"
+
+#: malloc/memusage.sh:27
+msgid "Try \\`memusage --help' for more information."
+msgstr "Pabandykite „memusage --help“, jei norite gauti daugiau informacijos."
+
+#: malloc/memusage.sh:33
+msgid "memusage: option \\`$1' requires an argument"
+msgstr "memusage: parametrui „$1“ reikia argumento"
+
+#: malloc/memusage.sh:39
+msgid ""
+"Usage: memusage [OPTION]... PROGRAM [PROGRAMOPTION]...\n"
+"Profile memory usage of PROGRAM.\n"
+"\n"
+"   -n,--progname=NAME     Name of the program file to profile\n"
+"   -p,--png=FILE          Generate PNG graphic and store it in FILE\n"
+"   -d,--data=FILE         Generate binary data file and store it in FILE\n"
+"   -u,--unbuffered        Don't buffer output\n"
+"   -b,--buffer=SIZE       Collect SIZE entries before writing them out\n"
+"      --no-timer          Don't collect additional information through timer\n"
+"   -m,--mmap              Also trace mmap & friends\n"
+"\n"
+"   -?,--help              Print this help and exit\n"
+"      --usage             Give a short usage message\n"
+"   -V,--version           Print version information and exit\n"
+"\n"
+" The following options only apply when generating graphical output:\n"
+"   -t,--time-based        Make graph linear in time\n"
+"   -T,--total             Also draw graph of total memory use\n"
+"      --title=STRING      Use STRING as title of the graph\n"
+"   -x,--x-size=SIZE       Make graphic SIZE pixels wide\n"
+"   -y,--y-size=SIZE       Make graphic SIZE pixels high\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>."
+msgstr ""
+
+#: malloc/memusage.sh:99
+msgid ""
+"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
+"            [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
+"            [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
+"            PROGRAM [PROGRAMOPTION]..."
+msgstr ""
+
+#: malloc/memusage.sh:191
+#, fuzzy
+msgid "memusage: option \\`${1##*=}' is ambiguous"
+msgstr "ldd: parametras „$1“ dviprasmis"
+
+#: malloc/memusage.sh:200
+#, fuzzy
+msgid "memusage: unrecognized option \\`$1'"
+msgstr "%s: neatpažintas parametras „--%s“\n"
+
+#: malloc/memusage.sh:213
+msgid "No program name given"
+msgstr "Nenurodytas programos vardas"
+
+#: malloc/memusagestat.c:54
+#, fuzzy
+msgid "Name output file"
+msgstr "Išvesti į failą duotu PAVADINIMU"
+
+#: malloc/memusagestat.c:55
+msgid "Title string used in output graphic"
+msgstr ""
+
+#: malloc/memusagestat.c:56
+msgid "Generate output linear to time (default is linear to number of function calls)"
+msgstr ""
+
+#: malloc/memusagestat.c:58
+msgid "Also draw graph for total memory consumption"
+msgstr ""
+
+#: malloc/memusagestat.c:59
+msgid "Make output graphic VALUE pixels wide"
+msgstr ""
+
+#: malloc/memusagestat.c:60
+msgid "Make output graphic VALUE pixels high"
+msgstr ""
+
+#: malloc/memusagestat.c:65
+msgid "Generate graphic from memory profiling data"
+msgstr ""
+
+#: malloc/memusagestat.c:68
+msgid "DATAFILE [OUTFILE]"
+msgstr ""
+
+#: misc/error.c:118 timezone/zic.c:417
+msgid "Unknown system error"
+msgstr ""
+
+#: nis/nis_callback.c:189
+#, fuzzy
+msgid "unable to free arguments"
+msgstr "per daug argumentų"
+
+#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: sysdeps/gnu/errlist.c:20
+msgid "Success"
+msgstr "Sėkmė"
+
+#: nis/nis_error.h:2
+#, fuzzy
+msgid "Probable success"
+msgstr "Dalinė sėkmė"
+
+#: nis/nis_error.h:3
+#, fuzzy
+msgid "Not found"
+msgstr "Duomenų failas %s nerastas.\n"
+
+#: nis/nis_error.h:4
+#, fuzzy
+msgid "Probably not found"
+msgstr "Duomenų failas %s nerastas.\n"
+
+#: nis/nis_error.h:5
+#, fuzzy
+msgid "Cache expired"
+msgstr "Baigėsi rakto galiojimo laikas"
+
+#: nis/nis_error.h:6
+#, fuzzy
+msgid "NIS+ servers unreachable"
+msgstr "Tinklas neprieinamas"
+
+#: nis/nis_error.h:7
+#, fuzzy
+msgid "Unknown object"
+msgstr "Nežinomas serveris"
+
+#: nis/nis_error.h:8
+msgid "Server busy, try again"
+msgstr ""
+
+#: nis/nis_error.h:9
+msgid "Generic system error"
+msgstr ""
+
+#: nis/nis_error.h:10
+msgid "First/next chain broken"
+msgstr ""
+
+#. TRANS Permission denied; the file permissions do not allow the attempted operation.
+#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#, fuzzy
+msgid "Permission denied"
+msgstr "Priėjimas uždraustas"
+
+#: nis/nis_error.h:12
+msgid "Not owner"
+msgstr ""
+
+#: nis/nis_error.h:13
+msgid "Name not served by this server"
+msgstr ""
+
+#: nis/nis_error.h:14
+#, fuzzy
+msgid "Server out of memory"
+msgstr "baigėsi atmintis"
+
+#: nis/nis_error.h:15
+msgid "Object with same name exists"
+msgstr ""
+
+#: nis/nis_error.h:16
+msgid "Not master server for this domain"
+msgstr ""
+
+#: nis/nis_error.h:17
+#, fuzzy
+msgid "Invalid object for operation"
+msgstr "netaisyklinga veiksena dlopen()"
+
+#: nis/nis_error.h:18
+#, fuzzy
+msgid "Malformed name, or illegal name"
+msgstr "nekorektiška eilutė ignoruota"
+
+#: nis/nis_error.h:19
+msgid "Unable to create callback"
+msgstr ""
+
+#: nis/nis_error.h:20
+msgid "Results sent to callback proc"
+msgstr ""
+
+#: nis/nis_error.h:21
+msgid "Not found, no such name"
+msgstr ""
+
+#: nis/nis_error.h:22
+msgid "Name/entry isn't unique"
+msgstr ""
+
+#: nis/nis_error.h:23
+#, fuzzy
+msgid "Modification failed"
+msgstr "Atminties išskyrimo klaida"
+
+#: nis/nis_error.h:24
+msgid "Database for table does not exist"
+msgstr ""
+
+#: nis/nis_error.h:25
+msgid "Entry/table type mismatch"
+msgstr ""
+
+#: nis/nis_error.h:26
+msgid "Link points to illegal name"
+msgstr ""
+
+#: nis/nis_error.h:27
+msgid "Partial success"
+msgstr "Dalinė sėkmė"
+
+#: nis/nis_error.h:28
+msgid "Too many attributes"
+msgstr "Per daug atributų"
+
+#: nis/nis_error.h:29
+msgid "Error in RPC subsystem"
+msgstr ""
+
+#: nis/nis_error.h:30
+msgid "Missing or malformed attribute"
+msgstr ""
+
+#: nis/nis_error.h:31
+#, fuzzy
+msgid "Named object is not searchable"
+msgstr "bendrasis objektas neatvertas"
+
+#: nis/nis_error.h:32
+msgid "Error while talking to callback proc"
+msgstr ""
+
+#: nis/nis_error.h:33
+msgid "Non NIS+ namespace encountered"
+msgstr ""