summary refs log tree commit diff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-03-03 13:34:35 +0000
committerJakub Jelinek <jakub@redhat.com>2005-03-03 13:34:35 +0000
commitd0fec8d06cc2234c8114b51f630466eff9d5f841 (patch)
tree223a7fdae69137bd5670e59249442bc6a2db1ad1
parent00e4559b612f179492ff3721f86c92498894432f (diff)
downloadglibc-d0fec8d06cc2234c8114b51f630466eff9d5f841.tar.gz
glibc-d0fec8d06cc2234c8114b51f630466eff9d5f841.tar.xz
glibc-d0fec8d06cc2234c8114b51f630466eff9d5f841.zip
Updated to fedora-glibc-20050302T1820
-rw-r--r--ChangeLog530
-rw-r--r--ChangeLog.155480
-rw-r--r--Makerules2
-rw-r--r--NEWS11
-rw-r--r--Versions.def1
-rw-r--r--crypt/crypt_util.c2
-rw-r--r--csu/Makefile2
-rw-r--r--csu/elf-init.c2
-rw-r--r--ctype/ctype-extn.c6
-rw-r--r--debug/Makefile17
-rw-r--r--debug/Versions6
-rw-r--r--debug/chk_fail.c2
-rw-r--r--debug/fgets_chk.c67
-rw-r--r--debug/fgets_u_chk.c65
-rw-r--r--debug/getcwd_chk.c31
-rw-r--r--debug/getwd_chk.c34
-rw-r--r--debug/pread64_chk.c30
-rw-r--r--debug/pread_chk.c30
-rw-r--r--debug/read_chk.c38
-rw-r--r--debug/readlink_chk.c38
-rw-r--r--debug/recv_chk.c33
-rw-r--r--debug/recvfrom_chk.c35
-rw-r--r--debug/tst-chk1.c81
-rw-r--r--debug/warning-nop.c40
-rw-r--r--dlfcn/dlerror.c31
-rw-r--r--elf/Makefile9
-rw-r--r--elf/dl-addr.c16
-rw-r--r--elf/dl-load.c2
-rw-r--r--elf/dl-lookup.c6
-rw-r--r--elf/dl-reloc.c8
-rw-r--r--elf/dynamic-link.h12
-rw-r--r--elf/tst-array1-static.c1
-rw-r--r--fedora/branch.mk4
-rw-r--r--iconv/gconv_open.c5
-rw-r--r--iconvdata/Makefile11
-rw-r--r--iconvdata/TESTS11
-rw-r--r--iconvdata/gconv-modules73
-rw-r--r--iconvdata/ibm1025.c29
-rw-r--r--iconvdata/ibm1025.h133
-rw-r--r--iconvdata/ibm1122.c29
-rw-r--r--iconvdata/ibm1122.h133
-rw-r--r--iconvdata/ibm1137.c29
-rw-r--r--iconvdata/ibm1137.h133
-rw-r--r--iconvdata/ibm1153.c29
-rw-r--r--iconvdata/ibm1153.h147
-rw-r--r--iconvdata/ibm1154.c29
-rw-r--r--iconvdata/ibm1154.h134
-rw-r--r--iconvdata/ibm1155.c29
-rw-r--r--iconvdata/ibm1155.h134
-rw-r--r--iconvdata/ibm1156.c29
-rw-r--r--iconvdata/ibm1156.h149
-rw-r--r--iconvdata/ibm1157.c29
-rw-r--r--iconvdata/ibm1157.h134
-rw-r--r--iconvdata/ibm1158.c29
-rw-r--r--iconvdata/ibm1158.h135
-rw-r--r--iconvdata/ibm930.h2
-rw-r--r--iconvdata/ibm939.h2
-rw-r--r--iconvdata/testdata/IBM102528
-rw-r--r--iconvdata/testdata/IBM1025..UTF83
-rw-r--r--iconvdata/testdata/IBM1122bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1122..UTF8bin0 -> 641 bytes
-rw-r--r--iconvdata/testdata/IBM1137bin0 -> 509 bytes
-rw-r--r--iconvdata/testdata/IBM1137..UTF8bin0 -> 728 bytes
-rw-r--r--iconvdata/testdata/IBM1153bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1153..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1154bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1154..UTF8bin0 -> 643 bytes
-rw-r--r--iconvdata/testdata/IBM1155bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1155..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1156bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1156..UTF8bin0 -> 646 bytes
-rw-r--r--iconvdata/testdata/IBM1157bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1157..UTF8bin0 -> 642 bytes
-rw-r--r--iconvdata/testdata/IBM1158bin0 -> 513 bytes
-rw-r--r--iconvdata/testdata/IBM1158..UTF8bin0 -> 643 bytes
-rw-r--r--iconvdata/testdata/IBM930..UTF8bin48136 -> 48138 bytes
-rw-r--r--iconvdata/testdata/IBM939..UTF8bin48136 -> 48138 bytes
-rw-r--r--include/features.h2
-rw-r--r--include/libintl.h9
-rw-r--r--include/signal.h2
-rw-r--r--include/stdio.h2
-rw-r--r--include/sys/socket.h8
-rw-r--r--inet/rexec.c5
-rw-r--r--intl/bindtextdom.c24
-rw-r--r--intl/dcigettext.c26
-rw-r--r--libidn/ChangeLog11
-rw-r--r--libidn/Makefile7
-rw-r--r--libidn/iconvme.c159
-rw-r--r--libidn/iconvme.h25
-rw-r--r--libidn/toutf8.c168
-rw-r--r--libio/bits/stdio2.h19
-rw-r--r--libio/libio.h4
-rw-r--r--locale/SYS_libc.c4
-rw-r--r--locale/lc-ctype.c6
-rw-r--r--locale/programs/charmap.c8
-rw-r--r--locale/programs/linereader.c6
-rw-r--r--malloc/Makefile2
-rw-r--r--malloc/arena.c6
-rw-r--r--malloc/malloc.c7
-rw-r--r--manual/filesys.texi6
-rw-r--r--manual/texinfo.tex5649
-rw-r--r--misc/sys/cdefs.h1
-rw-r--r--misc/sys/syslog.h2
-rw-r--r--nis/nis_callback.c4
-rw-r--r--nis/nis_clone_dir.c4
-rw-r--r--nis/nis_clone_obj.c6
-rw-r--r--nis/nis_clone_res.c4
-rw-r--r--nptl/ChangeLog22
-rw-r--r--nptl/sysdeps/powerpc/tcb-offsets.sym3
-rw-r--r--nptl/sysdeps/pthread/pthread-functions.h4
-rw-r--r--nscd/aicache.c4
-rw-r--r--nscd/connections.c26
-rw-r--r--nscd/grpcache.c9
-rw-r--r--nscd/hstcache.c9
-rw-r--r--nscd/initgrcache.c4
-rw-r--r--nscd/nscd-client.h13
-rw-r--r--nscd/nscd_getai.c3
-rw-r--r--nscd/nscd_getgr_r.c7
-rw-r--r--nscd/nscd_gethst_r.c11
-rw-r--r--nscd/nscd_getpw_r.c4
-rw-r--r--nscd/nscd_helper.c58
-rw-r--r--nscd/nscd_initgroups.c5
-rw-r--r--nscd/pwdcache.c9
-rw-r--r--po/ru.po5999
-rw-r--r--po/tr.po8
-rw-r--r--posix/Makefile7
-rw-r--r--posix/bits/unistd.h84
-rw-r--r--posix/execvp.c2
-rw-r--r--posix/regcomp.c5
-rw-r--r--posix/regex_internal.h2
-rw-r--r--posix/rxspencer/tests1
-rw-r--r--posix/tst-execl1.c22
-rw-r--r--posix/tst-execl2.c58
-rw-r--r--posix/tst-execle1.c22
-rw-r--r--posix/tst-execle2.c58
-rw-r--r--posix/tst-execlp1.c34
-rw-r--r--posix/tst-execlp2.c82
-rw-r--r--posix/tst-execv1.c22
-rw-r--r--posix/tst-execv2.c60
-rw-r--r--posix/tst-execve1.c23
-rw-r--r--posix/tst-execve2.c61
-rw-r--r--posix/tst-execvp1.c34
-rw-r--r--posix/tst-execvp2.c82
-rw-r--r--posix/unistd.h8
-rw-r--r--resolv/nss_dns/dns-network.c4
-rw-r--r--resolv/res_send.c9
-rw-r--r--socket/Makefile4
-rw-r--r--socket/bits/socket2.h38
-rw-r--r--socket/sys/socket.h8
-rw-r--r--string/bits/string3.h17
-rw-r--r--sunrpc/Makefile26
-rw-r--r--sunrpc/auth_des.c8
-rw-r--r--sunrpc/create_xid.c2
-rw-r--r--sunrpc/key_call.c2
-rw-r--r--sunrpc/rtime.c2
-rw-r--r--sunrpc/svcauth_des.c2
-rw-r--r--sunrpc/xdr.c14
-rw-r--r--sunrpc/xdr_intXX_t.c9
-rw-r--r--sysdeps/arm/dl-machine.h11
-rw-r--r--sysdeps/generic/bits/byteswap.h18
-rw-r--r--sysdeps/generic/bits/types.h11
-rw-r--r--sysdeps/generic/dl-hash.h5
-rw-r--r--sysdeps/generic/dl-tls.c5
-rw-r--r--sysdeps/generic/libc-start.c23
-rw-r--r--sysdeps/generic/libc-tls.c7
-rw-r--r--sysdeps/generic/memset_chk.c2
-rw-r--r--sysdeps/generic/recv.c6
-rw-r--r--sysdeps/i386/dl-machine.h4
-rw-r--r--sysdeps/i386/i686/dl-hash.h6
-rw-r--r--sysdeps/i386/i686/memset.S8
-rw-r--r--sysdeps/i386/i686/memset_chk.S4
-rw-r--r--sysdeps/mach/hurd/recv.c6
-rw-r--r--sysdeps/mach/hurd/setresgid.c3
-rw-r--r--sysdeps/mach/hurd/setresuid.c3
-rw-r--r--sysdeps/posix/getaddrinfo.c2
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.h6
-rw-r--r--sysdeps/powerpc/powerpc64/dl-machine.h9
-rw-r--r--sysdeps/sh/dl-machine.h4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscalls.list1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/syscalls.list1
-rw-r--r--sysdeps/unix/sysv/linux/libc_fatal.c32
-rw-r--r--sysdeps/unix/sysv/linux/mips/Makefile110
-rwxr-xr-xsysdeps/unix/sysv/linux/mips/configure4
-rw-r--r--sysdeps/unix/sysv/linux/mips/configure.in4
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h36
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h6
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list1
-rw-r--r--sysdeps/unix/sysv/linux/sys/kd.h10
-rw-r--r--sysdeps/x86_64/memset.S8
-rw-r--r--sysdeps/x86_64/memset_chk.S2
193 files changed, 18682 insertions, 3188 deletions
diff --git a/ChangeLog b/ChangeLog
index b762bd97c1..4f384b53c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,19 +1,487 @@
-2005-02-12  Jakub Jelinek  <jakub@redhat.com>
+2005-03-01  Jakub Jelinek  <jakub@redhat.com>
 
-	* elf/rtld.c (dlmain): If LD_TRACE_PRELINKING, clear l_relocated flag
-	before relocating ld.so again.
+	* posix/bits/unistd.h (read, pread, pread64): Use __bos0 instead
+	of __bos.
+	* socket/bits/socket2.h (recv, recvfrom): Likewise.
+
+2005-03-01  Roland McGrath  <roland@redhat.com>
+
+	[BZ #721]
+	* sysdeps/arm/dl-machine.h (ELF_MACHINE_NO_RELA): Define this outside
+	of [RESOLVE_MAP].
+
+2005-03-01  Alfred M. Szmidt  <ams@gnu.org>
+
+	* elf/dl-load.c (__stack_prot) [!PROT_GROWSUP && !PROT_GROWSDOWN]:
+	Add missing initializer.
+
+	* malloc/arena.c: #include <stdbool.h> outside of [SHARED &&
+	USE_TLS && !USE___THREAD].
+
+2005-02-26  GOTO Masanori  <gotom@debian.or.jp>
+
+	* csu/Makefile: Use printf instead of echo for some shells.
+
+2005-02-28  Roland McGrath  <roland@redhat.com>
+
+	* debug/warning-nop.c (__nop): Rename to nop, make it static.
+	(__warndecl): Use alias attribute directly, instead of strong_alias
+	macro.  Add attribute_hidden.
+
+2005-02-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/bits/unistd.h: Avoid calling __*_chk variants if we can
+	determine the call will never trigger a failure.
+	* debug/read_chk.c (__read_chk): Always fail if the buffer is too
+	small.
+	* debug/readlink_chk.c (__readlink_chk): Likewise.
+	* debug/pread64_chk.c (__pread64_chk): Likewise.
+	* debug/pread_chk.c (__pread_chk): Likewise.
+
+	* sysdeps/i386/i686/memset_chk.S: Remove alias and warning.
+	* sysdeps/x86_64/memset_chk.S: Likewise.
+
+2005-02-24  Roland McGrath  <roland@redhat.com>
+
+	* debug/Versions (libc: GLIBC_2.4): Remove
+	__memset_zero_constant_len_parameter.
+	* sysdeps/generic/memset_chk.c: Remove alias and warning.
+	* misc/sys/cdefs.h (__warndecl): New macro.
+	* debug/warning-nop.c: New file.
+	* string/bits/string3.h (memset): Call __warn_memset_zero_len with no
+	arguments, instead of calling __memset_zero_constant_len_parameter.
+	Use __warndecl for __warn_memset_zero_len.
+	* debug/Makefile (routines): Add $(static-only-routines).
+	(static-only-routines): New variable.
+
+2005-02-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* po/tr.po: Update from translation team.
+
+2005-02-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-addr.c: Cleanups.  Move declaration next to first use.
+
+	* dlfcn/dlerror.c (check_free): New function.  Extract common code
+	from fini and free_key_mem.  Check whether this is libdl in the
+	base namespace.
+
+2005-02-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-lookup.c (_dl_debug_bindings): Add namespace information
+	to debug output.
+
+2004-11-11  Richard Sandiford  <rsandifo@redhat.com>
+
+	[BZ #758]
+	* sysdeps/unix/sysv/linux/mips/configure.in (asm-unistd.h): Only
+	preprocess <asm/unistd.h> if it defines ABI-prefixed syscall names
+	like __NR_N32_open.  Just include <asm/unistd.h> otherwise.
+	* sysdeps/unix/sysv/linux/mips/configure: Regenerate.
+	* sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: Delete
+	* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h (SYS_ify): Use the
+	standard __NR prefix.
+	* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h (SYS_ify): Likewise.
+	* sysdeps/unix/sysv/linux/mips/Makefile (syscall-%.h): Rework so that
+	the output file is compatible with both pre-2.6 and 2.6 kernel headers.
+	Extract separate syscall lists for each ABI.
+
+2005-02-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makerules (libc.so): Add AS_NEEDED line for dynamic linker.
+
+	[BZ #719]
+	* elf/Makefile: Run tst-tls9-static again.
+
+2005-02-22  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #719]
+	* sysdeps/generic/libc-tls.c (static_dtv): Size the same as the
+	slotinfo array.
+	(__libc_setup_tls): Initialize length of DTV based on array length.
+	* elf/dl-load.c: Revert last change.
+	* sysdeps/generic/dl-tls.c: Revert last change.
+
+	* posix/Makefile (tests): Add tst-execvp1, tst-execvp2, tst-execlp1,
+	tst-execlp2, tst-execv1, tst-execv2, tst-execl1, tst-execl2,
+	tst-execve1, tst-execve2, tst-execle1, and tst-execle2.
+	* posix/tst-execl1.c: New file.
+	* posix/tst-execl2.c: New file.
+	* posix/tst-execle1.c: New file.
+	* posix/tst-execle2.c: New file.
+	* posix/tst-execlp1.c: New file.
+	* posix/tst-execlp2.c: New file.
+	* posix/tst-execv1.c: New file.
+	* posix/tst-execv2.c: New file.
+	* posix/tst-execve1.c: New file.
+	* posix/tst-execve2.c: New file.
+	* posix/tst-execvp1.c: New file.
+	* posix/tst-execvp2.c: New file.
+
+2005-02-22  Roland McGrath  <roland@redhat.com>
+
+	* include/signal.h: Revert last change.
+	(__sigemptyset): Use __builtin_memset instead of memset.
+
+2005-02-22  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/libc_fatal.c (__libc_message): Use
+	non-cancelable I/O functions.
+
+2005-02-22  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #769]
+	* nscd/nscd-client.h: Include sys/uio.h.
+	(__readall, __readvall, writeall): New prototypes.
+	* nscd/connections.c (writeall): New function.
+	(handle_request): Use it.
+	* nscd/aicache.c (addhstaiX): Likewise.
+	* nscd/initgrcache.c (addinitgroupsX): Likewise.
+	* nscd/hstcache.c (cache_addhst): Likewise.
+	* nscd/grpcache.c (cache_addgr): Likewise.
+	* nscd/pwdcache.c (cache_addpw): Likewise.
+	* nscd/nscd_helper.c (__readall, __readvall): New functions.
+	* nscd/nscd_getai.c (__nscd_getai): Use them.
+	* nscd/nscd_getpw_r.c (__nscd_getpw_r): Likewise.
+	* nscd/nscd_getgr_r.c (__nscd_getgr_r): Likewise.
+	* nscd/nscd_gethst_r.c (__nscd_gethst_r): Likewise.
+	* nscd/nscd_initgroups.c (__nscd_getgrouplist): Likewise.
+
+2005-02-22  Roland McGrath  <roland@redhat.com>
+
+	* include/sys/socket.h: Declare __recv.
+	* sysdeps/generic/recv.c (recv): Rename to __recv, and add weak alias.
+	* sysdeps/mach/hurd/recv.c: Likewise.
+
+	* sysdeps/unix/sysv/linux/libc_fatal.c: Include <execinfo.h> for
+	__backtrace_* decls.
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+	(INTERNAL_SYSCALL_ERROR_P): Evalute VAL.  Parenthesize ERR.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise.
+
+	* include/signal.h: Include <string.h> for memset decl.
+
+2005-02-22  Andreas Schwab  <schwab@suse.de>
+
+	* posix/execvp.c (execvp): Fix invalid free.
+
+2005-02-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* malloc/Makefile (CFLAGS-mcheck-init.c): Add.
+	* sunrpc/Makefile: Add $(PIC-ccflag) to CFLAGS-x* for
+	librpcsvc.a objects.
+
+2005-02-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* iconvdata/ibm930.h: Correct Yen mapping.
+	* iconvdata/ibm939.h: Likewise.
+	* iconvdata/testdata/IBM930..UTF8: Adjust test data.
+	* iconvdata/testdata/IBM939..UTF8: Likewise.
+	Patch by Jiro Sekiba <SEKIBA@jp.ibm.com>.
+
+	* iconvdata/Makefile (modules): Add IBM1025, IBM1122, IBM1137, IBM1153,
+	IBM1154, IBM1155, IBM1156, IBM1157, and IBM1158.
+	(distribute): Add ibm1025.c, ibm1025.h, ibm1122.c, ibm1122.h,
+	ibm1137.c, ibm1137.h, ibm1153.c, ibm1153.h, ibm1154.c, ibm1154.h,
+	ibm1155.c, ibm1155.h, ibm1156.c, ibm1156.h, ibm1157.c, ibm1157.h,
+	ibm1158.c, and ibm1158.h.
+	* iconvdata/TESTS: Add IBM1025, IBM1122, IBM1137, IBM1153,
+	IBM1154, IBM1155, IBM1156, IBM1157, and IBM1158.
+	* iconvdata/gconv-modules: Likewise.
+	* iconvdata/ibm1025.c: New file.
+	* iconvdata/ibm1025.h: New file.
+	* iconvdata/ibm1122.c: New file.
+	* iconvdata/ibm1122.h: New file.
+	* iconvdata/ibm1137.c: New file.
+	* iconvdata/ibm1137.h: New file.
+	* iconvdata/ibm1153.c: New file.
+	* iconvdata/ibm1153.h: New file.
+	* iconvdata/ibm1154.c: New file.
+	* iconvdata/ibm1154.h: New file.
+	* iconvdata/ibm1155.c: New file.
+	* iconvdata/ibm1155.h: New file.
+	* iconvdata/ibm1156.c: New file.
+	* iconvdata/ibm1156.h: New file.
+	* iconvdata/ibm1157.c: New file.
+	* iconvdata/ibm1157.h: New file.
+	* iconvdata/ibm1158.c: New file.
+	* iconvdata/ibm1158.h: New file.
+	* iconvdata/testdata/IBM1025: New file.
+	* iconvdata/testdata/IBM1025..UTF8: New file.
+	* iconvdata/testdata/IBM1122: New file.
+	* iconvdata/testdata/IBM1122..UTF8: New file.
+	* iconvdata/testdata/IBM1137: New file.
+	* iconvdata/testdata/IBM1137..UTF8: New file.
+	* iconvdata/testdata/IBM1153: New file.
+	* iconvdata/testdata/IBM1153..UTF8: New file.
+	* iconvdata/testdata/IBM1154: New file.
+	* iconvdata/testdata/IBM1154..UTF8: New file.
+	* iconvdata/testdata/IBM1155: New file.
+	* iconvdata/testdata/IBM1155..UTF8: New file.
+	* iconvdata/testdata/IBM1156: New file.
+	* iconvdata/testdata/IBM1156..UTF8: New file.
+	* iconvdata/testdata/IBM1157: New file.
+	* iconvdata/testdata/IBM1157..UTF8: New file.
+	* iconvdata/testdata/IBM1158: New file.
+	* iconvdata/testdata/IBM1158..UTF8: New file.
+	Contributed by Jiro Sekiba <SEKIBA@jp.ibm.com>.
+
+2005-02-10  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regcomp.c (lower_subexp): Do not optimize empty
+	subexpressions even with REG_NOSUB.
+	* posix/rxspencer/tests: Add a previously failing testcase.
+
+2005-02-21  Alan Modra <amodra@bigpond.net.au>
+
+	[BZ #719]
+	* elf/dl-reloc.c (_dl_nothread_init_static_tls): Assert that dtv
+	array index is within bounds.
+
+2005-02-21  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #719]
+	* elf/dl-load.c: Do not allow PT_TLS in modules loaded in statically
+	linked code.
+	* sysdeps/generic/dl-tls.c [!SHARED]: Don't build _dl_next_tls_modid.
+	* elf/Makefile: Remove rules to build and run tst-tls9-static.
+
+	[BZ #719]
+	* elf/dl-reloc.c (_dl_nothread_init_static_tls): Avoid using
+	THREAD_DTV multiple times, this minimally reduces code size on
+	some archs.
+
+2005-02-21  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #768]
+	* nscd/nscd_gethst_r.c (nscd_gethst_r): Set *h_errnop to
+	NETDB_INTERNAL if buffer is too small.
+
+	[BZ #768]
+	* nscd/hstcache.c (INCR): Remove.
+	(addhstbyX): Double buflen in each iteration rather than add INCR.
+	* nscd/grpcache.c: Likewise.
+	* nscd/pwdcache.c: Likewise.
+
+2005-02-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/libc_fatal.c: Print backtrace and memory
+	map if requested.
+	* debug/chk_fail.c: Request backtrace and memory map dump.
+
+	* Versions.def: Add GLIBC_2.4 for libc.
+	* debug/fgets_chk.c: New file.
+	* debug/fgets_u_chk.c: New file.
+	* debug/getcwd_chk.c: New file.
+	* debug/getwd_chk.c: New file.
+	* debug/readlink_chk.c: New file.
+	* debug/read_chk.c: New file.
+	* debug/pread_chk.c: New file.
+	* debug/pread64_chk.c: New file.
+	* debug/recv_chk.c: New file.
+	* debug/recvfrom_chk.c: New file.
+	* debug/Versions: Add all new functions with version GLIBC_2.4.
+	* debug/Makefile (routines): Add fgets_chk, fgets_u_chk, read_chk,
+	pread_chk, pread64_chk, recv_chk, recvfrom_chk, readlink_chk,
+	getwd_chk, and getcwd_chk.  Plus appropriate CFLAGS definitions.
+	* debug/tst-chk1.c: Add more tests.
+	* libio/bits/stdio2.h: Add macros for fgets and fgets_unlocked.
+	* include/stdio.h: Declare __fgets_chk and __fgets_unlocked_chk.
+	* posix/unistd.h: Include <bits/unistd.h> for fortification.
+	* posix/bits/unistd.h: New file.
+	* posix/Makefile (headers): Add bits/unistd.h.
+	* socket/sys/socket.h: Include <bits/socket2.h> for fortification.
+	* socket/bits/socket2.h: New file.
+	* socket/Makefile (headers): Add bits/socket2.h.
+
+	* string/bits/string3.h: Extend memset macro to check for zero 3rd
+	parameter and use __memset_zero_constant_len_parameter in that case.
+	* sysdeps/generic/memset_chk.c: Add
+	__memset_zero_constant_len_parameter alias and linker warning.
+	* debug/Versions: Add __memset_zero_constant_len_parameter to libc
+	with version GLIBC_2.4.
+
+	* sysdeps/generic/bits/types.h: Don't unnecessarily use __extension__
+	in __STD_TYPE definition.
+
+2005-02-21  Jakub Jelinek  <jakub@redhat.com>
+
+	* malloc/malloc.c (malloc_printerr): If MALLOC_CHECK_={5,7}, print
+	the error message rather than program name.
+
+2005-02-21  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #767]
+	* posix/unistd.h: symlink and readlink are unconditionally
+	available in the 2001 spec.
+
+2005-02-16  Roland McGrath  <roland@redhat.com>
+
+	* intl/dcigettext.c (_nl_find_msg): Add a cast.
+
+	* nis/nis_clone_dir.c (nis_clone_directory): Use char * for ADDR.
+	* nis/nis_clone_obj.c (nis_clone_object): Likewise.
+	* nis/nis_clone_res.c (nis_clone_result): Likewise.
+
+	* resolv/nss_dns/dns-network.c (getanswer_r): Use const unsigned char *
+	for END_OF_MESSAGE and CP.
+
+	* resolv/res_send.c (send_dg): Add else branch for case impossible
+	unless `poll' is buggy.
+
+	* crypt/crypt_util.c (__setkey_r): Add a cast.
+
+	* locale/programs/linereader.c (get_toplvl_escape): Use size_t for
+	NBYTES, and unsigned char * for BYTES.
+
+	* locale/programs/charmap.c (charmap_new_char): Use size_t and
+	unsighed char * for NBYTES, BYTES parameters.
+
+	* sysdeps/generic/dl-hash.h (_dl_elf_hash): Take const char * argument
+	and cast it.
+	* sysdeps/i386/i686/dl-hash.h (_dl_elf_hash): Likewise.
+
+	* sunrpc/create_xid.c (_create_xid): Don't use unsigned long for RES.
+
+	* sunrpc/svcauth_des.c (_svcauth_des): Fix cast type.
+
+	* sunrpc/auth_des.c (authdes_create): Don't use u_char for PKEY_DATA.
+	(authdes_marshal): Don't use unsigned int for LEN.
+	* sunrpc/xdr.c (xdr_hyper): Don't use unsigned long for T2.
+	(xdr_u_hyper): Likewise.
+	(xdr_u_short): Don't use u_long for L.
+	* sunrpc/xdr_intXX_t.c (xdr_int64_t): Don't use uint32_t for T2.
+
+	* inet/rexec.c (rexec_af): Use socklen_t.
+	* sunrpc/key_call.c (getkeyserv_handle): Likewise.
+	* sunrpc/rtime.c (rtime): Likewise.
+	* resolv/res_send.c (send_vc, send_dg): Likewise.
+	* nis/nis_callback.c (__nis_create_callback): Likewise.
+
+	* sysdeps/generic/libc-start.c: Use unsigned int for nthreads ptr.
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Fix type of ADDR local.
+
+	* libio/libio.h (_IO_BE): Add parenthesis around EXPR.
+
+	* intl/dcigettext.c (INTVARDEF, INTUSE): Macros removed.
+	(_nl_default_dirname): Use libc_hidden_data_def instead of INTVARDEF.
+	(libc_freeres_fn, DCIGETTEXT): Don't use INTUSE.
+	* intl/bindtextdom.c (INTUSE): Macro removed.
+	(_nl_default_dirname): Use libc_hidden_proto.
+	(set_binding_values): Don't use INTUSE.
+	* include/libintl.h (_libc_intl_domainname_internal): Decl removed.
+	(_libc_intl_domainname): Use libc_hidden_proto.
+	* posix/regex_internal.h (gettext): Remove INTUSE on it.
+	* locale/SYS_libc.c (_libc_intl_domainname): Use libc_hidden_data_def
+	rather than INTDEF.
+	* include/libintl.h (_): Don't use *_internal name.
+
+	* ctype/ctype-extn.c (__ctype_tolower, __ctype_toupper): Use int32_t,
+	not uint32_t.
+	* locale/lc-ctype.c (_nl_postload_ctype): Likewise for assignments.
+
+	* iconv/gconv_open.c (__gconv_open): Remove useless cast.
+
+	[BZ #721]
+	* sysdeps/i386/dl-machine.h (ELF_MACHINE_NO_RELA): Define this outside
+	of [RESOLVE_MAP].
+	* sysdeps/sh/dl-machine.h (ELF_MACHINE_NO_REL): Likewise.
+	* sysdeps/powerpc/powerpc32/dl-machine.h
+	(elf_machine_rel, elf_machine_rel_relative): Removed.
+	* sysdeps/powerpc/powerpc64/dl-machine.h
+	(elf_machine_rel, elf_machine_rel_relative): Removed.
+
+2005-02-03  Alexandre Oliva  <aoliva@redhat.com>
+
+	[BZ #721]
+	* elf/dynamic-link.h: Don't declare nested auto functions that are
+	not going to be defined.
+
+2004-07-23  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #284]
+	* include/features.h (_POSIX_SOURCE, _POSIX_C_SOURCE): Define
+	if _XOPEN_SOURCE >= 500 even if __STRICT_ANSI__ is defined.
+
+2005-02-16  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/generic/libc-start.c (LIBC_START_MAIN): Move UBP_EV defn
+	inside [! SHARED] where it's used.
+
+2005-02-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/generic/bits/byteswap.h: Make sure result of all the
+	functions and macros is unsigned.
+
+2005-02-11  Barry deFrese  <bddebian@comcast.net>
+
+	[BZ #722]
+	* sysdeps/mach/hurd/setresgid.c: Use weak_alias.
+	* sysdeps/mach/hurd/setresuid.c: Likewise.
+
+2005-02-14  GOTO Masanori  <gotom@debian.or.jp>
+
+	* misc/sys/syslog.h: Fix typo in comment.
+
+2005-02-14  Roland McGrath  <roland@redhat.com>
+
+	[BZ #720]
+	* sysdeps/unix/sysv/linux/sys/kd.h: Don't leave _LINUX_TYPES_H defined
+	if it wasn't originally.
+
+2005-02-14  GOTO Masanori  <gotom@debian.or.jp>
+
+	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove the duplicated
+	getpeername entry.
+	* sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise.
+
+2005-02-11  Jakub Jelinek  <jakub@redhat.com>
+
+	* scripts/soversions.awk: Only record first WORDSIZE{32,64}
+	matching line.
+
+2005-02-14  Alan Modra  <amodra@bigpond.net.au>
+
+	* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Define
+	with auto inline, and attribute always_inline.
+	(elf_machine_rela_relative, elf_machine_lazy_rel): Likewise.
+	(elf_machine_rel, elf_machine_rel_relative): Likewise.
+	* sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise.
+	(elf_machine_rela_relative, elf_machine_lazy_rel): Likewise.
+	(elf_machine_rel, elf_machine_rel_relative): Likewise.
+	(elf_machine_tprel): Likewise.
+
+2005-02-14  Andreas Schwab  <schwab@suse.de>
+
+	* manual/filesys.texi (Random Access Directory): Fix type of file
+	position value for telldir and seekdir.
+	(Attribute Meanings): Fix typo.
+
+2005-02-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* csu/elf-init.c (__libc_csu_fini): Enable if LIBC_NONSHARED
+	isn't defined.
+	* sysdeps/generic/libc-start.c (LIBC_START_MAIN): Call fini
+	if SHARED isn't defined.
+	* elf/Makefile (tests-static): Add tst-array1-static.
+	($(objpfx)tst-array1-static.out): New target.
+	* elf/tst-array1-static.c: New file.
 
 2005-02-11  Jakub Jelinek  <jakub@redhat.com>
 
 	* debug/chk_fail.c (__chk_fail): Add a while (1) loop around
 	__libc_message to kill GCC warning about noreturn function returning.
 
+	* elf/rtld.c (dlmain): If LD_TRACE_PRELINKING, clear l_relocated flag
+	before relocating ld.so again.
+
 	* elf/rtld.c (_dl_start): Set bootstrap_map.l_relocated even
 	for already prelinked ld.so.
 
-	* scripts/soversions.awk: Only record first WORDSIZE{32,64}
-	matching line.
-
+>>>>>>> 1.9238
 2005-02-11  Roland McGrath  <roland@redhat.com>
 
 	[BZ #715]
@@ -127,7 +595,7 @@
 
 2005-02-07  Ulrich Drepper  <drepper@redhat.com>
 
-	* elf/dl-load.c (_dl_map_object_from_fd): Makre sure registers are
+	* elf/dl-load.c (_dl_map_object_from_fd): Make sure registers are
 	set correctly.
 
 2005-01-07  Richard Henderson  <rth@redhat.com>
@@ -142,6 +610,7 @@
 
 2005-01-07  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #738]
 	* elf/dl-load.c (open_path): If rtld_search_dirs is in RELRO segment,
 	avoid writing to it if none of the standard search directories exist.
 
@@ -162,9 +631,11 @@
 
 2005-02-07  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #741]
 	* nscd/nscd.c (termination_handler): Avoid segfault if some database
 	is not enabled.
 
+	[BZ #741]
 	* nscd/nscd_getai.c (__nscd_getai): If ai_resp->found == -1, set
 	__nss_not_use_nscd_hosts and return -1.
 	* nscd/nscd_initgroups.c (__nscd_getgrouplist): If
@@ -205,6 +676,7 @@
 
 2005-02-07  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #742]
 	* nscd/nscd.init (reload): Print Reloading nscd: before and a newline
 	after the status string printed by killproc.
 
@@ -233,6 +705,7 @@
 	* shadow/sgetspent_r.c (FALSE): Macro renamed to ...
 	(FALSEP): ... this.  Updated all references.
 
+	[BZ #765]
 	* libio/fmemopen.c: Include <stdint.h>.
 
 2005-01-30  Ulrich Drepper  <drepper@redhat.com>
@@ -272,6 +745,7 @@
 	La_s390_64_regs, La_s390_64_retval): New.
 	* elf/tst-auditmod1.c: Add s390 entries.
 
+	[BZ #743]
 	* sysdeps/s390/bits/string.h (strlen, strncpy, strcat, strncat,
 	strncat, memchr, strcmp): Add missing memory clobber.
 
@@ -403,6 +877,7 @@
 
 2005-01-23  Roland McGrath  <roland@redhat.com>
 
+	[BZ #737]
 	* sysdeps/i386/Makefile (defines): If -mno-tls-direct-seg-refs appears
 	in $(CFLAGS), add -DNO_TLS_DIRECT_SEG_REFS.
 	* sysdeps/unix/sysv/linux/i386/sysdep.h [USE___THREAD]
@@ -412,6 +887,7 @@
 
 2005-01-25  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #731]
 	* stdlib/fmtmsg.c (addseverity): Remove new_string variable.
 	(free_mem): Don't free string.
 	* stdlib/tst-fmtmsg.c: Include string.h.
@@ -419,12 +895,15 @@
 
 2005-01-25  Andreas Schwab  <schwab@suse.de>
 
+	[BZ #736]
 	* timezone/asia: Update from tzdata2005c.
 	* timezone/backward: Likewise.
+	* timezone/europe: Likewise.
 	* timezone/leapseconds: Likewise.
 	* timezone/northamerica: Likewise.
 	* timezone/southamerica: Likewise.
 
+	[BZ #736]
 	* timezone/private.h: Update from tzcode2005c.
 	* timezone/tzfile.h: Likewise.
 	* timezone/zdump.c: Likewise.
@@ -445,6 +924,7 @@
 
 2005-01-24  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #671]
 	* misc/syslog.c: Moved to...
 	* sysdeps/generic/syslog.c: ...here.
 	[NO_SIGIPE]: Don't install SIGPIPE handler.
@@ -484,6 +964,7 @@
 
 2005-01-21  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #735]
 	* elf/Makefile: Add rules to build and run tst-align2.
 	* elf/tst-align2.c: New test.
 	* elf/tst-alignmod2.c: New file.
@@ -498,7 +979,7 @@
 	stack.
 	* posix/execle.c: Likewise.
 	* posix/execlp.c: Likewise.
-	* posix/execlp.c: Likewise.
+	* posix/execvp.c: Likewise.
 	(script_execute): Removed.
 	(allocate_scripts_argv): New function.  Called at most once to
 	allocate memory, not every time a script is run.  Adjust caller.
@@ -528,6 +1009,7 @@
 
 2005-01-17  Roland McGrath  <roland@redhat.com>
 
+	[BZ #745]
 	* nscd/Makefile (LDLIBS-nscd): New variable.
 	($(objpfx)nscd): Use that instead of selinux-LIBS.
 
@@ -541,6 +1023,7 @@
 
 2005-01-16  GOTO Masanori  <gotom@debian.or.jp>
 
+	[BZ #734]
 	* sysdeps/unix/rewinddir.c: Reset filepos.
 	* dirent/tst-seekdir.c: Check telldir value after calling rewinddir.
 
@@ -565,6 +1048,7 @@
 	* posix/regcomp.c [!_LIBC] (init_dfa): Fix determining of relevant
 	LC_* variable.  Patch by Aharon Robbins <arnold@skeeve.com>.
 
+	[BZ #731]
 	* stdlib/fmtmsg.c (internal_addseverity): Remove incorrect free call.
 	* stdlib/tst-fmtmsg.c (main): Add another addseverity test.
 
@@ -600,6 +1084,7 @@
 
 2005-01-11  Thorsten Kukuk  <kukuk@suse.de>
 
+	[BZ #733]
 	* sunrpc/svc_tcp.c (svctcp_create): Call listen with SOMAXCONN
 	as backlog.
 	* sunrpc/svc_unix.c (svcunix_create): Likewise.
@@ -624,6 +1109,7 @@
 
 2005-01-10  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #732]
 	* time/tst-strptime.c (day_tests): Add 2 new tests.
 	(test_tm, main): Issue an error instead of segfaulting if
 	strptime returns NULL.
@@ -665,6 +1151,7 @@
 
 2005-01-09  Andreas Jaeger  <aj@suse.de>
 
+	[BZ #732]
 	* time/strptime_l.c (__strptime_internal): Add braces to avoid
 	warning.
 
@@ -853,6 +1340,7 @@
 
 2004-12-22  Steven Munroe  <sjmunroe@us.ibm.com>
 
+	[BZ #602]
 	* math/libm-test.inc (rint_test_tonearest): New test.
 	(rint_test_towardzero): New test.
 	(rint_test_downward): New test.
@@ -908,6 +1396,7 @@
 
 2004-12-29  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/libm_support.h (__libm_error_support): Use
 	libc_hidden_proto instead of HIDDEN_PROTO.
 	* sysdeps/ia64/fpu/libm-symbols.h (HIDDEN_PROTO): Remove.
@@ -916,6 +1405,7 @@
 
 2004-12-28  David Mosberger  <davidm@hpl.hp.com>
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/Makefile (duplicated-routines): New macro.
 	(sysdep_routines): Replace libm_ldexp{,f,l} and libm_scalbn{,f,l}
 	with $(duplicated-routines).
@@ -924,14 +1414,17 @@
 
 2004-12-27  David Mosberger  <davidm@hpl.hp.com>
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/libm-symbols.h: Add include of <sysdep.h> and
 	undefine "ret" macro.  Add __libm_error_support hidden definitions.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/e_lgamma_r.c: Remove CVS-id comment.  Add
 	missing portion of copyright statement.
 	* sysdeps/ia64/fpu/e_lgammaf_r.c: Likewise.
 	* sysdeps/ia64/fpu/e_lgammal_r.c: Likewise.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/w_lgamma.c: Remove CVS-id comment.  Add
 	missing portion of copyright statement.
 	(__ieee754_lgamma): Rename from lgamma().  Make lgamma() a weak alias.
@@ -941,6 +1434,7 @@
 
 2004-12-09  H. J. Lu <hjl@lucon.org>
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/s_nextafterl.c: Remove.
 	* sysdeps/ia64/fpu/s_nexttoward.c: Likewise.
 	* sysdeps/ia64/fpu/s_nexttowardf.c: Likewise.
@@ -950,6 +1444,7 @@
 
 2004-11-18  David Mosberger  <davidm@hpl.hp.com>
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/README: New file.
 	* sysdeps/ia64/fpu/gen_import_file_list: New file.
 	* sysdeps/ia64/fpu/import_check: Likewise.
@@ -958,6 +1453,7 @@
 	* sysdeps/ia64/fpu/import_intel_libm: Likewise.
 	* sysdeps/ia64/fpu/libm-symbols.h: Likewise.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/e_acos.S: Update from Intel libm v2.1+.
 	* sysdeps/ia64/fpu/e_acosf.S: Likewise.
 	* sysdeps/ia64/fpu/e_acosl.S: Likewise.
@@ -1055,6 +1551,7 @@
 	* sysdeps/ia64/fpu/s_truncf.S: Likewise.
 	* sysdeps/ia64/fpu/s_truncl.S: Likewise.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/e_acosh.S: New file from Intel libm v2.1+.
 	* sysdeps/ia64/fpu/e_acoshf.S: Likewise.
 	* sysdeps/ia64/fpu/e_acoshl.S: Likewise.
@@ -1126,6 +1623,7 @@
 	* sysdeps/ia64/fpu/w_tgammaf.S: Likewise.
 	* sysdeps/ia64/fpu/w_tgammal.S: Likewise.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/e_gamma_r.c: New empty dummy-file.
 	* sysdeps/ia64/fpu/e_gammaf_r.c: Likewise.
 	* sysdeps/ia64/fpu/e_gammal_r.c: Likewise.
@@ -1153,6 +1651,7 @@
 	* sysdeps/ia64/fpu/w_sinhf.c: Likewise.
 	* sysdeps/ia64/fpu/w_sinhl.c: Likewise.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/libm_atan2_reg.S: Remove.
 	* sysdeps/ia64/fpu/s_ldexp.S: Likewise.
 	* sysdeps/ia64/fpu/s_ldexpf.S: Likewise.
@@ -1161,15 +1660,19 @@
 	* sysdeps/ia64/fpu/s_scalbnf.S: Likewise.
 	* sysdeps/ia64/fpu/s_scalbnl.S: Likewise.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/s_sincos.c: Make it an empty dummy-file.
 	* sysdeps/ia64/fpu/s_sincosf.c: Likewise.
 	* sysdeps/ia64/fpu/s_sincosl.c: Likewise.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/e_atan2l.S: Add "Not needed" comment.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/s_copysign.S: Add __libm_copysign{,f,l}
 	alias for use by libm_error.c
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/Makefile (libm-sysdep_routines): Remove
 	libm_atan2_reg, libm_tan, libm_frexp4{f,l}.
 	Mention s_erfc{,f,l}, libm_frexp{,f,l}, libm_ldexp{,f,l},
@@ -1183,11 +1686,13 @@
 
 2005-01-05  Steven Munroe  <sjmunroe@us.ibm.com>
 
+	[BZ #729]
 	* elf/rtld.c (dl_main) [NEED_DL_SYSINFO_DSO]: Insure l_map_end and
 	l_text_end are set for a VDSO with a single PT_LOAD entry.
 
 2005-01-05  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #730]
 	* libio/iofopncook.c (_IO_cookie_seekoff): Define.  Mark offset as
 	invalid to disable optimizations in fileops which won't work here.
 	(_IO_cookie_jumps): Use it.
@@ -1206,6 +1711,7 @@
 
 2005-01-03  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #727]
 	* sysdeps/generic/libc-start.c [SHARED] (__libc_start_main): Don't
 	initialize __environ again.
 	* stdlib/Makefile: Add rules to build and run tst-putenv.
@@ -1232,10 +1738,12 @@
 
 	* po/es.po: Update from translation team.
 
+	[BZ #726]
 	* sysdeps/generic/dl-tls.c (__tls_get_addr): Fix typo.
 
 2004-12-27  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #744]
 	* include/signal.h: Define __sigemptyset.
 
 2004-04-27  Paolo Bonzini  <bonzini@gnu.org>
@@ -1251,10 +1759,12 @@
 
 2004-12-21  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #723]
 	* sysdeps/unix/sysv/linux/i386/clone.S (__clone): Make sure %esp when
 	calling fn is 16 byte aligned.
 	* sysdeps/i386/tst-stack-align.h: New file.
 
+	[BZ #725]
 	* misc/efgcvt_r.c (FLOAT_MIN_10_EXP, FLOAT_MIN_10_NORM): Define.
 	(ecvt_r): Special case denormals.
 	* misc/qefgcvt_r.c (FLOAT_MIN_10_EXP, FLOAT_MIN_10_NORM): Define.
@@ -1266,6 +1776,7 @@
 	* version.h (RELEASE, VERSION): development, 2.3.90
 	* include/features.h (__GLIBC_MINOR__): Now 4.
 
+<<<<<<< ChangeLog
 2004-12-20  Jakub Jelinek  <jakub@redhat.com>,
 	    Jim Gifford  <giffordj@linkline.com>
 
@@ -6827,5 +7338,4 @@
 	* stdio-common/tst-sscanf.c (int_tests): New array.
 	(main): Run int_tests.
 
-
-See ChangeLog.14 for earlier changes.
+See ChangeLog.15 for earlier changes.
diff --git a/ChangeLog.15 b/ChangeLog.15
new file mode 100644
index 0000000000..5d9b00d42a
--- /dev/null
+++ b/ChangeLog.15
@@ -0,0 +1,5480 @@
+2004-12-20  Jakub Jelinek  <jakub@redhat.com>,
+	    Jim Gifford  <giffordj@linkline.com>
+
+	[BZ #562]
+	* sysdeps/mips/Makefile (librt-sysdep_routines): Add.
+	* sysdeps/unix/mips/rt-sysdep.S: New file.
+
+2004-12-19  Roland McGrath  <roland@redhat.com>
+
+	* iconv/Makefile (test-iconvconfig): New target.
+	[$(cross-compiling) != yes] (xtests): Depend on it.
+
+	* iconv/iconvconfig.c (nostdlib, output_file, output_file_len):
+	New variables.
+	(options, parse_opt, main): Take new options --nostdlib and
+	--output/-o to set them.  Under --nostdlib, skip GCONV_PATH dirs.
+	(write_output): If output_file is set, write the output there.
+
+2004-12-19  Andreas Jaeger  <aj@suse.de>
+
+	[BZ #560]
+	* inet/netinet/in.h: Use __interface_addr instead of __interface.
+
+	[BZ #573]
+	* sunrpc/xcrypt.c (passwd2des_internal): Make it hidden instead of
+	internal linkage.
+
+2004-12-19  Roland McGrath  <roland@frob.com>
+
+	* version.h (VERSION): 2.3.4.
+	* README.template: Various updates.
+	* README: Regenerated.
+	* NEWS: Mention ports.
+	* README-alpha: File removed.
+
+	[BZ #416]
+	* locale/langinfo.h: Comment fixes.
+
+2004-12-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* po/ja.po: Update from translation team.
+
+2004-12-17  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/unix/sysv/linux/alpha/clone.S (__clone): Add support
+	for NPTL where the PID is stored at userlevel and needs to be
+	reset when CLONE_THREAD is not used.
+
+2004-12-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update.
+
+2004-12-17  Andreas Jaeger  <aj@suse.de>
+
+	* math/libm-test.inc (atan2_test): Compute value with 36 digits.
+	* sysdeps/alpha/fpu/libm-test-ulps: Adjust for changed result.
+	* sysdeps/powerpc/fpu/libm-test-ulps: Likewise.
+	* sysdeps/s390/fpu/libm-test-ulps: Likewise.
+	* sysdeps/sparc/sparc32/fpu/libm-test-ulps: Likewise.
+	* sysdeps/sparc/sparc64/fpu/libm-test-ulps: Likewise.
+	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
+
+2004-12-16  Ulrich Drepper  <drepper@redhat.com>
+
+	* stdlib/tst-setcontext.c: Enlarge st1 and st2 arrays.
+
+2004-09-02  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	[BZ #610]
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
+	(__novec_getcontext): Fix typo in store of fp29.
+	(__getcontext): Fix typo in store of fp29.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
+	(__novec_swapcontext): Fix typo in store of fp29.
+	(__swapcontext): Fix typo in store of fp29.
+
+2004-12-17  GOTO Masanori  <gotom@debian.or.jp>
+
+	* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Fix
+	vague message.
+
+2004-12-16  Roland McGrath  <roland@redhat.com>
+
+	* nscd/Makefile ($(objpfx)nscd): Don't depend on $(selinux-LIBS),
+	which is usually a -lselinux that make will resolve wrongly.
+
+2004-12-16  Andreas Jaeger  <aj@suse.de>
+
+	* math/math.h: Use #if defined to not receive warnings about
+	undefined symbols.
+
+2004-12-16  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Add support
+	for NPTL where the PID is stored at userlevel and needs to be reset
+	when CLONE_THREAD is not used.
+
+	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+	(SYSCALL_ERROR_HANDLER): If RTLD_PRIVATE_ERRNO, use rtld_errno
+	instead of errno.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/socket.S: Include
+	sysdep-cancel.h instead of sysdep.h.  Handle cancellation.
+	* sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerate.
+
+	* sysdeps/ieee754/ldbl-128/e_expl.c: Include stdlib.h.
+
+2004-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/gethostid.c: Make bi-arch safe.
+
+2004-12-15  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Correct stack
+	alignment.  Clean up flag bit tests.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Correct stack
+	alignment.  Clean up flag bit tests.  Remove redundent SP assignment.
+	Add TOC register save/restore around function call.
+
+	* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Make no_vmx symbol
+	local.
+	* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Make no_vmx symbol
+	local.
+	* sysdeps/powerpc/powerpc64/__longjmp-common.S: Make no_vmx symbol
+	local.
+	* sysdeps/powerpc/powerpc64/setjmp-common.S: Make no_vmx and
+	aligned_save_vmx symbol local.
+
+2004-12-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/i386/i486/bits/string.h (__strncat_g): Fix i686
+	implementation.
+
+2004-09-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makeconfig (libunwind): New.
+	(libgcc_eh): Add $(libunwind).
+	(gnulib): Always set to -lgcc $(libgcc_eh).
+	(static-gnulib): Always set to -lgcc -lgcc_eh $(libunwind).
+	(libc.so-gnulib): New.
+	* Makerules (LDLIBS-c.so): Use $(libc.so-gnulib) instead of
+	$(static-gnulib).
+	* configure.in (libc_cv_cc_with_libunwind): Set to yes if gcc
+	uses -lunwind for static binaries.
+
+2004-06-05  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+	* malloc/Makefile (install-bin): Remove memusage.
+	(install-bin-script): Add memusage.
+
+2004-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* nis/nis_domain_of_r.c (nis_domain_of_r): Use libnsl_hidden_def,
+	not libnsl_hidden_proto.
+
+	* sysdeps/unix/sysv/linux/s390/s390-32/clone.S (__clone): Add support
+	for NPTL where the PID is stored at userlevel and needs to be reset
+	when CLONE_THREAD is not used.
+	* sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Likewise.
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S (__clone): Save
+	and restore r2 around call to fn.
+
+2004-12-15  Andreas Jaeger  <aj@suse.de>
+
+	* sysdeps/ia64/dl-machine.h (elf_machine_rela): Mark auto instead
+	of static, add always_inline attribute.
+	(elf_machine_rela_relative): Likewise.
+	(elf_machine_lazy_rel): Likewise.
+
+2004-12-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Add support
+	for pid caching in nptl.
+
+2004-12-14  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Add support
+	for pid caching in nptl.
+
+2004-10-18  Maciej W. Rozycki  <macro@mips.com>
+
+	* sysdeps/unix/sysv/linux/mips/bits/socket.h (__cmsg_nxthdr): Use
+	__NTH instead of __THROW in the inline definition.
+	* sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Likewise.
+
+	* sysdeps/mips/bits/dlfcn.h (RTLD_DEEPBIND): New macro.
+
+	* sysdeps/unix/sysv/linux/mips/bits/mman.h
+	(PROT_GROWSDOWN, PROT_GROWSUP): New macros.
+
+2004-10-06  Alan Modra  <amodra@bigpond.net.au>
+
+	* sysdeps/powerpc/powerpc64/ppc-mcount.S (PROF): Don't undef.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S: Invoke CALL_MOUNT.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: Likewise.
+
+2004-10-19  Wolfram Gloger  <wg@malloc.de>
+
+	* malloc/hooks.c (mem2chunk_check, top_check): Handle
+	non-contiguous arena.  Reported by Michael Dalton
+	<mwdalton@stanford.edu> [BZ #457].  Add further checks for top chunk.
+
+2004-12-14  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/posix/sysconf.c (__sysconf_check_spec): Remove leading
+	underscore from GETCONF_DIR filenames.
+
+2004-12-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* po/de.po: Update from translation team.
+
+	* nss/getnssent.c (__nss_getent): Double buffer size each round to
+	avoid problems with delays for some people's huge entries.
+	* nss/getXXbyYY.c (FUNCTION_NAME): Likewise.
+
+2004-12-13  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/getconf.c (main): Prepend just $GETCONF_DIR/ instead of
+	$GETCONF_DIR/_ to spec.
+	* posix/confstr.c (confstr): Remove leading underscores for
+	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS.
+
+2004-12-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-load.c (_dl_map_object_from_fd): Fix computation of
+	mapping start.  It must take the actual pagesize into account, not
+	the alignment in the file.
+
+2004-12-11  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (_int_realloc): Add checks for corrupted memory.
+	(_int_free): Make clear message are result of free() calls.
+
+	* malloc/malloc.c (_int_realloc): Remove unnecessary tests for
+	oldmem and size == 0.
+
+2004-12-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/arena.c (arena_get2): Prevent endless loop if arenas and
+	list lock are taken.
+
+2004-12-08  Thorsten Kukuk  <kukuk@suse.de>
+
+	* nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_getnetgrent_r):
+	Add check if the value is not an empty string.  [BZ #597]
+
+2004-11-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* stdlib/strtod_l.c (INTERNAL (__STRTOF)): If densize > 2
+	and numsize < densize, always shift num up by empty + 1 limbs.
+
+2004-12-07  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regexec.c (proceed_next_node): Simplify treatment of epsilon
+	nodes.  Pass the pushed node to push_fail_stack.
+	(push_fail_stack): Accept a single node rather than an array
+	of two epsilon destinations.
+	(build_sifted_states): Only walk non-epsilon nodes.
+	(check_arrival): Don't pass epsilon nodes to
+	check_arrival_add_next_nodes.
+	(check_arrival_add_next_nodes) [DEBUG]: Abort if an epsilon node is
+	found.
+	(check_node_accept): Do expensive checks later.
+	(add_epsilon_src_nodes): Cache result of merging the inveclosures.
+	* posix/regex_internal.h (re_dfastate_t): Add non_eps_nodes and
+	inveclosure.
+	(re_string_elem_size_at, re_string_char_size_at, re_string_wchar_at,
+	re_string_context_at, re_string_peek_byte_case,
+	re_string_fetch_byte_case, re_node_set_compare, re_node_set_contains):
+	Declare as pure.
+	* posix/regex_internal.c (create_newstate_common): Remove.
+	(register_state): Move part of it here.  Initialize non_eps_nodes.
+	(free_state): Free inveclosure and non_eps_nodes.
+	(create_cd_newstate, create_ci_newstate): Allocate the new
+	re_dfastate_t here.
+
+2004-12-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (public_rEALLOc): Add parameter checks.
+	(_int_free): Provide better error message for invalid pointers.
+
+2004-12-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/tst-regex.c: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+	conditionals instead of defined _POSIX_CPUTIME.
+	(main): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME
+	option is available.
+	* posix/tst-regex.c2: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+	conditionals instead of defined _POSIX_CPUTIME.
+	(do_test): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME
+	option is available.
+	* sysdeps/posix/sysconf.c (__sysconf): If _POSIX_CPUTIME resp.
+	_POSIX_THREAD_CPUTIME is defined to 0, return -1 for the corresponding
+	_SC_ argument.
+
+2004-12-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/ldd.bash.in: When set -o pipefail is available, use that for
+	piping to cat; when not, don't use the pipe at all.
+	Pipe to cat in all cases of running the executable.
+	When direct running exits with code 5, retry running via ${RTLD}.
+	* elf/rtld.c (process_envvars): If __libc_enable_secure and
+	mode != normal, exit with exitcode 5.
+
+2004-12-07  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/posix/sysconf.c (__sysconf_check_spec): Only define
+	if it will be actually used.
+
+2004-12-07  Roland McGrath  <roland@redhat.com>
+
+	* rt/tst-timer5.c (setup_test): New function.
+	(TEST_CLOCK_MISSING): Use it to punt test if timer_create does not
+	support CLOCK_MONOTONIC.
+
+2004-12-07  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Add support for
+	NPTL where the PID is stored at userlevel and needs to be reset when
+	CLONE_THREAD is not used.  Restore gp before calling _exit.
+
+2004-12-07  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/unix/sysv/linux/sh/clone.S: Clear the frame pointer when
+	starting a new thread.  Add support for NPTL where the PID is stored
+	at userlevel and needs to be reset when CLONE_THREAD is not used.
+
+2004-12-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/rtld.c (process_envvars): Don't consider LD_SHOW_AUXV
+	and LD_DYNAMIC_WEAK if __libc_enable_secure.
+	If __libc_enable_secure, /etc/suid-debug doesn't exist and
+	program will be actually run, turn off all debugging.
+	* sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add LD_DEBUG,
+	LD_DYNAMIC_WEAK and LD_SHOW_AUXV.
+
+2004-12-06  Jakub Jelinek  <jakub@redhat.com>
+
+	* time/tzset.c (tzset_internal): If + or - is seen,
+	but no offset after it, reset offset to 0.  [BZ #601]
+
+2004-12-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* libio/ioseekpos.c (_IO_seekpos_unlocked): Call _IO_SEEKOFF not
+	_IO_SEEKPOS, saving one indirect jump.
+
+	* libio/fileops.c (_IO_new_file_seekoff): Fix optimization of in-buffer
+	seek.  Remove dead code.
+
+2004-12-02  Jakub Jelinek  <jakub@redhat.com>
+
+	* libio/Makefile (tests): Add bug-ungetc4.
+	* libio/bug-ungetc4.c: New test.
+
+2004-12-06  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/clock_nanosleep.c (clock_nanosleep): Diagnose EINVAL
+	for CLOCK_THREAD_CPUTIME_ID, not ENOTSUP.
+	Use SYSDEP_NANOSLEEP handler before validating CLOCK_ID value.
+
+	* rt/tst-timer4.c (TEST_CLOCK, TEST_CLOCK_NANOSLEEP): New macros.
+	Use them throughout in place of CLOCK_REALTIME and nanosleep.
+	(do_test) [TEST_CLOCK_MISSING]: Call this macro and if it returns
+	non-null, punt the test with a message using the string returned.
+	* rt/tst-timer5.c: New file.
+	* rt/Makefile (tests): Add it.
+
+2004-12-01  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regcomp.c (free_dfa_content, init_dfa): Remove
+	references to re_dfa_t's subexps field.
+	(parse_sub_exp, parse_expression): Do not use it.  Use
+	completed_bkref_map instead.
+	(create_initial_state, peek_token): Store a backreference \N
+	with opr.idx = N-1.
+	* posix/regexec.c (proceed_next_node, check_dst_limits, get_subexp):
+	Likewise.
+	(check_subexp_limits): Remove useless condition.
+	* posix/regex_internal.h (re_subexp_t): Remove.
+	(re_dfa_t): Remove subexps and subexps_alloc field, add
+	completed_bkref_map.
+
+2004-12-05  Roland McGrath  <roland@frob.com>
+
+	* Makeconfig: Comment typo fix.
+
+2004-11-30  Andreas Schwab  <schwab@suse.de>
+
+	* nis/ypclnt.c (ypprot_err): Remove unused entries.
+
+2004-11-30  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regexec.c (check_dst_limits_calc_pos_1): Check for
+	bkref_idx == -1, and don't recurse in that case.
+
+2004-11-30  GOTO Masanori  <gotom@debian.or.jp>
+
+	* posix/confstr.c: Enclose #error message with double quote
+	for gcc-3.3 and lower.
+
+2004-12-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/clone.S: Add support for NPTL where
+	the PID is stored at userlevel and needs to be reset when CLONE_THREAD
+	is not used.
+	* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
+
+2004-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* sysdeps/arm/sysdep.h: Define __USE_BX__ if bx is available.
+	Use it instead of __THUMB_INTERWORK__.  Make RETINSTR take
+	only a condition and a register.
+	* sysdeps/arm/dl-machine.h: Use __USE_BX__ instead of
+	__THUMB_INTERWORK__.
+	(_dl_start_user): Use BX.
+	* sysdeps/arm/strlen.S: Use DO_RET.
+	* sysdeps/unix/arm/brk.S: Likewise.
+	* sysdeps/unix/arm/fork.S: Likewise.
+	* sysdeps/unix/arm/sysdep.S: Likewise.
+	* sysdeps/unix/arm/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/arm/clone.S: Update uses of RETINSTR.
+	* sysdeps/unix/sysv/linux/arm/mmap.S: Likewise.
+	* sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise.
+	* sysdeps/unix/sysv/linux/arm/socket.S: Likewise.
+	* sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/arm/vfork.S: Likewise.
+
+2004-12-02  Roland McGrath  <roland@redhat.com>
+
+	* extra-lib.mk (object-suffixes-$(lib)): Add .oS when
+	$(lib)-static-only-routines is nonempty.
+	(extra-objs, o-iterator.mk rule): Filter out .oS from generators.
+	Add a special rule for .oS objects -> _nonshared.a library.
+
+2004-12-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* time/mktime.c (__mktime_internal): If SEC_REQUESTED != SEC,
+	convert T2, not T.
+	* time/Makefile (tests): Add tst-mktime3.
+	* time/tst-mktime3.c: New test.
+
+2004-12-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* stdlib/stdlib.h (realpath): Remove nonnull attribute.
+
+	* posix/fnmatch_loop.c (internal_fnmatch): Clear is_seqval after
+	normal_bracket label.
+
+	* time/tst-mktime2.c (bigtime_test): Initialize tm.tm_isdst to -1.
+
+2004-12-01  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c):
+	Do $(make-target-directory).
+
+2004-11-29  Roland McGrath  <roland@redhat.com>
+
+	* posix/confstr.c: Avoid punctuation in #error text.
+
+2004-11-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/Makefile (tests): Add tst-sysconf.
+	* posix/tst-sysconf.c: New file.
+
+	* posix/getconf.c (vars): Add support for _SC_IPV6 and
+	_SC_RAW_SOCKETS.
+	* sysdeps/posix/sysconf.c (__sysconf): Add support for _SC_IPV6
+	and _SC_RAW_SOCKETS.
+	* sysdeps/generic/bits/confname.h: Define _SC_IPV6 and
+	_SC_RAW_SOCKETS.
+
+2004-11-26  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR.
+
+2004-11-26  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/unix/sysv/linux/mips/pread.c: Include sgidefs.h only if
+	NO_SGIDEFS_H isn't defined.  Don't include sgidefs.h twice.
+	* sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
+
+2004-11-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* include/dlfcn.h (__libc_dlopen): Add __RTLD_DLOPEN to the mode
+	parameter.  Reported by VY Newsum <newsum@fel.tno.nl>.
+
+2004-11-10  Daniel Jacobowitz  <dan@debian.org>
+
+	* libio/iolibio.h (_IO_fclose, _IO_new_fclose, _IO_old_fclose,
+	_IO_fflush, _IO_fgetpos, _IO_fgetpos64, _IO_fgets, _IO_fopen,
+	_IO_old_fopen, _IO_new_fopen, _IO_fopen64, __fopen_internal,
+	_IO_fprintf, _IO_fputs, _IO_fsetpos, _IO_fsetpos64, _IO_ftell,
+	_IO_fread, _IO_fwrite, _IO_gets, _IO_printf, _IO_puts, _IO_scanf,
+	_IO_fflush_internal, _IO_ftell_internal, _IO_fputs_internal)
+	_IO_fwrite_internal): Remove incorrect __THROW.
+	* libio/libioP.h (_IO_default_xsputn, _IO_wdefault_xsputn,
+	_IO_default_xsgetn, _IO_wdefault_xsgetn, _IO_default_write,
+	_IO_default_read, _IO_getline, _IO_getline_info, _IO_getwline,
+	_IO_getwline_info, _IO_file_read_internal, _IO_sgetn_internal,
+	_IO_wdo_write_internal, _IO_do_write_internal,
+	_IO_getline_info_internal, _IO_getline_internal,
+	_IO_vfprintf_internal, _IO_putc_internal, _IO_read, _IO_write,
+	_IO_close): Likewise.
+
+2004-11-26  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/Makefile (install-others): Add $(inst_libexecdir)/getconf.
+	(CFLAGS-sysconf.c): Add -D_GETCONF_DIR.
+	(CFLAGS-getconf.c): New.
+	($(inst_libexecdir)/getconf): New.
+	* posix/confstr.c (confstr): Use __sysconf to query specifications
+	that don't have _POSIX_V6_* macros defined.  Use __*_{C,LD}FLAGS
+	macros defined in bits/environments.h.
+	* sysdeps/posix/sysconf.c: Include stdlib.h, string.h and
+	sys/stat.h.
+	(__sysconf_check_spec): New routine.
+	(__sysconf): Use it.
+	* posix/getconf.c (specs): Change into structure array.
+	(main): If -v is not given, try to get default from
+	$(libexecdir)/getconf/default.  If specification is not
+	supported by this getconf, try to execute
+	$(libexecdir)/getconf/$(specification).
+	* sysdeps/unix/bsd/bsd4.4/freebsd/bits/environments.h: New file.
+	* sysdeps/unix/sysv/linux/s390/bits/environments.h: New file.
+	* sysdeps/unix/sysv/linux/powerpc/bits/environments.h: New file.
+	* sysdeps/unix/sysv/linux/sparc/bits/environments.h: New file.
+	* sysdeps/unix/sysv/linux/i386/bits/environments.h: New file.
+	* sysdeps/unix/sysv/linux/x86_64/bits/environments.h: New file.
+	* sysdeps/generic/bits/environments.h (__ILP32_OFFBIG_CFLAGS):
+	Define.
+
+	* stdlib/stdlib.h (setenv): Use nonnull only for second argument.
+	(unsetenv): Remove.
+
+2004-11-23  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regcomp.c (analyze_tree): Always call calc_epsdest.
+	(calc_inveclosure): Use re_node_set_insert_last.
+	(parse_dup_op): Lower X{1,5} to (X(X(X(XX?)?)?)?)?
+	rather than X?X?X?X?X?.
+	* posix/regex_internal.h (re_node_set_insert_last): New declaration.
+	* posix/regex_internal.c (re_node_set_insert_last): New function.
+	* posix/PCRE.tests: Add testcases.
+
+2004-11-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* dlfcn/dlfcn.h: Remove nonnull attribute from dlopen.
+
+	* posix/confstr.c (confstr): Return appropriate strings for
+	_CS_LFS_LINTFLAGS, _CS_LFS64_CFLAGS, and _CS_LFS64_LINTFLAGS.
+
+2004-11-05  Maciej W. Rozycki  <macro@mips.com>
+
+	* sysdeps/mips/dl-machine.h: Include <sgidefs.h>.  Use _ABIO32,
+	_ABIN32 and _ABI64 for ABI selection throughout.
+	* sysdeps/mips/elf/start.S: Likewise.
+	* sysdeps/mips/mips64/__longjmp.c: Likewise.
+	* sysdeps/mips/mips64/bsd-_setjmp.S: Likewise.
+	* sysdeps/mips/mips64/bsd-setjmp.S: Likewise.
+	* sysdeps/mips/mips64/setjmp.S: Likewise.
+	* sysdeps/mips/mips64/setjmp_aux.c: Likewise.
+	* sysdeps/mips/sys/regdef.h: Likewise.
+	* sysdeps/mips/sys/ucontext.h: Likewise.
+	* sysdeps/unix/mips/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/kernel-features.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pread.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/procfs.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise.
+
+	* sysdeps/mips/atomicity.h: Use _ABIO32, _ABIN32 and _ABI64 for
+	ABI selection throughout.
+	* sysdeps/mips/bits/setjmp.h: Likewise.
+	* sysdeps/mips/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/mips/machine-gmon.h: Likewise.
+	* sysdeps/mips/sys/asm.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/ptrace.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/tas.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/user.h: Likewise.
+
+	* sysdeps/mips/sgidefs.h: Prevent <asm/sgidefs.h> from being
+	included by kernel headers and undo its settings if already
+	included.  Define _ABIO32, _ABIN32 and _ABI64 if missing and use
+	them to define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32 and
+	_MIPS_SIM_ABI64 for compatibility.
+	* sysdeps/unix/sysv/linux/mips/Makefile: Use _ABIO32, _ABIN32 and
+	_ABI64 for ABI selection in generated syscall-list.h
+	* sysdeps/unix/sysv/linux/mips/configure.in: Use _ABIO32, _ABIN32
+	and _ABI64 for ABI selection in generated asm-unistd.h.
+	* sysdeps/unix/sysv/linux/mips/configure: Regenerate.
+
+	* sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Correct
+	an inverted _MIPS_SIM conditional.
+
+2004-11-23  Alexandre Oliva  <aoliva@redhat.com>
+
+	* sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Use free
+	range even if it doesn't match exactly.
+
+2004-11-23  Jakub Jelinek  <jakub@redhat.com>
+
+	* nss/nss_files/files-XXX.c (internal_getent): If parse_line returned
+	-1, also do H_ERRNO_SET (NETDB_INTERNAL).
+
+2004-11-22  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/i386/fpu_control.h: Add volatile to the asms.
+	Patch by Alexander Stohr.
+
+2004-11-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* nscd/nscd_getai (__nscd_getai): Avoid memory and file descriptor
+	leaks.
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Free air.
+
+2004-11-15  Maciej W. Rozycki  <macro@mips.com>
+
+	* sysdeps/unix/sysv/linux/mips/bits/siginfo.h (__SI_MAX_SIZE):
+	Define appropriately based on __WORDSIZE.
+	[struct siginfo] (__pad0): Add for explicit padding.
+
+	* sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Formatting fixes
+	throughout.
+
+2004-11-22  Ulrich Drepper  <drepper@redhat.com>
+
+	* dirent/dirent.h: Add nonnull attributes.
+	* dlfcn/dlfcn.h: Likewise.
+
+2004-11-20  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/ieee754/k_standard.c: Document code 50.
+	(__kernel_standard) <case 50>: Avoid raising div-by-zero
+	exception again.
+
+2004-11-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+	[BZ #552]
+	* math/libm-test.inc (tgamma_test): Update tgamma (0) and
+	tgamma (-0).
+	* sysdeps/generic/w_tgamma.c (__tgamma): Properly handle |x| == 0.
+	* sysdeps/generic/w_tgammaf.c (__tgammaf): Likewise.
+	* sysdeps/generic/w_tgammal.c (__tgammal): Likewise.
+	* sysdeps/ieee754/dbl-64/e_gamma_r.c (__ieee754_gamma_r): Likewise.
+	* sysdeps/ieee754/flt-32/e_gammaf_r.c: Likewise.
+	* sysdeps/ieee754/ldbl-128/e_gammal_r.c: Likewise.
+	* sysdeps/ieee754/ldbl-96/e_gammal_r.c: Likewise.
+	* sysdeps/ieee754/k_standard.c (__kernel_standard): Handle
+	tgamma (0) and tgamma (-0).
+
+2004-11-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* time/tzfile.c (__tzfile_read): Avoid open for checking whether
+	the file we already use changed.
+
+	* misc/syslog.c: Remove !USE_IN_LIBIO code.
+
+2004-11-20  Jakub Jelinek  <jakub@redhat.com>
+
+	* signal/signal.h (__sysv_signal, sysv_signal, signal, bsd_signal,
+	ssignal): Remove __nonnull attribute.
+
+2004-11-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/unix/sysv/linux/sh/sys/procfs.h: New file.
+
+2004-11-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* signal/signal.h: Add nonnull attributes.
+
+	* signal/signal.h: Add deprecated attributes to sigstack,
+	sigpause, sigblock, sigsetmask, siggetmask.
+
+2004-11-20  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/socket.h (SCM_RIGHTS): Avoid
+	comma at the end of enum if __USE_BSD is not defined.
+
+2004-11-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (_int_malloc): Check for corruption of chunk
+	which is about to be returned.
+
+	* malloc/malloc.c (_int_free): Add a few more cheap tests for
+	corruption.
+
+2004-11-17  Randolph Chung  <tausq@debian.org>
+
+	* sysdeps/hppa/dl-machine.h (TRAMPOLINE_TEMPLATE): Add unwind
+	annotations.
+
+2004-11-18  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #544]
+	* posix/regex.h (RE_NO_SUB): New define.
+	* posix/regex_internal.h (OP_DELETED_SUBEXP): New.
+	(re_dfa_t): Add subexp_map.
+	* posix/regcomp.c (struct subexp_optimize): New type.
+	(optimize_subexps): New routine.
+	(re_compile_internal): Call it.
+	(re_compile_pattern): Set preg->no_sub to 1 if RE_NO_SUB.
+	(free_dfa_content): Free subexp_map.
+	(calc_inveclosure, calc_eclosure): Skip OP_DELETED_SUBEXP nodes.
+	* posix/regexec.c (re_search_internal): If subexp_map
+	is not NULL, duplicate registers as needed.
+	* posix/Makefile: Add rules to build and run tst-regex2.
+	* posix/tst-regex2.c: New test.
+	* posix/rxspencer/tests: Fix last two tests (\0 -> \1).
+	Add some new tests for nested subexpressions.
+
+2004-11-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* libio/libio.h (_IO_FLAGS2_FORTIFY): Renamed from
+	_IO_FLAGS2_CHECK_PERCENT_N.
+	* debug/fprintf_chk.c: Adjust all users.
+	* debug/printf_chk.c: Likewise.
+	* debug/vfprintf_chk.c: Likewise.
+	* debug/vprintf_chk.c: Likewise.
+	* debug/vsnprintf_chk.c: Likewise.
+	* debug/vsprintf_chk.c: Likewise.
+	* stdio-common/vfprintf.c: Likewise.  Detect missing %N$ formats.
+	* debug/tst-chk1.c: Test detection of missing %N$ formats.
+
+2004-11-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/bug-regex24.c: Include string.h.
+
+	* nis/nis_clone_obj.c (nis_clone_object): Rename out3 label to out2
+	and out2 to out.  Remove out label.  Formatting.
+
+2004-11-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* include/stdio.h: Do not mark __libc_message as noreturn.
+	* sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Add loop to
+	fool gcc.  Include <stdbool.h>.
+	* sysdeps/posix/libc_fatal.c (__libc_fatal): Add loop to fool gcc.
+	(__libc_message): Fix typo.
+
+2004-11-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (malloc_state): stat_lock_* elements need only
+	be defined if THREAD_STATS is defined.  Remove pad0_ since it does
+	not align with cache line sizes in general anyway.
+
+2004-11-13  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/rtld.c (print_statistics): Avoid segfaults if not all namespaces
+	are used.  Fix computation of num_relative_relocations on RELA
+	architectures other than IA-64 and Alpha.
+
+2004-11-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (_int_free): Use munmap_chunk for handling
+	mmaped memory.
+
+2004-11-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (_int_free): Remove test for NULL parameter.
+	(_int_realloc): Call _int_free only if memory parameter is not NULL.
+
+	* sysdeps/unix/sysv/linux/libc_fatal.c: Add new function __libc_message
+	which performs the printing and simple format string handling.  The
+	string is written to tty, stderr, syslog in this order, stopping after
+	the first successful output.
+	(__libc_fatal): Call __libc_message.
+	* include/stdio.h: Declare __libc_message.
+	* malloc/malloc.c (malloc_printerr): Use __libc_message.
+	* debug/chk_fail.c: Also print message with __libc_message.
+	* debug/test-strcpy_chk.c: Ensure that debug messages are not printed
+	to the terminal or stderr.
+	* debug/tst-chk1.c: Likewise.
+
+	* posix/Makefile: Remove gpl2lgpl variable.
+
+2004-11-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+	* elf/elf.h: Add 20 bit relocations R_390_*20.
+
+2004-11-12  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/setuid.c: Include linux/posix_types.h.
+	* sysdeps/unix/sysv/linux/i386/setgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setregid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise.
+
+2004-11-12  Andreas Schwab  <schwab@suse.de>
+
+	* nis/ypclnt.c (ypprot_err): Fix "minor optimizations".
+
+2004-11-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/Makefile (tests): Add bug-regex24.
+	* posix/bug-regex24.c: New file.
+
+2004-11-12  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regexec.c (check_dst_limits_calc_pos_1): Use the map to
+	cut recursive paths.  Make exit condition more precise.
+	(match_ctx_add_entry): Initialize the map.
+	* posix/regex_internal.h (struct re_backref_cache_entry): Add a map of
+	reachable subexpression nodes from each backreference cache entry.
+
+2004-11-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/setreuid.c: Remove sys/syscall.h,
+	sys/types.h, linux/posix_types.h, sysdep.h and pthread-functions.h
+	includes.  Include setxid.h.  Use INLINE_SETXID_SYSCALL macro
+	instead of INLINE_SYSCALL, kill the HAVE_PTR__NPTL_SETXID guarded
+	snippets.
+	* sysdeps/unix/sysv/linux/setegid.c: Likewise.
+	* sysdeps/unix/sysv/linux/setuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/seteuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/setgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/setresuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/setresgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/setregid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setegid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/seteuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setregid.c: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/setreuid.c: Likewise.
+	Formatting.  Change signed int into int.
+	* sysdeps/unix/sysv/linux/alpha/setresuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/setresgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/setregid.c: Likewise.
+	* sysdeps/unix/sysv/linux/syscalls.list (setresuid, setresgid):
+	Remove.
+	* sysdeps/unix/setxid.h: New file.
+
+	* Rules (binaries-static): Add xtests-static.
+	* Makeconfig (run-program-prefix): Filter also xtests-static.
+
+2004-11-09  Paul Eggert  <eggert@cs.ucla.edu.
+
+	[BZ #535]
+	* time/difftime.c: Fix a double-rounding bug on hosts with
+	64-bit time_t and long double being IEEE double.  Also, port
+	to more valid C99 hosts, even those that have padding bits.
+	Don't include <values.h> since it is marked as an obsolescent
+	interface.  Include <limits.h>, <float.h>, and <stdint.h> instead.
+	(TYPE_BITS, TYPE_FLOATING, TYPE_SIGNED): New macros.
+	(subtract): New static function, that works correctly without
+	double-rounding, even on hosts with 64-bit time_t.  Also cater
+	to hosts with padding bits.
+	(__difftime): Use it.  Use DBL_MANT_DIG and LDBL_MANT_DIG to
+	determine whether floating types are wide enough: the old
+	test (which used sizeof) could in theory report the wrong results
+	on hosts with padding bits in floating-point values.
+
+2004-11-11  Simon Josefsson  <jas@extundo.com>
+
+	[BZ #542]
+	* sysdeps/generic/strtok_r.c [HAVE_CONFIG_H]: Include config.h.
+	[!_LIBC]: Include strtok_r.h (in gnulib), map __strtok_r to
+	strtok_r and __rawmemchr to strch.
+	(__strtok_r): Use C89 prototype.
+	[weak_alias]: Move calls to libc_hidden_def and weak_alias into
+	this #ifdef.
+
+2004-11-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+	[BZ #541]
+	* time/mktime.c (SHR): New macro, which is a portable
+	substitute for >> that should work even on Crays.
+	(TIME_T_MIDPOINT, ydhms_diff, __mktime_internal): Use it.
+	Problem reported by Mark D. Baushke in
+	<http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00071.html>.
+
+2004-11-09  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regexec.c (match_ctx_free_subtops): Remove, merge into...
+	(match_ctx_clean): ... this function.
+	(match_ctx_free): Call match_ctx_clean.
+
+	* posix/regexec.c (transit_state): Remove the check for
+	out-of-bounds buffers.
+	(check_matching): Check here for out-of-bounds buffers.
+	(re_search_internal): Store into match_kind a set of bits
+	indicating which incantation of fastmap scanning must be
+	used.  Use a switch statement instead of multiple ifs.
+	Exit the final "for (;;)" with goto free_return unless
+	the match succeeded, thus simplifying some conditionals.
+
+	* posix/regex_internal.c (re_string_reconstruct,
+	re_string_context_at): Add several branch predictions for
+	case-sensitive matching and no transition table being used.
+
+2004-11-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/tst-waitid.c: Don't use error to print error message, they
+	won't end up in the .out file.
+
+2004-11-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd-client.h (libc_locked_map_ptr): Add new first
+	parameter, used as class for definition.
+	* nscd/nscd_getpw_r.c: Adjust for libc_locked_map_ptr change.
+	(pw_map_free): Ensure no crash after memory is freed.
+	* nscd/nscd_getgr_r.c: Likewise.  Make map externally visible.
+	* nscd/nscd_gethst_r.c: Likewise.
+	* nscd/nscd_getai.c: Use map from nscd_gethost.c.
+	* nscd/nscd_initgroups.c: Use map from nscd_getgr.c.
+
+	* nscd/nscd_getai.c: Add some checks to detect corrupt databases.
+	* nscd/nscd_getgr_r.c: Likewise
+	* nscd/nscd_gethst_r.c: Likewise.
+	* nscd/nscd_getpw_r.c: Likewise
+
+2004-11-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/regcomp.c (calc_eclosure_iter): Don't access
+	dfa->edests[node].elems[0] if dfa->edests[node].nelem == 0.
+	* posix/rxspencer/tests: Add 5 new tests.
+
+2004-11-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/ifaddrs.c: Determine sin6_scope_id field
+	value correctly.  Patch by Mitsuru Kanda <mk@karaba.org>.
+
+2004-11-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* libio/fileops.c (_IO_new_file_seekoff): If mode is 0 and
+	fp->_offset == _IO_pos_BAD, just call _IO_SYSSEEK (fp, 0, dir)
+	and if successful set fp->_offset.
+	* libio/Makefile (tests): Add bug-ungetc3.
+	* libio/bug-ungetc3.c: New test.
+
+2004-11-03  Marcus Brinkmann  <marcus@gnu.org>
+
+	* sysdeps/gnu/_G_config.h (_G_HAVE_MREMAP): Define symbol.
+	* sysdeps/mach/hurd/_G_config.h: New file.
+	* libio/fileops.c (mmap_remap_check) [__linux__]: Replaced with
+	[_G_HAVE_MREMAP].
+
+2004-11-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/regcomp.c (utf8_sb_map): Define.
+	(free_dfa_content): Don't free dfa->sb_char if it's a pointer to
+	utf8_sb_map.
+	(init_dfa): Use utf8_sb_map instead of initializing memory when the
+	encoding is UTF-8.
+
+2004-11-03  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regcomp.c (init_dfa): Get the codeset name outside glibc as
+	well.  Check if it is spelled UTF8 as well as UTF-8, and check
+	case-insensitively.  Set dfa->map_notascii manually when outside
+	glibc.
+	* posix/regex_internal.c (build_wcs_upper_buffer) [!_LIBC]: Enable
+	optimizations based on map_notascii.
+	* posix/regex_internal.h [HAVE_LANGINFO_H || HAVE_LANGINFO_CODESET
+	|| _LIBC]: Include langinfo.h.
+
+	* posix/regex_internal.h (struct re_backref_cache_entry): Add "more"
+	field.
+	* posix/regexec.c (check_dst_limits): Hoist computation of the source
+	and destination bkref_idx out of the loop.  Pass it to
+	check_dst_limits_calc_pos.
+	(check_dst_limits_calc_pos_1): New function, containing the recursive
+	loop of check_dst_limits_calc_pos; uses the "more" field of
+	struct re_backref_cache to control the loop.
+	(check_dst_limits_calc_pos): Store into "boundaries" the position
+	relative to lim's start and end positions.  Do not accept eclosures,
+	accept bkref_idx instead.  Call check_dst_limits_calc_pos_1 to do the
+	work.
+	(sift_states_bkref): Use the "more" field of struct re_backref_cache
+	to control the loop.  A big "if" was turned into a continue and the
+	function was reindented.
+	(get_subexp): Use the "more" field of struct re_backref_cache
+	to control the loop.
+	(match_ctx_add_entry): Initialize the bkref_ents' "more" field.
+	(search_cur_bkref_entry): Return -1 if out of bounds.
+
+	* posix/regexec.c (empty_set): Remove.
+	(sift_states_backward): Remove cur_src variable.  Move inner loop
+	to build_sifted_states.
+	(build_sifted_states): Extract from sift_states_backward.  Do not
+	use empty_set.
+	(update_cur_sifted_state): Do not use empty_set.  Special case
+	dest_nodes->nelem == 0.
+
+	* posix/regex_internal.h (struct re_backref_cache_entry): Remove flag
+	field.
+	(struct re_sift_context_t): Remove cur_bkref, cls_subexp_idx,
+	check_subexp fields.  Move limits last.
+	* posix/regexec.c (match_ctx_clear_flag): Remove.
+	(sift_ctx_init): Remove check_subexp parameter.  Do not set removed
+	fields.  Callers adjusted.
+	(expand_bkref_cache): Remove last_str parameter.  Callers adjusted.
+	(re_search_internal): Remove fast_translate variable.
+	(update_cur_sifted_state): Pass candidates as the final parameter
+	to sift_states_bkref.
+	(sift_states_bkref): Change last unused parameter to be "candidates",
+	do not fetch candidates into a local variable.
+	Remove dead test for "node == sctx->bkref", and the cur_bkref_idx
+	variable.
+	Remove loops that set/reset the flag field of backref cache entries.
+	(check_arrival_add_next_nodes): Use a signed int to hold the return
+	value of re_node_set_insert.
+	(group_nodes_into_DFAstates): Likewise.
+	(match_ctx_add_entry): Do not set the flag field of the new entry.
+
+2004-11-05  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Define
+	_dl_sysinfo_dso under [NEED_DL_SYSINFO_DSO] as well.
+	* elf/rtld.c (dl_main): Set up GLRO(dl_sysinfo_dso) under
+	[NEED_DL_SYSINFO_DSO] as well.
+	* sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Always include
+	AT_SYSINFO and AT_SYSINFO_EHDR in name table.
+	(_dl_sysdep_start) [NEED_DL_SYSINFO_DSO]: Match AT_SYSINFO_EHDR.
+	* elf/dl-support.c (_dl_sysinfo_dso): Define also under
+	[NEED_DL_SYSINFO_DSO].
+	(_dl_aux_init) [NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO]:
+	Match AT_SYSINFO_EHDR and set GL(dl_sysinfo_dso).
+
+2004-11-05  Roland McGrath  <roland@redhat.com>
+
+	* manual/errno.texi (Error Codes): Revert last change for now.
+	* sysdeps/gnu/errlist.c: Regenerated.
+
+2004-11-04  Roland McGrath  <roland@frob.com>
+
+	* Makeconfig (link-libc, rpath-dirs): Remove AIX cruft definitions.
+	(LDFLAGS-rpath-ORIGIN, LDFLAGS-soname-fname): Likewise.
+	(LDFLAGS-rdynamic, LDFLAGS-Bsymbolic): Likewise.
+	($(common-objpfx)gnu/lib-names.stmp): Likewise.
+
+2004-11-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/x86_64/sys/procfs.h [__WORDSIZE == 32]
+	(elf_fpxregset_t): New type.
+	(struct elf_prpsinfo): If __WORDSIZE == 32, change pr_[ug]id type
+	to unsigned short int.
+	* sysdeps/unix/sysv/linux/x86_64/sys/user.h
+	(struct user_fpregs_struct): Fix comment.
+	* sysdeps/i386/fpu/bits/mathdef.h (float_t, double_t): If
+	__FLOAT_EVAL_METHOD__ is defined and 0, typedef to float resp. double.
+	* sysdeps/x86_64/fpu/bits/mathdef.h: Include bits/wordsize.h.
+	(float_t, double_t): If -m32 and not -mfpmath=sse, typedef to
+	long double.
+	* sysdeps/x86_64/fpu/bits/fenv.h: Include bits/wordsize.h.
+	(fenv_t): Remove __mxcsr field for -m32.
+
+2004-11-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* libio/ftello.c (ftello): Don't subtract save_end - save_base
+	if pos is _IO_pos_BAD.
+	* libio/ftello64.c (ftello64): Likewise.
+	* libio/iofgetpos.c (_IO_new_fgetpos): Likewise.
+	* libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise.
+	* libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise.
+	* libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise.
+	* libio/ioftell.c (_IO_ftell): Likewise.
+	Cast to long int instead of off_t when checking for overflow.
+
+2004-11-04  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/unix/sysv/linux/alpha/register-dump.h (regnames): Align.
+	(linefeed): Remove.
+	(register_dump): Rewrite to generate into a flat buffer instead
+	of into iovecs.
+
+2004-11-02  Jakub Jelinek  <jakub@redhat.com>
+
+	* debug/tst-chk1.c (ret): New volatile variable.
+	(CHK_FAIL_END): Remove redundant ret setting.
+	(do_test): Remote ret variable.
+
+2004-01-03  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regex_internal.h (__regfree) [!_LIBC]: Define to regfree.
+
+2004-11-03  Marcus Brinkmann  <marcus@gnu.org>
+
+	* sysdeps/generic/utime.c: Include <stddef.h>.
+
+	* sysdeps/generic/sysconf.c: Include <grp.h> and <pwd.h>.
+
+	* sysdeps/generic/tempname.c (__path_search): Add missing argument
+	TRY_TMPDIR.
+
+2004-10-31  Mariusz Mazur <mmazur@kernel.pl>
+
+	* sysdeps/unix/sysv/linux/alpha/setregid.c: New file.
+	* sysdeps/unix/sysv/linux/alpha/setresgid.c: New file.
+	* sysdeps/unix/sysv/linux/alpha/setresuid.c: New file.
+	* sysdeps/unix/sysv/linux/alpha/setreuid.c: New file.
+
+2004-10-27  Derek R. Price  <derek@ximbiot.com>
+
+	[BZ #487] This change is imported from gnulib.
+	* time/mktime.c (not_equal_tm) [DEBUG]: Remove redundant check.
+
+2004-10-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+	[BZ #473]
+	* time/tst-mktime.c (main): Don't assume that mktime fails
+	when given time stamps before 1970.  It returns negative
+	time_t values instead, for compatibility with BSD.
+
+	* time/tst-mktime2.c: New file.
+	* time/Makefile (tests): Add it.
+
+	[BZ #473] Import from gnulib.  Revamp to avoid several problems near
+	time_t extrema, and on hosts with 64-bit time_t and 32-bit int.
+	This fixes Debian bug 177940.
+	* time/mktime.c (TIME_T_MIDPOINT): New macro.
+	(ydhms_diff): Renamed from ydhms_tm_diff, with a new signature,
+	which avoids overflow problems on hosts with 64-bit time_t and
+	32-bit int.  All callers changed.  Now an inline function.
+	Verify at compile-time that long int is wide enough to avoid
+	these overflow problems.
+	(guess_time_tm): New function.
+	(__mktime_internal): Use it.  Avoid overflow when computing yday on
+	hosts with 64-bit long and 32-bit int.  Remove tests for 69;
+	no longer needed.  Use if rather than #ifdef for LEAP_SECONDS_POSSIBLE
+	so that the code is checked by more compilers.
+	Do not rely on floating point to probe: stick to integer arithmetic,
+	to avoid potential porting problems.
+	Repair potential overflow correctly in the Southern Hemisphere.
+	(localtime_offset): Add a FIXME for the case where time_t is unsigned.
+
+2004-10-30  Andreas Schwab  <schwab@suse.de>
+
+	* sysdeps/m68k/dl-machine.h (elf_machine_rela)
+	(elf_machine_rela_relative, elf_machine_lazy_rel): Mark auto
+	instead of static.
+
+2004-10-30  Andreas Schwab  <schwab@suse.de>
+
+	* sysdeps/unix/sysv/linux/waitid.c: Include <stddef.h> for NULL.
+
+2004-10-30  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (_int_free): Use unique comments for the error
+	cases.
+
+2004-10-28  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/hurd/i386/tls.h (_hurd_tls_fork): Use i386_thread_state
+	instead of machine_thread_state.
+
+2004-10-28  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/sysv/linux/syscalls.list: Remove setaltroot.
+
+2004-10-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-open.c (dl_open_worker): Remove reference to glibcbug script.
+
+2004-10-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-load.c (_dl_map_object): Use cache_rpath to check for
+	existing rpath in main executable, not explicit test.
+
+2004-10-27  Jakub Jelinek  <jakub@redhat.com>
+
+	* include/resolv.h (_res_opcodes): New extern.
+	Add libresolv_hidden_proto.
+	* resolv/res_debug.c (_res_opcodes): Remove.
+	(__p_class_syms, __p_type_syms): Add libresolv_hidden_proto
+	and libresolv_hidden_data_def.  Remove attribute_hidden.
+	* resolv/res_mkquery (_res_opcodes): Remove.
+	* resolv/res_data.c (_res_opcodes): Remove attribute_hidden.
+	Add libresolv_hidden_data_def.
+
+2004-10-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-open.c (_dl_open): Don't allow explicitly opening a DSO
+	into an empty namespace.
+
+	* elf/dl-fini.c (_dl_fini): Fix search for map in maps array.
+	Reverse order of namespaces.
+	* elf/Makefile: Add rules to build and run tst-dlmopen3.
+	* elf/tst-dlmopen3.c: New file.
+	* elf/tst-dlmopen1mod.c: Add check whether constructor runs.
+
+2004-10-27  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/generic/glob.c (globfree): Clear gl_pathv after freeing it.
+	* posix/Makefile: Add rules to build and run bug-glob2 test.
+	* posix/bug-glob2.c: New test.
+
+2004-10-27  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/hurd/i386/tls.h (HURD_TLS_DESC_DECL): New macro.
+	(_hurd_tls_init): Use it.
+	(_hurd_tls_fork): New function.
+	* sysdeps/mach/hurd/fork.c (__fork) [USE_TLS]: Call it.
+
+2004-10-26  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/hurd/i386/tls.h (_hurd_tls_init): Initialize TCB->tcb.
+
+2004-10-26  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/gnu/netinet/udp.h (struct udphdr): Use u_int16_t
+	type instead of uint16_t.  Formatting.
+
+2004-10-25  Roland McGrath  <roland@redhat.com>
+
+	* login/openpty.c (openpty): Add libutil_hidden_def.
+
+	* nss/nss_files/files-parse.c (nss_files_parse_hidden_def): Define to
+	either libc_hidden_def or libnss_files_hidden_def, not hidden_def.
+	This file is also compiled into libnss_hesiod by #include.
+
+2004-10-25  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/unix/bsd/hp: Directory and all files removed.
+	These are now in the ports repository.
+	* sysdeps/unix/bsd/osf: Likewise.
+	* sysdeps/unix/bsd/sequent: Likewise.
+	* sysdeps/unix/bsd/sony: Likewise.
+	* sysdeps/unix/bsd/ultrix4: Likewise.
+	* sysdeps/unix/sysv/aix: Likewise.
+	* sysdeps/unix/sysv/hpux: Likewise.
+	* sysdeps/unix/sysv/irix4: Likewise.
+	* sysdeps/unix/sysv/isc2.2: Likewise.
+	* sysdeps/unix/sysv/minix: Likewise.
+	* sysdeps/unix/sysv/sco3.2.4: Likewise.
+	* sysdeps/unix/sysv/sco3.2: Likewise.
+	* sysdeps/unix/sysv/sysv4: Likewise.
+
+	* configure.in (ASM_LINE_SEP): Move this setting to ...
+	* sysdeps/hppa/configure.in: ... here, new file.
+	* sysdeps/hppa/configure: New generated file.
+	* configure: Regenerated.
+
+2004-10-25  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/sh/dl-machine.h: Include sysdep.h.
+	(ELF_MACHINE_RUNTIME_TRAMPOLINE): Add CFI directives.
+	(elf_machine_runtime_setup): Add always_inline attribute.
+	(_dl_start_user): Pass the correct environ.
+	(elf_machine_rela): Replace static inline by auto inline, add
+	always_inline attribute.
+	(elf_machine_rela_relative): Likewise.
+	(elf_machine_lazy_rel): Likewise.
+
+2004-10-24  Ulrich Drepper  <drepper@redhat.com>
+
+	* nis/nis_call.c: Pretty printing.  Minor cleanups.
+	* nis/nis_addmember.c (nis_addmember): Add assert to check buffer
+	bounds.
+
+	* resolv/nss_dns/dns-host.c: Avoid using PLTs.
+	* include/libc-symbols.h: Define hidden attribute macros for
+	libnss_nisplus and libutil.
+	* include/utmp.h: Add libutil_hidden_proto for login_tty.
+	* login/login_tty.c: Add libutil_hidden_def.
+	* nis/nisplus-parser.h: Add libnss_nisplus_hidden_proto for parsers.
+	* nis/nss_nisplus/nisplus-parser.c: Add libnss_nisplus_hidden_def.
+	* include/pty.h: New file.
+	* include/rpcsvc/yp.h: New file.
+	* include/rpcsvc/ypclnt.h: New file.
+	* include/rpcsvc/ypupd.h: New file.
+	* include/libc-symbols.h: Define hidden attribute macros for libnsl.
+	* include/rpcsvc/nislib.h: Use libnsl_hidden_proto for various
+	functions.
+	* nis/nis_add.c: Add libnsl_hidden_def.  Minor optimizations.
+	* nis/nis_call.c: Likewise.
+	* nis/nis_clone_obj.c: Likewise.
+	* nis/nis_defaults.c: Likewise.
+	* nis/nis_domain_of_r.c: Likewise.
+	* nis/nis_error.c: Likewise.
+	* nis/nis_file.c: Likewise.
+	* nis/nis_free.c: Likewise.
+	* nis/nis_local_names.c: Likewise.
+	* nis/nis_lookup.c: Likewise.
+	* nis/nis_modify.c: Likewise.
+	* nis/nis_print.c: Likewise.
+	* nis/nis_remove.c: Likewise.
+	* nis/nis_subr.c: Likewise.
+	* nis/nis_table.c: Likewise.
+	* nis/nis_util.c: Likewise.
+	* nis/yp_xdr.c: Likewise.
+	* nis/ypclnt.c: Likewise.
+	* nis/ypupdate_xdr.c: Likewise.
+
+	* resolv/res_send.c (send_dg): Cope with failures.
+
+	* include/libc-symbols.h: Define hidden attribute macros for
+	libnss_files.
+	* include/netdb.h: Use libnss_files_hidden_proto for the parsers
+	defined in libnss_files, not libc_hidden_proto.
+	* include/netinet/ether.h: Likewise.
+	* include/rpc/netdb.h: Likewise.
+	* nss/nss_files/files-parse.c: Use hidden_def in parser definitions
+	instead of libc_hidden_def.
+	* nss/nss_files/files-netgrp.c: Add libnss_files_hidden_def to
+	_nss_netgroup_parseline definition.
+
+2004-10-23  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/hurd/i386/tls.h (_hurd_tls_init): Don't return early
+	after an RPC succeeds.
+
+	* sysdeps/vax, sysdeps/unix/bsd/vax: Directories and all files removed.
+	These are now in the ports repository.
+	* sysdeps/tahoe, sysdeps/unix/bsd/tahoe: Likewise.
+	* sysdeps/cris, sysdeps/unix/sysv/linux/cris: Likewise.
+	* sysdeps/am29k, sysdeps/i860, sysdeps/i960, sysdeps/m88k: Likewise.
+	* sysdeps/standalone, sysdeps/z8000: Likewise.
+
+2004-10-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* resolv/res_send.c (send_dg): Combine write and read to socket
+	into one loop.
+
+2004-10-22  Roland McGrath  <roland@frob.com>
+
+	* Makefile (%.bz2, %.gz): Move these pattern rules ...
+	* Makerules: ... to here.
+
+2001-10-31  Alexandre Oliva  <aoliva@redhat.com>
+
+	* elf/elf.h: Add R_MN10300_* relocation numbers.
+
+2004-10-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+	[BZ #471] Fix imported from gnulib.
+	* time/mktime.c (leapyear, ydms_tm_diff): Year is of type
+	long int, not int, to avoid problems when tm_year == INT_MAX
+	and tm_mon > 12.
+	(__mktime_intenral): Compute year using long int arithmetic,
+	not int arithmetic, to avoid problems on hosts where time_t
+	and long are 64 bits but int is 32.
+
+	[BZ #468] Import a fix from gnulib.
+	* time/mktime.c [! DEBUG]: Do not include <string.h>.
+	It's needed only if DEBUG is nonzero.
+
+	[BZ #470] Import fix from gnulib.
+	* time/mktime.c [!_LIBC] (__mktime_internal): Define to
+	mktime_internal, to avoid clashes with any __mktime_internal
+	function defined in the standard library.
+
+	[BZ #469] Imported from gnulib.
+	* time/mktime.c (__isleap): Remove; all uses replaced by:
+	(leapyear): New function, which avoids overflow by not adding
+	1900 to year before testing whether it is a leap year.
+
+	[BZ #472] Imported from gnulib.
+	* time/mktime.c (Local Variables): Remove -DHAVE_TIME_R_POSIX;
+	no longer used.
+
+2004-10-22  Ulrich Drepper  <drepper@redhat.com>
+
+	* resolv/res_send.c: Remove compatibility code which is unused in
+	glibc and probably bitrotten.
+
+	* debug/execinfo.h: Remove __THROW from backtrace prototype.
+
+2004-10-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/i386/Makefile (CFLAGS-backtrace.c): Add -fexceptions.
+	* sysdeps/i386/backtrace.c: Include <bits/libc-lock.h>, <dlfcn.h>,
+	<stdlib.h> and <unwind.h>.  Remove <bp-checks.h> include.
+	(struct trace_arg): New type.
+	(unwind_backtrace, unwind_getip, unwind_getcfa, unwind_getgr): New
+	fn pointers resp. macros.
+	(init, backtrace_helper): New functions.
+	(__backtrace): Rewritten to use _Unwind_Backtrace first and fall
+	back to frame pointer walking.
+
+2004-10-22  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/Versions: Things are still in flux, it
+	seems.  Undo last additions.
+
+2004-10-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/execvp.c (execvp): Also ignore ENODEV and ETIMEDOUT errno
+	values.
+
+2004-10-20  Roland McGrath  <roland@redhat.com>
+
+	* Makeconfig ($(common-objpfx)shlib-versions.v.i): Check also
+	$(config-sysdirs) for shlib-versions files.
+
+	* Makeconfig ($(common-objpfx)soversions.i): Replace shell loop with
+	use of ...
+	* scripts/soversions.awk: ... this new file.  Collect lib info and
+	match any DEFAULT line before emitting anything, so DEFAULT can come
+	later in the concatenation of shlib-versions files.
+
+	* manual/errno.texi (Error Codes): Add ENOKEY, EKEYEXPIRED,
+	EKEYREVOKED, EKEYREJECTED.
+	* sysdeps/unix/sysv/linux/Versions (libc: GLIBC_2.3.4): New errlist.
+	* sysdeps/gnu/errlist.c: Regenerated
+
+	* sysdeps/gnu/errlist-compat.awk: Don't bail if Versions gives a count
+	higher than ERR_MAX reports.  Instead, emit a #define ERR_MAX.
+	* sysdeps/gnu/Makefile ($(objpfx)errlist-compat.h): New target.
+	(generated): Add errlist-compat.h.
+	* sysdeps/gnu/errlist.awk: Make output #include <errlist-compat.h> to
+	define ERR_MAX and use that for table size.
+
+2004-10-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/syscalls.list: Add entries for setaltroot,
+	key_add, key_request, and keyctl syscalls.
+	* sysdeps/unix/sysv/linux/Versions: Export them.
+
+2004-10-19  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/readonly-area.c: New file.
+
+2004-10-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/Versions [ld, GLIBC_PRIVATE]: Add _dl_debug_state.
+	* elf/dl-debug.c (_dl_debug_state): Add rtld_hidden_def.
+	* sysdeps/generic/ldsodefs.h (_dl_debug_state): Don't mark as
+	hidden but use rtld_hidden_proto.
+
+2004-10-19  Alfred M. Szmidt  <ams@gnu.org>
+
+	* sysdeps/generic/readonly-area.c (__readonly_str): Renamed to ...
+	(__readonly_area): ... this.
+
+2004-10-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking
+	destlen only every 4 bytes.
+
+2004-10-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* nss/getent.c (hosts_keys): Let inet_pton decide whether the
+	string is an address or not.
+
+2004-10-19  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/dl-addr.c (_dl_addr): Don't look at STT_TLS symbols.
+	Use DL_SYMBOL_ADDRESS to set dli_saddr.
+
+	* debug/Makefile (catchsegv): Prefix $LIB with a backslash.
+
+2004-10-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* debug/Makefile ($(objpfx)catchsegv): To support multilib
+	platforms, use $LIB in path to slibdir.
+
+2004-10-19  Jakub Jelinek  <jakub@redhat.com>
+
+	* debug/catchsegv.sh: Update copyright year.
+	Use mktemp to create segv_output file.
+
+2004-10-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/dl-libc.c (__libc_dlsym_private, __libc_register_dl_open_hook):
+	New functions.
+	(__libc_dlopen_mode): Call __libc_register_dl_open_hook and
+	__libc_register_dlfcn_hook.
+	* dlfcn/Makefile (routines, elide-routines.os): Set.
+	Add rules to build and test tststatic2.
+	* dlfcn/tststatic2.c: New test.
+	* dlfcn/modstatic2.c: New test module.
+	* dlfcn/dladdr.c: Call _dlfcn_hook from libdl.so if not NULL.
+	Define __ prefixed routine in libc.a and in libdl.a just call it.
+	* dlfcn/dladdr1.c: Likewise.
+	* dlfcn/dlclose.c: Likewise.
+	* dlfcn/dlerror.c: Likewise.
+	* dlfcn/dlinfo.c: Likewise.
+	* dlfcn/dlmopen.c: Likewise.
+	* dlfcn/dlopen.c: Likewise.
+	* dlfcn/dlopenold.c: Likewise.
+	* dlfcn/dlsym.c: Likewise.
+	* dlfcn/dlvsym.c: Likewise.
+	* dlfcn/sdladdr.c: New file.
+	* dlfcn/sdladdr1.c: New file.
+	* dlfcn/sdlclose.c: New file.
+	* dlfcn/sdlerror.c: New file.
+	* dlfcn/sdlinfo.c: New file.
+	* dlfcn/sdlopen.c: New file.
+	* dlfcn/sdlsym.c: New file.
+	* dlfcn/sdlvsym.c: New file.
+	* dlfcn/Versions (libdl): Export _dlfcn_hook@GLIBC_PRIVATE.
+	* include/dlfcn.h (DL_CALLER_DECL, DL_CALLER RETURN_ADDRESS): Define.
+	(struct dlfcn_hook): New type.
+	(_dlfcn_hook): New extern decl.
+	(__dlopen, __dlclose, __dlsym, __dlerror, __dladdr, __dladdr1,
+	__dlinfo, __dlmopen, __libc_dlsym_private,
+	__libc_register_dl_open_hook, __libc_register_dlfcn_hook): New
+	prototypes.
+	(__dlvsym): Use DL_CALLER_DECL.
+	* include/libc-symbols.h: Define libdl_hidden_proto and friends.
+
+	* malloc/arena.c (_dl_open_hook): Extern decl.
+	(ptmalloc_init): Don't call _dl_addr when dlopened from statically
+	linked programs but don't use brk for them either.
+
+2004-10-18  Roland McGrath  <roland@redhat.com>
+
+	* dlfcn/bug-dlsym1.c (main): Remove bogus setenv call.
+
+2004-10-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-open.c (dl_open_worker): Avoid dereferencing map in
+	statically linked code if there might none be found.
+
+2004-10-06  Maciej W. Rozycki  <macro@mips.com>
+
+	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
+	(__SYSCALL_CLOBBERS): Add "memory".
+	* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
+	(__SYSCALL_CLOBBERS): Likewise.
+	* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
+	(__SYSCALL_CLOBBERS): Likewise.
+
+2004-10-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* include/libc-symbols.h: Define libresolv_hidden_proto and friends.
+	* include/resolv.h: Add libresolv_hidden_proto for symbols defined,
+	used, and exported in libresolv.
+	* resolv/base64.c: Add libresolv_hidden_def.
+	* resolv/gethnamaddr.c: Likewise.
+	* resolv/ns_name.c: Likewise.
+	* resolv/ns_netint.c: Likewise.
+	* resolv/res_comp.c: Likewise.
+	* resolv/res_data.c: Likewise.
+	* resolv/res_debug.c: Likewise.
+	* resolv/res_mkquery.c: Likewise.
+	* resolv/res_query.c: Likewise.
+	* resolv/res_send.c: Likewise.
+
+2004-10-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/dl-minimal.c (__chk_fail): New.  Add rtld_hidden_def.
+	* sysdeps/unix/sysv/linux/readonly-area.c: New file.
+	* sysdeps/i386/i686/memmove.S (__memmove_chk): Add checking
+	routine.
+	* sysdeps/i386/i686/memcpy.S (__memcpy_chk): Likewise.
+	* sysdeps/i386/i686/mempcpy.S (__mempcpy_chk): Likewise.
+	* sysdeps/i386/i686/memset.S (__memset_chk): Likewise.
+	* sysdeps/i386/i686/memmove-chk.S: New file.
+	* sysdeps/i386/i686/memcpy-chk.S: Likewise.
+	* sysdeps/i386/i686/mempcpy-chk.S: Likewise.
+	* sysdeps/i386/i686/memset-chk.S: Likewise.
+	* sysdeps/generic/strcat-chk.c (__strcat_chk): Don't __chk_fail
+	if exactly fitting into buffer.
+	* sysdeps/generic/strncat-chk.c (__strncat_chk): Likewise.
+	* sysdeps/generic/readonly-area.c: New file.
+	* sysdeps/generic/strncpy-chk.c (__strncpy_chk): Only test
+	destlen once.
+	* sysdeps/x86_64/memset.S (__memset_chk): Add checking routine.
+	* sysdeps/x86_64/memcpy.S (__memcpy_chk): Likewise.
+	* sysdeps/x86_64/mempcpy.S (__memcpy_chk): Define to __mempcpy_chk.
+	* sysdeps/x86_64/memcpy-chk.S: New file.
+	* sysdeps/x86_64/mempcpy-chk.S: Likewise.
+	* sysdeps/x86_64/memset-chk.S: Likewise.
+	* sysdeps/x86_64/strcpy-chk.S: Likewise.
+	* sysdeps/x86_64/stpcpy-chk.S: Likewise.
+	* argp/argp-xinl.c (__OPTIMIZE__): Define to 1 instead of nothing.
+	* argp/argp-fs-xinl.c (__OPTIMIZE__): Likewise.
+	* debug/tst-chk1.c: New test.
+	* debug/tst-chk2.c: Likewise.
+	* debug/tst-chk3.c: Likewise.
+	* debug/test-strcpy_chk.c: Likewise.
+	* debug/test-stpcpy_chk.c: Likewise.
+	* debug/vsprintf_chk.c (__vsprintf_chk): If flags > 0, request
+	_IO_FLAGS2_CHECK_PERCENT_N.  Add libc_hidden_def.
+	* debug/Makefile (routines): Add printf_chk, fprintf_chk, vprintf_chk,
+	vfprintf_chk, gets_chk and readonly-area.
+	(CFLAGS-*_chk.c): Set.
+	(tests): Add tst-chk1, tst-chk2, tst-chk3, test-strcpy_chk and
+	test-stpcpy_chk.
+	* debug/vprintf_chk.c: New file.
+	* debug/printf_chk.c: Likewise.
+	* debug/vfprintf_chk.c: Likewise.
+	* debug/fprintf_chk.c: Likewise.
+	* debug/gets_chk.c: Likewise.
+	* debug/chk_fail.c (__chk_fail): Add libc_hidden_def.
+	* debug/snprintf_chk.c (__snprintf_chk): Fix order of arguments
+	passed to __vsnprintf_chk.
+	* debug/Versions (libc): Export __printf_chk, __fprintf_chk,
+	__vprintf_chk, __vfprintf_chk and __gets_chk @GLIBC_2.3.4.
+	* debug/vsnprintf_chk.c (__vsnprintf_chk): Don't call
+	__vsnprintf, instead create a temporary file with
+	_IO_strn_jumps jumptable.  If flags > 0, request
+	_IO_FLAGS2_CHECK_PERCENT_N.  Add libc_hidden_def.
+	* libio/Makefile (headers): Add bits/stdio2.h.
+	* libio/stdio.h: Include <bits/stdio2.h> if __USE_FORTIFY_LEVEL.
+	(sprintf, snprintf, vsprintf, vsnprintf): Remove defines.
+	* libio/strfile.h (_IO_strnfile): New type.
+	(_IO_strn_jumps): New extern.
+	* libio/vsnprintf.c (_IO_strnfile): Remove.
+	(_IO_strn_jumps): Remove static.
+	* libio/bits/stdio2.h: New file.
+	* libio/vswprintf.c (_IO_strnfile): Rename type to...
+	(_IO_wstrnfile): ...this.  Adjust all uses.
+	* libio/libio.h (_IO_FLAGS2_CHECK_PERCENT_N): Define.
+	* stdio-common/vfprintf.c (STR_LEN): Define.
+	(vfprintf): Add readonly_format variable.
+	Handle _IO_FLAGS2_CHECK_PERCENT_N.
+	(buffered_vfprintf): Copy _flags2.
+	* include/stdio.h (__sprintf_chk, __snprintf_chk, __vsprintf_chk,
+	__vsnprintf_chk, __printf_chk, __fprintf_chk, __vprintf_chk,
+	__vfprintf_chk): New prototypes.
+	(__vsprintf_chk, __vsnprintf_chk): Add libc_hidden_proto.
+	* include/string.h (__memcpy_chk, __memmove_chk, __mempcpy_chk,
+	__memset_chk, __strcpy_chk, __stpcpy_chk, __strncpy_chk, __strcat_chk,
+	__strncat_chk): New prototypes.
+	* include/bits/string3.h: New file.
+	* include/sys/cdefs.h (__chk_fail): Add libc_hidden_proto
+	and rtld_hidden_proto.
+	* string/Makefile (headers): Add bits/string3.h.
+	* string/bits/string3.h (bcopy, bzero): New defines.
+	(memset, memcpy, memmove, strcpy, strncpy, strcat, strncat): Change
+	macros so that inlines are used only if unknown destination size
+	or side-effects in destination argument.
+	(mempcpy, stpcpy): Likewise.  Protect with #ifdef __USE_GNU.
+
+2004-09-16  Ulrich Drepper  <drepper@redhat.com>
+
+	* debug/Makefile (routines): Add *_chk.
+	* debug/Versions (libc): Export __chk_fail, __memcpy_chk,
+	__memmove_chk, __mempcpy_chk, __memset_chk, __stpcpy_chk,
+	__strcat_chk, __strcpy_chk, __strncat_chk, __strncpy_chk,
+	__sprintf_chk, __vsprintf_chk, __snprintf_chk, __vsnprintf_chk
+	@GLIBC_2.3.4.
+	* debug/chk_fail.c: New file.
+	* debug/snprintf_chk.c: Likewise.
+	* debug/sprintf_chk.c: Likewise.
+	* debug/vsnprintf_chk.c: Likewise.
+	* debug/vsprintf_chk.c: Likewise.
+	* include/features.h (_FORTIFY_SOURCE): Document, handle.
+	(__USE_FORTIFY_LEVEL): Define.
+	(__GNUC_PREREQ): Move to earlier location.
+	* include/sys/cdefs.h (__chk_fail): New prototype.
+	* libio/bits/stdio.h (sprintf, vsprintf, snprintf, vsnprintf):
+	Define if __USE_FORTIFY_LEVEL.
+	* misc/sys/cdefs.h (__bos, __bos0): Define.
+	* string/string.h: Include <bits/string3.h> if __USE_FORTIFY_LEVEL.
+	* bits/string/string3.h: New header.
+	* sysdeps/generic/memcpy_chk.c: New file.
+	* sysdeps/generic/memmove_chk.c: Likewise.
+	* sysdeps/generic/mempcpy_chk.c: Likewise.
+	* sysdeps/generic/memset_chk.c: Likewise.
+	* sysdeps/generic/stpcpy_chk.c: Likewise.
+	* sysdeps/generic/strcat_chk.c: Likewise.
+	* sysdeps/generic/strcpy_chk.c: Likewise.
+	* sysdeps/generic/strncat_chk.c: Likewise.
+	* sysdeps/generic/strncpy_chk.c: Likewise.
+
+2004-10-17  Roland McGrath  <roland@frob.com>
+
+	* manual/memory.texi (Page Lock Functions): Typo fix.
+	Reported by Carlos Maziero <maziero@ppgia.pucpr.br>
+
+2004-10-16  Alfred M. Szmidt  <ams@kemisten.nu>
+
+	* sysdeps/mach/hurd/Makefile (link-libc-static): Use
+	`$(static-gnulib') instead of `$(gnulib)'.
+
+2004-10-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* sunrpc/rpc_clntout.c: Avoid including rcsid into binary.
+	* sunrpc/rpc_cout.c: Likewise.
+	* sunrpc/rpc_hout.c: Likewise.
+	* sunrpc/rpc_main.c: Likewise.
+	* sunrpc/rpc_parse.c: Likewise.
+	* sunrpc/rpc_sample.c: Likewise.
+	* sunrpc/rpc_scan.c: Likewise.
+	* sunrpc/rpc_svcout.c: Likewise.
+	* sunrpc/rpc_tblout.c: Likewise.
+	* sunrpc/rpc_util.c: Likewise.
+
+2004-10-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/sysdep.h (PUSHARGS_6, DOARGS_6,
+	POPARGS_6, _PUSHARGS_6, _DOARGS_6, _POPARGS_6): Define.
+	* sysdeps/unix/sysv/linux/i386/syscall.S (syscall): Handle 6 argument
+	syscalls.
+
+2004-10-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd.h (_PATH_NSCD_PASSWD_DB): Move to /var/db.
+	(_PATH_NSCD_GROUP_DB): Likewise.
+	(_PATH_NSCD_HOSTS_DB): Likewise.
+	(_PATH_NSCD_XYZ_DB_TMP): New #define, point to /var/run.
+	* nscd/connections.c (nscd_init): Non-persistent database files
+	are created with the _PATH_NSCD_XYZ_DB_TMP path.
+	* nscd/nscd.init: Create /var/db/nscd if necessary.
+
+2004-10-15  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/unix/sysv/linux/alpha/register-dump.h: New file.
+	* sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h (SIGCONTEXT): Add
+	_code argument, pass sigcontext by pointer.
+	(SIGCONTEXT_EXTRA_ARGS): Likewise.
+	(GET_PC, GET_FRAME, GET_STACK): Expect ctx as pointer.
+
+2004-10-14  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/dl-machine.h (elf_machine_rela,
+	elf_machine_rela_relative, elf_machine_lazy_rel): Mark auto
+	instead of static.
+
+	* sysdeps/unix/sysv/linux/adjtime.c (ADJTIME): Use prototype
+	style definition.
+	* sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIME): If
+	__ASSUME_TIMEVAL64, define __adjtime directly rather than
+	via strong_alias.
+
+2004-10-14  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/Makefile: When using compilers without -fpie support, also
+	link with -lselinux if necessary.
+	Patch by Arkadiusz Miskiewicz <arekm@pld-linux.org>.
+
+	* nscd/connections.c (nscd_init): Remove file if not persistent
+	and not shared.  Patch by Jerome Borsboom <j.borsboom@erasmusmc.nl>.
+
+2004-10-14  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/setresuid.c: Handle
+	defined __NR_setresuid32 && !defined __NR_setresuid.
+	* sysdeps/unix/sysv/linux/i386/setresgid.c: Handle
+	defined __NR_setresgid32 && !defined __NR_setresgid.
+
+	* sysdeps/sparc/fpu/bits/mathinline.h (__signbitf, __signbit,
+	__signbitl, sqrtf, sqrt, sqrtl, fdim, fdimf): Use __NTH macro.
+
+	* sysdeps/generic/errno-loc.c: Don't undef #errno
+	if RTLD_PRIVATE_ERRNO.
+	* include/errno.h (__errno_location): If RTLD_PRIVATE_ERRNO,
+	add attribute_hidden.
+
+	* dlfcn/dlinfo.c (dlinfo_doit): Replace iteration over GL(dl_loaded)
+	chain with iteration over all namespaces' _ns_loaded chains.
+	* sysdeps/powerpc/powerpc32/dl-machine.c (__elf_preferred_address):
+	Likewise.
+	* sysdeps/mips/dl-machine.h (elf_machine_runtime_link_map): Likewise.
+
+	* elf/rtld.c (_dl_start): Fix one last dl_loaded.
+	* elf/dl-load.c (_dl_map_object_from_fd): Avoid definition of
+	label when it is not needed.
+	* elf/dl-close.c (_dl_close): Typo: & -> &&.
+
+2004-10-12  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/generic/segfault.c: Include alloca.h and stdint.h.
+	Don't include frame.h.
+	(CURRENT_STACK_FRAME, INNER_THAN, ADVANCE_STACK_FRAME): Remove.
+	(catch_segfault): Use backtrace function.
+
+	* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Fix comment.
+	* sysdeps/unix/sysv/linux/ia64/register-dump.h: New file.
+	* sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h (GET_PC): Return sc_ip
+	field.
+
+2004-10-13  Ulrich Drepper  <drepper@redhat.com>
+
+	Add support for namespaces in the dynamic linker.
+	* dlfcn/Makefile (libdl-routines): Add dlmopen.
+	* dlfcn/Versions [libdl, GLIBC_2.3.4]: Add dlmopen.
+	* dlfcn/dlfcn.h: Define Lmid_t, LM_ID_BASE, and LM_ID_NEWLM.
+	Declare dlmopen.  Document RTLD_DI_LMID.
+	* dlfcn/dlinfo.c: Handle RTLD_DI_LMID.
+	* dlfcn/dlmopen.c: New file.
+	* dlfcn/dlopen.c: Pass new parameter to _dl_open.
+	* dlfcn/dlopenold.c: Likewise.
+	* elf/dl-addr.c: Adjust for removal of GL(dl_loaded).
+	* elf/dl-caller.c: Likewise.
+	* elf/dl-close.c: Likewise.
+	* elf/dl-conflict.c: Likewise.
+	* elf/dl-debug.c: Likewise.
+	* elf/dl-lookup.c: Likewise.
+	* elf/dl-sym.c: Likewise.
+	* elf/dl-version.c: Likewise.
+	* elf/do-lookup.h: Likewise.
+	* elf/rtld.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/dl-librecon.h: Likewise.
+	* elf/dl-depsc: Likewise.  Add new parameter to _dl_map_object.
+	* elf/dl-fini.c: Call destructors in all namespaces.
+	* elf/dl-iteratephdr.c: Compute total nloaded.  Adjust for removal of
+	GL(dl_loaded).
+	* elf/dl-libc.c: Pass new parameter to _dl_open.  Adjust for removal
+	of GL(dl_loaded).
+	* elf/dl-load.c (_dl_map_object_from_fd): Don't load ld.so a second
+	time.  Reuse the one from the main namespace in all others.
+	Pass new parameter to _dl_new_object.
+	Adjust for removal of GL(dl_loaded).
+	* elf/dl-object.c: Take new parameter.  Use it to initialize l_ns.
+	Adjust for removal of GL(dl_loaded).
+	* elf/dl-open.c (_dl_open): Take new parameter.
+	Adjust for removal of GL(dl_loaded).
+	* elf/dl-support.c: Replace global _dl_loaded etc variables with
+	_dl_ns variable.
+	* include/dlfcn.h: Adjust prototype of _dl_open.
+	Define __LM_ID_CALLER.
+	* include/link.h: Add l_real, l_ns, and l_direct_opencount elements.
+	* sysdeps/generic/dl-tls.c: Bump TLS_STATIC_SURPLUS.  Since libc is
+	using TLS we need memory appropriate to the number of namespaces.
+	* sysdeps/generic/ldsodefs.h (struct rtld_global): Replace _dl_loaded,
+	_dl_nloaded, _dl_global_scope, _dl_main_searchlist, and
+	_dl_global_scope_alloc with _dl_ns element.  Define DL_NNS.
+	Adjust prototypes of _dl_map_object and member in rtld_global_ro.
+	* malloc/malloc.c: Include <dlfcn.h>.
+	* malloc/arena.c (ptmalloc_init): If libc is not in primary namespace,
+	never use brk.
+	* elf/Makefile: Add rules to build and run tst-dlmopen1 and
+	tst-dlmopen2.
+	* elf/tst-dlmopen1.c: New file.
+	* elf/tst-dlmopen1mod.c: New file.
+	* elf/tst-dlmopen2.c: New file.
+
+	* elf/dl-close.c: Improve reference counting by tracking direct loads.
+	* elf/dl-lookup.c (add_dependency): Likewise.
+	* elf/dl-open.c (dl_open_worker): Likewise.
+	* elf/rtld.c (dl_main): Likewise.
+
+2004-09-09  GOTO Masanori  <gotom@debian.or.jp>
+
+	[BZ #77]
+	* elf/dl-close.c: Count down l_opencount to check not only for
+	l_reldeps, but also l_initfini.
+
+2004-10-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-close.c (_dl_close): Update bug reporting instructions.
+
+2004-10-11  Ulrich Drepper  <drepper@redhat.com>
+
+	* timezone/asia: Update from tzdata2004e.
+	* timezone/southamerica: Likewise.
+	* timezone/private.h: Update from tzcode2004e.
+	* timezone/zdump.c: Likewise.
+
+	* stdio-common/vfscanf.c: Add support for reading localized
+	digits.  Patch mainly by Hamed Malek <hamed@bamdad.org>.
+
+	* resolv/res_init.c (res_thread_freeres): Reset _res.options.
+	[BZ #434]
+
+	* resolv/res_send.c (send_dg): Use nonblocking sockets.  Add
+	appropriate poll/select calls and restart operation if necessary.
+	Also handle EINTR.
+
+	* elf/tst-dlopenrpath.c (do_test): Enable code which was disabled
+	for debugging.
+
+	* elf/dl-sym.c (do_sym): Avoid using global variable.
+
+	* elf/dl-addr.c (_dl_addr): Really use match everywhere.
+
+2004-10-09  Andreas Schwab  <schwab@suse.de>
+
+	* sysdeps/m68k/memcopy.h (WORD_COPY_BWD): Remove use of cast as
+	lvalue.
+
+	* sysdeps/m68k/fpu/bits/mathinline.h: Remove __THROW from inline
+	definitions.
+
+2004-10-07  Andreas Schwab  <schwab@suse.de>
+
+	* misc/sys/uio.h: Change __vector to __iovec to avoid clash with
+	altivec.
+
+2004-10-06  Alan Modra  <amodra@bigpond.net.au>
+
+	* gmon/Makefile (CFLAGS-mcount.c): Move before inclusion of "Rules".
+	* sysdeps/powerpc/powerpc64/Makefile (CFLAGS-mcount.c): Add
+	-msoft-float.
+	* sysdeps/powerpc/powerpc64/sysdep.h (SAVE_ARG, REST_ARG): New macros.
+	(CALL_MCOUNT): Replace with a gas macro implementation.
+	(EALIGN): Delete PROF version.
+	* sysdeps/powerpc/powerpc64/__longjmp-common.S: Invoke CALL_MCOUNT.
+	* sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
+	* sysdeps/powerpc/powerpc64/memcpy.S: Likewise.
+	* sysdeps/powerpc/powerpc64/memset.S: Likewise.
+	* sysdeps/powerpc/powerpc64/stpcpy.S: Likewise.
+	* sysdeps/powerpc/powerpc64/strchr.S: Likewise.
+	* sysdeps/powerpc/powerpc64/strcmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/strcpy.S: Likewise.
+	* sysdeps/powerpc/powerpc64/strlen.S: Likewise.
+	* sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_llround.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_rint.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_rintf.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_round.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Likewise.
+
+	* sysdeps/powerpc/powerpc64/setjmp-common.S: Add extra entry point
+	past _mcount call.
+	* sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Use it.
+	* sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise.
+
+2004-10-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* resolv/res_mkquery.c (res_nmkquery): Reject randombits value if
+	low 16 bits are zero.
+
+2004-10-06  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/tst-getaddrinfo2.c: Include stdlib.h and string.h.
+	(do_test): Use %p instead of 0x%08X to print a pointer.
+
+	* malloc/malloc.c: Include stdio-common/_itoa.h.
+
+2004-10-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/rtld.c (dl_main): Use _dl_debug_printf instead of _dl_printf
+	for prelink message.
+
+2004-10-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Include dl-sysdep.h.
+	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
+
+2004-10-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* grp/initgroups.c: Remove duplicate group IDs.
+	* grp/compat-initgroups.c: Likewise.
+	* nscd/initgrcache.c: Likewise.
+
+2004-10-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/x86_64/sysconf.c (__sysconf): Return 200112L
+	for _SC_CPUTIME or _SC_THREAD_CPUTIME.
+
+	* nscd/Makefile (nscd-cflags): Set to -DIS_IN_nscd=1, plus
+	-fpie if building PIE.
+	(CFLAGS-*.c): Use it.
+
+	* nscd/Makefile (relro-LDFLAGS): Add -Wl,-z,now if have-z-relro.
+	($(objpfx)nscd): Add $(relro-LDFLAGS).
+
+	* sysdeps/unix/sysv/linux/i386/sysconf.c: Include hp-timing.h.
+	(__sysconf): Return -1 for _SC_CPUTIME or _SC_THREAD_CPUTIME if
+	!HP_TIMING_AVAIL.
+
+2004-10-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/Makefile (distribute): Remove TODO.
+	* nscd/TODO: Removed.
+
+2004-10-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/gai.c: Define __no_netlink_support if NEED_NETLINK is
+	defined and __ASSUME_NETLINK_SUPPORT is zero.
+	* sysdeps/unix/sysv/linux/Makefile (CFLAGS-gai.c): Add
+	-DNEED_NETLINK.
+
+	* malloc/mtrace.pl: Avoid calling location unless it is needed for
+	output.  Patch by Edward Bishop <binutils@gmail.com>.
+
+	* nscd/Makefile (CFLAGS-gai.c): Add -fpie.
+
+2004-10-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c
+	(clock_getcpuclockid): Add missing retval.
+
+	* sysdeps/unix/sysv/linux/ia64/sysconf.c (linux_sysconf): Fix a typo.
+
+2004-10-04  Roland McGrath  <roland@redhat.com>
+
+	* include/errno.h [RTLD_PRIVATE_ERRNO] (errno): Rename the real symbol
+	to rtld_errno.
+	* sysdeps/generic/errno.c [RTLD_PRIVATE_ERRNO] (rtld_errno): Define it,
+	and don't define any other errno names.
+	* sysdeps/unix/alpha/sysdep.h [RTLD_PRIVATE_ERRNO]: Use rtld_errno in
+	place of errno.
+	* sysdeps/unix/i386/sysdep.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise.
+	* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+	* sysdeps/unix/x86_64/sysdep.S: Likewise.
+
+	* sysdeps/generic/errno.c [! USE___THREAD] (errno): Use `nocommon'
+	attribute instead of `section'.
+
+2004-10-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/ia64/sysconf.c: New file.
+	* sysdeps/unix/sysv/linux/ia64/Dist: Add has_cpuclock.c.
+	* sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c: Move actual
+	testing code to...
+	* sysdeps/unix/sysv/linux/ia64/has_cpuclock.c: ...here.  New file.
+	* sysdeps/unix/sysv/linux/i386/sysconf.c: Add dynamic check for
+	_SC_CPUTIME and _SC_THREAD_CPUTIME.
+
+	* nscd/connections.c (start_threads): Use sysconf in case
+	_POSIX_CLOCK_SELECTION or _POSIX_MONOTONIC_CLOCK is not greater zero.
+
+	* nscd/Makefile (nscd-modules): Add gai.
+	* nscd/gai.c: New file.
+	* nscd/nscd.c: Remove getaddrinfo stub definition.
+
+	* assert/assert.h: Give up on using __builtin_expect.
+
+	* elf/rtld.c (dl_main): Only skip => output in ldd mode if both
+	strings are identical.
+
+2004-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* malloc/arena.c (aligned_heap_area): New variable.
+	(new_heap): If aligned_heap_area != NULL, attempt to use that
+	first.  If HEAP_MAX_SIZE << 1 area is already HEAP_MAX_SIZE bytes
+	aligned, remember the second half in aligned_heap_area.
+	(delete_heap): Clear aligned_heap_area if deleting the area right
+	before aligned_heap_area.
+
+2004-10-03  Juerg Billeter  <j@bitron.ch>
+
+	* nscd/nscd_initgroups.c (__nscd_getgrouplist): Return -1 if nscd
+	can't be used.  [BZ #424]
+
+2004-10-03  Ulrich Drepper  <drepper@redhat.com>
+
+	Dynamically create new threads if necessary.
+	* nscd/connections.c (fd_ready): If no thread available for processing
+	the request, create a new one unless the limit is reached.
+	(start_threads): Check errors from pthread_create.
+	* nscd/nscd.h: Declare max_nthreads.
+	* nscd/nscd_conf.c: Parse max-nthreads entry.
+	* nscd/nscd.conf: Add max-threads entry.
+	* nscd/nscd_stat.c: Print current and maximum number of threads.
+
+	Implement paranoia mode.
+	* nscd/connections.c (nscd_init): Mark database and socket descriptors
+	as close on exec.
+	(restart): New function.
+	(restart_p): New function.
+	(nscd_run): Add missing descrement of nready in case readylist is
+	empty.
+	(main_loop_poll): Call restart_p and restart.
+	(main_loop_epoll): Likewise.
+	(begin_drop_privileges): Save original UID and GID.
+	* nscd/nscd.c: Define new variables paranoia, restart_time,
+	restart_interval, oldcwd, old_gid, old_uid.
+	(main): Disable paranoia mode if we are not forking.
+	(check_pid): When re-execing, the PID file contains the same PID as
+	the current process.  Do not fail in this case.
+	* nscd/nscd.conf: Add paranoia and restart-interval entries.
+	* nscd/nscd.h: Define RESTART_INTERVAL.  Declare new variables.
+	* nscd/nscd_conf.c: Parse paranoia and restart-internal configurations.
+	* nscd/nscd_stat.c: Print paranoia and restart-internal values.
+
+	* nscd/connections.c: Implement alternative loop for main thread
+	which uses epoll.
+	* sysdeps/unix/sysv/linux/Makefile [subdir=nscd]
+	(CFLAGS-connections.c): Add -DHAVE_EPOLL.
+
+2004-10-02  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/Makefile (CFLAGS-initgrcache.c): Add to CFLAGS-* variables,
+	don't replace old content.
+
+	* nscd/connections.c: Rewrite handling of incoming connections.  All
+	are handled by one thread which then hands off the descriptors for the
+	real work to the worker threads.
+	* nscd/Makefile: Link nscd with librt.
+
+	* nscd/selinux.c: Pretty printing.
+
+	* nscd/dbg_log.c (dbg_log): Don't add unnecessary newline to
+	output.  Let syslog do the formatting if debug_level == 0.
+
+	* nscd/nscd_helper.c (get_mapping): No need to check timestamp if
+	nscd_certainly_running is nonzero.
+
+2004-10-02  Simon Josefsson  <jas@extundo.com>
+
+	[BZ #420]
+	* sysdeps/generic/memmem.c [!_LIBC]: Define __builtin_expect, to
+	make the file usable inside gnulib.
+
+2004-10-01  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (public_vALLOc): Add missing use of hooks.
+	(public_pVALLOc): Likewise.
+
+	* nscd/nscd_initgroups.c (__nscd_getgrouplist): Always add the
+	group the caller provided unless there is a real problem.
+
+	* posix/bug-glob1.c (prepare): Fix creation of symlink.
+
+2004-09-30  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/Makefile: Add rules to build and run bug-glob1.
+	* posix/bug-glob1.c: New file.
+
+	* iconv/iconv_prog.c (main): Print progress information to stderr.
+
+	* nscd/nscd.c (termination_handler): Reset timestamp so that
+	clients immediately stop using the database.
+
+	* nscd/nscd-client.h (__nscd_get_map_ref): Drop volatile from last
+	parameter.
+	(__nscd_drop_map_ref): Change second parameter to be a reference to
+	a variable.  Update variable when cycle count changed.
+	* nscd/nscd_helper.c (__nscd_get_map_ref): Remove volatile here, too.
+	* nscd/nscd_getai.c: Correctly use __nscd_drop_map_ref.  Reinitialize
+	all variables and avoid memory leak in case of retries.
+	* nscd/nscd_getgr_r.c: Likewise.
+	* nscd/nscd_gethst_r.c: Likewise.
+	* nscd/nscd_getpw_r.c: Likewise.
+	* nscd/nscd_initgroups.c: Likewise.
+
+	* nscd/nscd.h: Add declaration of addinitgroups and
+	readdinitgroups.
+
+2004-09-30  Andreas Jaeger  <aj@suse.de>
+
+	* nscd/Makefile (CFLAGS-nscd_initgroups.c): Set to -fpie.
+	(CFLAGS-initgrcache.c): Set to -fexceptions.
+
+2004-09-29  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/generic/glob.c (glob_in_dir): Don't blindly trust
+	readdir results; for symlinks or files of unknown type check using
+	stat whether the file exists.
+
+	* posix/tst-gnuglob.c (find_file): Handle leading "./".  Fix
+	recognition of files.
+
+2004-09-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* time/tzfile.c (tzfile_mtime): New variable.
+	(__tzfile_read): Reread the file if mtime is different.
+
+2004-09-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/alpha/fpu/bits/mathinline.h (__fdimf, __fdim, fdimf, fdim):
+	Handle +inf/+inf.
+	* sysdeps/powerpc/fpu/bits/mathinline.h (fdim, fdimf): Likewise.
+	* sysdeps/sparc/fpu/bits/mathinline.h (fdim, fdimf): Likewise.
+
+2004-09-29  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd_gethst_r.c (nscd_gethst_r): Use correct constant for
+	testing result of __nscd_get_map_ref.
+
+2004-09-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/i386/fpu/s_fdim.S (__fdim): Handle +inf/+inf.
+	* sysdeps/i386/fpu/s_fdimf.S (__fdimf): Likewise.
+	* sysdeps/i386/fpu/s_fdiml.S (__fdiml): Likewise.
+
+004-09-29  Ulrich Drepper  <drepper@redhat.com>
+
+	* grp/initgroups.c: Move compat_call implementation...
+	* grp/compat-initgroups.c: ...to here.  New file.
+	* grp/Makefile (distribute): Add compat-initgroups.c.
+	(CFLAGS-initgroups.c): Add -DUSE_NSCD=1.
+	* mscd/initgrcache.c: New file.
+	* nscd/nscd_initgroups.c: New file.
+	* nscd/Makefile (routines): Add nscd_initgroups.
+	(nscd-modules): Add initgrcache.
+	* nscd/cache.c (prune_cache): Add support for INITGROUPS entries.
+	* nscd/connections.c: Handle INITGROUPS requests.
+	* nscd/nscd-client.h: Define INITGROUPS, initgr_response_header.
+	Add initgrdata element to struct datahead.  Fix typo in comment.
+	* nscd/nscd_proto.h: Declare __nscd_getgrouplist.  Fix parameter
+	type in __nscd_getgrgrid_r.
+	* nscd/selinux.c (perms): Add INITGROUPS entry.
+
+	* nscd/nscd_getai.c: No need to include <sys/mman.h>.
+
+	* sunrpc/get_myaddr.c (get_myaddress): Account for interfaces without
+	assigned addresses.
+	* sunrpc/pmap_clnt.c (__get_myaddress): Likewise.
+	* sunrpc/pmap_rmt.c (getbroadcastnets): Likewise.
+	* sunrpc/clnt_udp.c (is_network_up): Likewise.
+
+	* nscd/nscd.c: Define getaddrinfo hidden so that it is never found
+	outside.
+
+	* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (si_segvflags):
+	Renamed from si_flags due to conflict with si_flags from <elf.h>.
+
+2004-09-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd_getai.c: Use NO_MAPPING instead of MAP_FAILED for test
+	of failing __nscd_get_map_ref.  Fix a few typos.
+
+	* sysdeps/unix/sysv/linux/sigwait.c (do_sigwait): Make sure
+	SIGSETXID is not blocked.
+	* sysdeps/unix/sysv/linux/sigwaitinfo.c (do_sigwaitinfo): Likewise.
+	* sysdeps/unix/sysv/linux/sigtimedwait.c (do_sigtimedwait): Likewise.
+	* sysdeps/unix/sysv/linux/sigprocmask.c (__sigprocmask): Likewise.
+	* sysdeps/generic/sigfillset.c (sigfillset): Don't set SIGSETXID.
+
+	* sunrpc/get_myaddr.c (get_myaddress): Fix test for failing
+	getifaddrs call.
+	* sunrpc/pmap_clnt.c (__get_myaddress): Likewise.
+	* sunrpc/pmap_rmt.c (getbroadcastnets): Likewise.
+	* sunrpc/Makefile (xtests): Add tst-getmyaddr.
+	* sunrpc/tst-getmyaddr.c: New file.
+
+	* malloc/arena.c (ptmalloc_init): Allow MALLOC_CHECK_==0 to
+	disable all checking.
+
+	* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (si_flags): Add
+	support to get this value.
+
+2004-09-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* io/utime.h (utime): Allow second argument to be NULL.
+
+2004-09-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): If NAME is a numerical IP
+	address and AI_CANONNAME is set, return copy of NAME as ai_canonname.
+
+2004-09-27  Andreas Jaeger  <aj@suse.de>
+
+	* sysdeps/i386/dl-machine.h (elf_machine_rela_relative): Replace
+	static inline by auto inline, add always_inline attribute.
+	(elf_machine_rel): Likewise.
+	(elf_machine_rela): Likewise.
+	(elf_machine_lazy_rel): Likewise.
+	(elf_machine_lazy_rela): Likewise.
+	(elf_machine_rel_relative): Likewise.
+
+2004-09-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* sunrpc/xdr_intXX_t.c: Add xdr_quad_t and xdr_u_quad_t aliases.
+	* sunrpc/rpc/xdr.h: Declare xdr_quad_t and xdr_u_quad_t.
+	* sunrpc/rpc_parse.c (get_type): Use "quad_t" for TOK_HYPER.
+	Otherwise isvectordef will loop infinitely if typedef hyper int64_t
+	is seen.
+	(unsigned_dec): Use "u_quad_t" for similar reasons.
+	* sunrpc/Versions: Export xdr_quad_t and xdr_u_quad_t.
+
+2004-09-27  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/generic/bits/waitstatus.h (__WIFSIGNALED): Simplify bit
+	twiddling in last change.
+
+	* posix/tst-waitid.c (do_test): Add tests for waitpid with WCONTINUED.
+
+	[BZ #409]
+	* posix/sys/wait.h [__WIFCONTINUED] (WIFCONTINUED): New macro.
+	* stdlib/stdlib.h [__WIFCONTINUED] (WIFCONTINUED): New macro.
+	* sysdeps/generic/bits/waitstatus.h (__W_CONTINUED): New macro.
+	[WCONTINUED] (__WIFCONTINUED): New macro.
+	(__WIFSIGNALED): Rewritten to exclude __W_CONTINUED value, and have no
+	branches.
+
+	* sysdeps/unix/sysv/linux/waitid.c (do_waitid): Add fifth argument to
+	all three syscall uses, not just one!
+
+2004-09-26  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/alphaev6/memcpy.S: Mark .prologue.
+	* sysdeps/unix/alpha/sysdep.h (LEAF, ENTRY): Align entry points
+	to 16 byte boundaries.
+
+2004-09-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/readlib.c (process_file): Before complaining about too-short
+	file, check that it potentially be an ELF file.  Also complain about
+	empty files.  [BZ #151].
+
+	* scripts/test-installation.pl: Fix ld.so recognition for new
+	LD_TRACE_LOADED_OBJECTS output format.
+	Patch by <jsberg04+computing.glibc@ftml.net>  [BZ #407].
+
+	* elf/dl-support.c (_dl_non_dynamic_init): Fix cleaning of
+	environment.  [BZ #384]
+
+	* sunrpc/clnt_udp.c (is_network_up): Use getifaddrs instead of ioctl.
+	* sunrpc/get_myaddr.c (get_myaddress): Likewise.
+	* sunrpc/pmap_clnt.c (__get_myaddress): Likewise.
+	* sunrpc/pmap_rmt.c (getbroadcastnets): Likewise.  Change interface
+	to avoid buffer overrun and remove now useless parameters.
+	(clnt_broadcast): Adjust caller.  [BZ #381].
+
+	* sysdeps/generic/s_fdim.c: Handle +inf/+inf
+	* sysdeps/generic/s_fdimf.c: Likewise.
+	* sysdeps/generic/s_fdiml.c: Likewise.
+	* sysdeps/i386/i686/fpu/s_fdim.S: Likewise.
+	* sysdeps/i386/i686/fpu/s_fdimf.S: Likewise.
+	* sysdeps/i386/i686/fpu/s_fdiml.S: Likewise.
+	* sysdeps/powerpc/fpu/s_fdim.c: Likewise.
+	* sysdeps/powerpc/fpu/s_fdimf.c: Likewise.
+	* sysdeps/x86_64/fpu/s_fdiml.S: Likewise.
+	* math/libm-test.inc (fdim_test): Add test case.  [BZ #376].
+
+	* sysdeps/generic/bits/types.h: Fix __SQUAD_TYPE and __UQUAD_TYPE
+	for compilers without __GLIBC_HAVE_LONG_LONG.  [BZ #362]
+
+	* sysdeps/posix/getaddrinfo.c (getaddrinfo): Remove incorrect
+	requirement on socktype and protocol.
+	(gaih_inet): If numeric port number is given, return records for all
+	possible socket types.
+	* posix/tst-getaddrinfo2.c: New file.
+	* posix/Makefile (tests): Add tst-getaddrinfo2.  [BZ #358]
+
+2004-09-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* locale/loadlocale.c (_nl_intern_locale_data): Recognize LC_CTYPE
+	data where _nl_value_type_LC_CTYPE does not contain the type
+	information.  Add range checks.
+	Reported by John Lumby <johnlumby@hotmail.com> [BZ #356].
+
+	* libio/vasprintf.c (_IO_vasprintf): Fix condition to decide
+	whether to realloc or not.
+	Reported by Pavel Kankovsky <peak@argo.troja.mff.cuni.cz> [BZ #346].
+
+	* intl/dcigettext.c (DCIGETTEXT): Protect tfind/tsearch calls.
+	* intl/dcigettext.c (_nl_find_msg): Call _nl_load_domain also if
+	decided < 0.
+	* intl/finddomain.c (_nl_find_domain): Likewise.
+	* intl/loadmsgcat.c (_nl_load_domain): Set decided to 1 only once we
+	are done.  First set to -1 to signal initialization is ongoing.
+	Protect against concurrent callers with recursive lock.
+	* intl/finddomain.c (_nl_find_domain): Protect calls to
+	_nl_make_l10nflist.  [BZ #322]
+
+	* sysdeps/posix/getaddrinfo.c (getaddrinfo): If determinination of
+	source address fails, initialized source_addr_len field so that
+	duplicate address recognition does not copy junk.
+
+2004-09-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/setuid.c (__setuid): Remove second
+	result declaration.
+
+2004-09-22  Andreas Schwab  <schwab@suse.de>
+
+	* sysdeps/unix/sysv/linux/ia64/sysdep.h: Adjust whitespace.
+
+2004-09-24  Ulrich Drepper  <drepper@redhat.com>
+
+	* misc/daemon.c (daemon): Don't succeed if /dev/null cannot be
+	opened.
+
+	* nis/ypclnt.c (do_ypcall): Add one missing unlock.  Simplify the
+	code a bit.
+
+	* misc/daemon.c (daemon): Define errno in case /dev/null is not
+	the correct device.
+
+	* nis/ypclnt.c (yp_bind_file): Optimize a bit.  Minimal cleanups.
+
+2004-09-23  Andreas Jaeger  <aj@suse.de>
+
+	* locale/weight.h (findidx): Remove static, it's not supported
+	anymore with GCC 4.0 in a block scope.
+	* locale/weightwc.h (findidx): Likewise.
+	* posix/regcomp.c (seek_collating_symbol_entry): Likewise.
+	(lookup_collation_sequence_value): Likewise.
+	(build_range_exp): Likewise.
+	(build_collating_symbol): Likewise.
+	* iconv/iconvconfig.c (write_output): Likewise.
+	* elf/do-rel.h (elf_dynamic_do_rel): Likewise.
+
+	* sysdeps/x86_64/dl-machine.h (elf_machine_rela_relative): Remove
+	static, add always_inline attribute.
+	(elf_machine_rela): Likewise.
+	(elf_machine_lazy_rel): Likewise.
+
+	* elf/dynamic-link.h (elf_get_dynamic_info): Make static dependend
+	on !RESOLVE so that it's not defined in local scope.
+
+2004-09-23  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL_NCS): Define.
+
+2004-09-23  Thorsten Kukuk  <kukuk@suse.de>
+
+	* sysdeps/unix/sysv/linux/sys/mount.h: Sync MS_RMT_MASK flag
+	and BLK* ioctls with linux kernel headers.
+
+2004-09-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/generic/bits/dlfcn.h: Add RTLD_DEEPBIND.
+	* elf/dl-object.c (_dl_new_object): Add new parameter mode.  If mode
+	has RTLD_DEEPBIND set add local searchlist before global scope.
+	* sysdeps/generic/ldsodefs.h (_dl_new_object): Adjust prototype.
+	* elf/rtld.c: Adjust callers of _dl_new_object.
+	* elf/dl-load.c: Likewise.
+	(_dl_map_object_from_fd): If RTLD_DEEPBIND is used, don't do anything
+	for DF_SYMBOLIC.
+	* elf/dl-open.c (dl_open_writer): Pass RTLD_DEEPBIND flag on to
+	_dl_map_object_deps.
+	* elf/tst-deep1.c: New file.
+	* elf/tst-deep1mod1.c: New file.
+	* elf/tst-deep1mod2.c: New file.
+	* elf/tst-deep1mod3.c: New file.
+	* elf/Makefile: Add rules to build and run new tests.
+
+	* elf/dl-deps.c: Pretty printing.
+
+2004-09-23  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/alpha/sysdep.h (inline_syscall[0-6]): Change name
+	argument to numbers from syscall names.
+	(INLINE_SYSCALL1): Pass __NR_##name to inline_syscall##nr.
+	(INTERNAL_SYSCALL_NCS): Renamed from...
+	(INTERNAL_SYSCALL_1): ... this.  Use INTERNAL_SYSCALL_NCS.
+	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+	(INTERNAL_SYSCALL_NCS): Define.
+	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+	(INTERNAL_SYSCALL_NCS): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sysdep.h (inline_syscall[0-6]):
+	Change name argument to numbers from syscall names.
+	(INLINE_SYSCALL, INTERNAL_SYSCALL): Adjust.
+	(INTERNAL_SYSCALL_NCS): Define.
+
+2004-09-22  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (malloc_printerr): Use syslog if writev failed.
+
+	* string/string.h: Add __nonnull annotations.
+	* stdlib/stdlib.h: Likewise.
+
+2004-09-20  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sysdeps/unix/sysv/linux/ia64/sysdep.h (DO_INLINE_SYSCALL):
+	Renamed to ...
+	(DO_INLINE_SYSCALL_NCS): This.
+	(DO_INLINE_SYSCALL): New.
+	(INLINE_SYSCALL): Updated.
+	(INTERNAL_SYSCALL_NCS): Updated.
+
+2004-09-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/sprof.c (load_shobj): Add support for reading symbol table
+	from debuginfo file.
+
+	* elf/ldd.bash.in: Fix syntax errors.
+
+2004-09-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/dl-execstack.c
+	(_dl_make_stack_executable): Remove some duplication.
+
+	* nscd/nscd.c (options): Mark S option as hidden.
+	(parse_opt): When S option is used, print warning message.
+	* nscd/grpcache.c (adgrptbyX): Don't handle secure mode.
+	* nscd/hstcache.c (addhstbyX): Don't handle secure mode.
+	* nscd/aicache.c (addhstaiX): Don't handle secure mode.
+	* nscd/pwdcache.c (addpwbyX): Don't handle secure mode.
+
+2004-09-20  Roland McGrath  <roland@frob.com>
+
+	* elf/dl-load.c (__stack_prot): Only use PROT_GROWSUP/PROT_GROWSDOWN
+	in initializer #if defined.
+
+2004-09-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+	[BZ #391]
+	* stdlib/getsubopt.c: Merge fixes from gnulib.
+	(__strchrnul) [!_LIBC]: Define and include "strchrnul.c".
+	(getsubopt): Use prototypes, not K&R style.
+	Fix bug: memcmp(A,B,N) was being invoked on a memory block B
+	whose size might be smaller than N.  Use strncmp to avoid the bug.
+
+2004-09-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* configure.in: If selinux has not explictly been requested, don't
+	comment on it missing.
+
+	* elf/dl-load.c: Define __stack_prot.
+	* sysdeps/unix/sysv/linux/dl-execstack.c: Don't define
+	__stack_prot here, just declare it.
+
+2004-09-20  Jakub Jelinek  <jakub@redhat.com>
+
+	* configure.in (libc_cv_z_relro): Only set to yes if linker script
+	contains DATA_SEGMENT_RELRO_END.
+
+2004-09-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-load.c (_dl_map_object_from_fd): Add some error checking.
+	Reorder code slightly.
+	* elf/rtld.c (dl_main): No need to check whether l_info[DT_HASH]
+	is non-null, _dl_setup_hash will do that.
+
+2004-09-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/setegid.c [HAVE_PTR__NPTL_SETXID]: Call
+	callback to set IDs in all other threads as well.
+	* sysdeps/unix/sysv/linux/seteuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setegid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/seteuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/setuid.c: New file.
+	* sysdeps/unix/sysv/linux/setgid.c: New file.
+	* sysdeps/unix/sysv/linux/setreuid.c: New file.
+	* sysdeps/unix/sysv/linux/setregid.c: New file.
+	* sysdeps/unix/sysv/linux/setresuid.c: New file.
+	* sysdeps/unix/sysv/linux/setresgid.c: New file.
+	* sysdeps/unix/sysv/linux/i386/sysdep.h: Define INTERNAL_SYSCALL_NCS.
+	* sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c: Use x86 version.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/seteuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/setresgid.c: New file.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/setresuid.c: New file.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Remove setresgid
+	and setresuid.
+	* nscd/aicache.c: Use pthread_seteuid_np instead of seteuid.
+	* nscd/grpcache.c: Likewise.
+	* nscd/hstcache.c: Likewise.
+	* nscd/pwdcache.c: Likewise.
+
+	* resolv/res_mkquery.c (res_nmkquery): Fix typo.
+
+2004-09-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unisx/sysv/linux/dl-execstack.c: Get protection flag
+	from memory.
+	* elf/dl-load.c (_dl_map_object_from_fd): Add PROT_EXEC flag to
+	__stack_flags.
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Do not use
+	gethostbyname3_r if we are not looking for the canonical name.
+
+	* resolv/res_mkquery.c (res_nmkquery): Randomize request ID every
+	time.
+
+2004-09-18  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/sysv/linux/waitid.c (do_waitid): Pass fifth argument to
+	system call.
+
+2004-09-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* include/link.h (struct link_map): Add l_used element.
+	* sysdeps/generic/ldsodefs.h: Define DL_DEBUG_UNUSED.
+	* elf/rtld.c (process_dl_debug): Recognize unused.
+	(dl_main): When unused debug flag is set check for unused direct
+	dependencies.
+	When printing dependencies and SONAME starts with /, omit the SONAME =>
+	part.
+	* elf/dl-lookup.c (_dl_lookup_symbol_x): Mark object in which the
+	symbol has been found as used.
+	* elf/ldd.bash.in: Add -u option.
+
+2004-09-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/nscd_setup_thread.c (setup_thread):
+	Do nothing if __NR_set_tid_address is not defined.  [BZ #390]
+
+2004-09-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c: Use gethostbyname3_r NSS function
+	in case it is available.
+
+2004-09-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* nscd/nscd.c (parse_opt): Write arg string instead of (void *)
+	key to the socket.
+
+2004-09-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* misc/sys/cdefs.h: Define __nonnull using nonnull function attribute
+	for gcc 3.3 and higher.
+	* io/fcntl.h: Add __nonnull where appropriate.
+	* io/ftw.h: Likewise.
+	* io/utime.h: Likewise.
+	* io/sys/poll.h: Likewise.
+	* io/sys/sendfile.h: Likewise.
+	* io/sys/stat.h: Likewise.
+	* io/sys/statfs.h: Likewise.
+	* io/sys/statvfs.h: Likewise.
+	* posix/unistd.h: Likewise.
+	* catgets/nl_types.h: Likewise.
+	* crypt/crypt.h: Likewise.
+	* debug/execinfo.h: Likewise.
+
+2004-09-16  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/glob.h: Remove cruft to make header usable outside glibc.
+	The maintenance headache is too big.
+
+	* configure.in: Add test for required SELinux features.
+	* config.make.in: Add have-selinux entry.
+	* config.h.in: Add HAVE_SELINUX entry.
+	* nscd/Makefile (nscd-modules): Add selinux.
+	(CFLAGS-selinux.c): Add -fpie.
+	Define selinux-LIBS and use in link line.
+	* nscd/connections.c (handle_request): Check access SELinux permissions
+	before processing request.
+	* nscd/nscd.c (main): Initialize selinux_enabled and stop avc thread.
+	* nscd/nscd_stat.c: Transmit and print AVC statistics.
+	* nscd/selinux.c: New file.
+	* nscd/selinux.h: New file.
+	Patch mostly by Matthew Rickard <mjricka@epoch.ncsc.mil>.
+
+2004-09-16  Jakub Jelinek  <jakub@redhat.com>
+
+	* nscd/nscd_helper.c (__nscd_unmap, get_mapping): Use __munmap
+	instead of munmap.
+
+	* nscd/Makefile (CFLAGS-aicache.c): Set to -fpie.
+
+2004-09-16  Thorsten Kukuk  <kukuk@suse.de>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Check
+	__nss_not_use_nscd_hosts variable if nscd should be used or not.
+
+2004-09-16  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd_proto.h: Define NSS_NSCD_RETRY.
+	Add __nscd_getai prototype.
+	* nss/getXXbyYY_r.c: Remode definition of NSS_NSCD_RETRY.
+	* nscd/nscd-client.h: Remove __nscd_getai prototype.
+	* nscd/nscd_getai.c: Include nscd_proto.h.
+
+	* elf/ldd.bash.in: Add support for SELinux environments.
+	Patch by Stephen Smalley <sds@epoch.ncsc.mil>.
+
+2004-09-16  Roland McGrath  <roland@redhat.com>
+
+	* configure.in (--with-headers): Let argument contain a : separated
+	list of directories to use, not just one.
+	* configure: Regenerated.
+
+2004-09-15  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/fpu/libm-test-ulps: Update.
+	* scripts/data/c++-types-alpha-linux-gnu.data: New file.
+
+2004-09-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/aicache.c: Prefer using gethostbyname3_r NSS callback to also
+	get ttl and canonical name.  Use these two values.
+	* resolv/Versions: Export _nss_dns_gethostbyname3_r from libnss_dns.
+	* resolv/nss_dns/dns-host.c (getanswer_r): Take two new parameters.
+	If nonnull fill with TTL and pointer to canonical name respectively.
+	(_nss_dns_gethostbyaddr_r): Pass NULL in new parameters of getanswer_r.
+	(_nss_dns_gethostbyname2_r): Just wrapper around
+	_nss_dns_gethostbyname3_r.
+	(_nss_dns_gethostbyname3_r): Renamed from _nss_dns_gethostbyname2_r.
+	Take two new parameters which as passed to getanswer_r.
+
+	* nscd/Makefile (rountines): Add nscd_getai.
+	(nscd-modules): Add aicache.
+	* nscd/aicache.c: New file.
+	* nscd/nscd_getai.c: New file.
+	* nscd/cache.c (prune_cache): Handle GETAI request type.
+	* nscd/connections.c: Add GETAI support in request handling.
+	* nscd/nscd-client.h (request_type): Add GETAI.
+	Define ai_response_header and struct nscd_ai_result types.
+	(struct datahead): Add aidata field.
+	Declare __nscd_getai.
+	* nscd/nscd.c: Add getaddrinfo definition to catch problems.
+	* nscd/nscd.h: Declare addhstai and readdhstai.
+
+	* sysdeps/posix/getaddrinfo.c: Add support for using cached results.
+	* posix/Makefile (CFLAGS-getaddrinfo.c): Add -DUSE_NSCD.
+
+	* nscd/nscd-client.h  (struct datahead): Use uint8_t instead of bool.
+
+2004-09-14  Ulrich Drepper  <drepper@redhat.com>
+
+	* misc/sys/cdefs.h: Remove debugging text from __P and __PMT.
+
+2004-09-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* misc/sys/cdefs.h: Restore old definition of __P.
+	* csu/munch.awk: Remove uses of __P and __PMT.
+	* gmon/gmon.c: Likewise.
+	* hesiod/hesiod.h: Likewise.
+	* include/stdio.h: Likewise.
+	* io/fts.c: Likewise.
+	* libio/genops.c: Likewise.
+	* libio/libioP.h: Likewise.
+	* libio/fileops.c: Likewise.
+	* libio/iolibio.h: Likewise.
+	* libio/libio.h: Likewise.
+	* libio/memstream.c: Likewise.
+	* libio/oldfileops.c: Likewise.
+	* libio/oldstdfiles.c: Likewise.
+	* libio/iopopen.c: Likewise.
+	* libio/vsnprintf.c: Likewise.
+	* libio/vswprintf.c: Likewise.
+	* libio/wgenops.c: Likewise.
+	* libio/oldiopopen.c: Likewise.
+	* locale/programs/xmalloc.c: Likewise.
+	* locale/programs/xstrdup.c: Likewise.
+	* malloc/mtrace.c: Likewise.
+	* misc/getttyent.c: Likewise.
+	* misc/getusershell.c: Likewise.
+	* nis/rpcsvc/ypupd.h: Likewise.
+	* posix/fnmatch.h: Likewise.
+	* posix/glob.h: Likewise.
+	* resolv/arpa/nameser.h: Likewise.
+	* resolv/gethnamaddr.c: Likewise.
+	* resolv/resolv.h: Likewise.
+	* resolv/inet_net_ntop.c: Likewise.
+	* resolv/inet_net_pton.c: Likewise.
+	* resolv/res_init.c: Likewise.
+	* resolv/nss_dns/dns-network.c: Likewise.
+	* stdio-common/vfprintf.c: Likewise.
+	* stdio-common/reg-printf.c: Likewise.
+	* sysdeps/generic/chflags.c: Likewise.
+	* sysdeps/generic/fchflags.c: Likewise.
+	* sysdeps/generic/glob.c: Likewise.
+	* sysdeps/generic/printf_fphex.c: Likewise.
+	* sysdeps/generic/memcmp.c: Likewise.
+	* sysdeps/generic/memcopy.h: Likewise.
+	* sysdeps/generic/morecore.c: Likewise.
+	* sysdeps/generic/sstk.c: Likewise.
+	* sysdeps/posix/sigvec.c: Likewise.
+	* sysdeps/posix/ttyname_r.c: Likewise.
+	* sysdeps/standalone/arm/bits/errno.h: Likewise.
+	* sysdeps/standalone/standalone.h: Likewise.
+	* sysdeps/standalone/i386/force_cpu386/brdinit.c: Likewise.
+	* sysdeps/standalone/i386/force_cpu386/_exit.c: Likewise.
+	* sysdeps/unix/arm/start.c: Likewise.
+	* sysdeps/unix/bsd/sigaction.c: Likewise.
+	* sysdeps/unix/bsd/sun/m68k/sigtramp.c: Likewise.
+	* sysdeps/unix/bsd/sun/sparc/sigtramp.c: Likewise.
+	* sysdeps/unix/bsd/sun/sunos4/wait4.c: Likewise.
+	* sysdeps/unix/bsd/ultrix4/mips/sigvec.c: Likewise.
+	* sysdeps/unix/bsd/ultrix4/sysconf.c: Likewise.
+	* sysdeps/unix/sparc/start.c: Likewise.
+	* sysdeps/unix/sysv/getdents.c: Likewise.
+	* sysdeps/unix/sysv/irix4/fpathconf.c: Likewise.
+	* sysdeps/unix/sysv/irix4/getgroups.c: Likewise.
+	* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
+	* sysdeps/unix/sysv/irix4/getrusage.c: Likewise.
+	* sysdeps/unix/sysv/irix4/pathconf.c: Likewise.
+	* sysdeps/unix/sysv/irix4/setgroups.c: Likewise.
+	* sysdeps/unix/sysv/irix4/sigtramp.c: Likewise.
+	* sysdeps/unix/sysv/irix4/start.c: Likewise.
+	* sysdeps/unix/sysv/irix4/sysconf.c: Likewise.
+	* sysdeps/unix/sysv/sco3.2.4/__setpgid.c: Likewise.
+	* sysdeps/unix/sysv/sco3.2.4/getgroups.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/__getpgid.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/__setpgid.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/getpgid.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/setpgid.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/sethostname.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/setsid.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/sysconf.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/waitpid.c: Likewise.
+	* sysdeps/unix/sysv/sysv4/solaris2/getdents.c: Likewise.
+	* time/tzset.c: Likewise.
+	* time/strftime_l.c: Likewise.
+	* time/strptime_l.c: Likewise.
+	* crypt/md5.h: Likewise.
+
+2004-09-13  Andreas Jaeger  <aj@suse.de>
+
+	* configure.in: Support GCC 4.x.
+	* configure: Regenerated.
+
+2004-09-13  Thorsten Kukuk  <kukuk@suse.de>
+
+	* nscd/nscd_stat.c: Don't access dbs[cnt].head for disabled services.
+
+	* nscd/nscd.init: Fix path to socket.
+
+2004-09-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd_helper.c (get_mapping): Correctly check cmsg length.
+	Avoid file descriptor leak in case of size mismatch.
+
+	* nscd/nscd-client.h: Fix database structure layout for biarch.
+	* nscd/mem.c (gc): Add casts to avoid warnings.
+
+	* nss/getent.c: Don't preconstruct help message.  Do it only when
+	needed.
+
+	* locale/programs/locale.c: Simplify help message printing.
+
+2004-09-12  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/hurd/i386/init-first.c (init1) [! SHARED]: Add decls
+	missing in last change.
+
+2004-09-11  Thorsten Kukuk  <kukuk@suse.de>
+
+	* nis/nss_compat/compat-grp.c: Check that buflen is greater zero
+	before writing data into the buffer with negative offset.
+	* nis/nss_compat/compat-initgroups.c: Likewise.
+	* nis/nss_compat/compat-pwd.c: Likewise.
+	* nis/nss_compat/compat-spwd.c Likewise.
+
+2004-09-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* misc/syslog.c (vsyslog): Fix copying of PID in case of
+	out-of-memory situation.  [BZ #365].
+
+	* sysdeps/alpha/fpu/bits/mathinline.h: Use __NTH instead of
+	__THROW in inline function definitions.
+
+	* posix/spawn.h [__USE_GNU]: Define POSIX_SPAWN_USEVFORK.
+	* posix/spawnattr_setflags.c: Check whether any unknown bit is set
+	in FLAGS parameter and fail if this is the case.
+	* sysdeps/posix/spawni.c: Use vfork if POSIX_SPAWN_USEVFORK flag is
+	set.
+
+	* nscd/pwdcache.c (cache_addpw): Sync also negative results to disk.
+	* nscd/grpcache.c (cache_addgr): Likewise.
+	* nscd/hstcache.c (cache_addhst): Likewise.
+
+2004-09-11  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/hurd/i386/init-first.c (init1) [! SHARED]:
+	Set _dl_phdr and _dl_phnum.
+	(init1): When bootstrap task, bail early and never examine *D.
+
+2004-09-11  Alfred M. Szmidt  <ams@kemisten.nu>
+
+	* sysdeps/mach/hurd/i386/tls.h (__i386_set_gdt) [!HAVE_I386_SET_GDT]:
+	Cast THR, SEL and DESC to `void'.
+
+2004-09-11  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/connections.c (nscd_run): Call setup_thread only for enabled
+	databases.
+
+	* sysdeps/unix/bsd/bsd4.4/bits/socket.h: Use __NTH for __cmsg_nxthdr.
+
+2004-09-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd.c (pagesize_m1): New variable.
+	(main): Initialize it.
+	* nscd/nscd.h: Declare pagesize_m1.
+	* nscd/hstcache.c: Pass correctly aligned address to msync.
+	* nscd/grpcache.c: Likewise.
+	* nscd/pwdcache.c: Likewise.
+
+2004-09-10  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Decrement
+	__nwaiters.  If pthread_cond_destroy has been called and this is
+	the last waiter, signal pthread_cond_destroy caller and	avoid
+	using the pthread_cond_t structure after unlock.
+	* sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
+
+2004-09-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/kernel-features.h: Don't define
+	__ASSUME_CLONE_STOPPED.
+
+2004-09-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* misc/sys/cdefs.h (__REDIRECT_NTH): Change order of __THROW and
+	__asm__ for C++.  [BZ #377]
+
+2004-09-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd_stat.c: Improve output by also printing .shared and
+	.persistent.
+
+	* nscd/connections.c: Allow cache sharing to be really disabled.
+
+2004-09-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* malloc/malloc.c (_int_free): Only do arena boundary check for
+	contiguous arenas.
+
+2004-09-10  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
+
+	* stdlib/longlong.h [__M32R__] (add_ssaaaa, sub_ddmmss): Fix broken
+	instruct operands.
+	* elf/elf.h: Add R_M32R_* relocs.
+
+2004-09-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* misc/sys/cdefs.h: Despite what the gcc manual says, gcc 3.2
+	seems not to support the nothrow attribute.  Use it only for gcc
+	3.3 and higher.
+
+	* malloc/hooks.c (top_check): Print top chunk corruption as normal
+	error message.
+
+	* malloc/malloc.c (malloc_printerr): Don't make informational
+	message look like error message.
+
+2004-09-09  Andreas Jaeger  <aj@suse.de>
+
+	* nscd/Makefile (CFLAGS-nscd_setup_thread.c): Set to -fpie.
+
+2004-09-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/socket.h (__SCM_CONNECT): Removed.
+
+	* malloc/malloc.c (_int_free): Add inexpensive double free and
+	memory corruption tests.
+	(malloc_printf_nc): Renamed to malloc_printerr.  Second parameter
+	is no format string anymore.  Don't use stdio.  Adjust all callers.
+	* malloc/hooks.c: Adjust malloc_printf_nc callers.
+
+2004-09-08  Roland McGrath  <roland@redhat.com>
+
+	* malloc/mcheck.c: Don't use __P.
+	Use prototypes definitions for static functions.
+
+2004-09-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/ia64/fpu/bits/mathinline.h: Use __NTH instead of __THROW.
+
+2004-09-08  Ulrich Drepper  <drepper@redhat.com>
+	    Jakub Jelinek  <jakub@redhat.com>
+
+	* nscd/nscd-client.h: Add a few #includes.
+
+	* nscd/Makefile (nscd-modules): Add nscd_setup_thread.
+	* nscd/connections.c (nscd_run): Call setup_thread for maintenance
+	threads.
+	* nscd/nscd-client.h (struct database_pers_head): Add
+	nscd_certainly_running field.
+	* nscd/nscd.h: Declare setup_thread.
+	* nscd/nscd_helper.c (__nscd_get_map_ref): Avoid the time test if
+	nscd_certainly_running is nonzero.
+	* sysdeps/generic/nscd_setup_thread.c: New file.
+	* sysdeps/unix/sysv/linux/nscd_setup_thread.c: New file.
+
+2004-09-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/connections.c: Implement r/o sharing of nscd's cache with client
+	processes via shared memory.
+	* nscd/nscd-client.h: Likewise.
+	* nscd/nscd.h: Likewise.
+	* nscd/nscd_conf.c: Likewise.
+	* nscd/nscd_getgr_r.c: Likewise.
+	* nscd/nscd_getpw_r.c: Likewise.
+	* nscd/nscd_gethst_r.c: Likewise.
+	* nscd/nscd.conf: Add new config parameters.
+	* nscd/Makefile (aux): Add nscd_helper.
+	* nscd/nscd_helper.c: New file.
+	* nscd/mem.c (gc): Indicate beginning and end of the gc cycle.
+
+	* nscd/hstcache.c: Simplify a lot.  We cache only the request itself,
+	no derived information.
+	* connections.c (nscd_init): Fix bug in testing size of the persistent.
+
+	* nis/Makefile (aux): Add nis_hash.
+	* nis/nis_hash.c: New file.  Split out from nis_util.c.
+	* nis/nis_util.c: Move __nis_hash code in separate file.
+
+	* csu/tst-atomic.c: Improve atomic_increment_val test which would
+	not have found a ppc bug.
+
+	* sysdeps/s390/fpu/bits/mathinline.h: Remove unnecessary includes.
+
+	* malloc/arena.c: Remove __MALLOC_P uses.
+	* malloc/malloc.c: Likewise.
+
+	* malloc/mtrace.c: Remove __P uses.
+	* malloc/mcheck-init.c: Likewise.
+
+2004-09-07  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/powerpc/powerpc64/configure.in: New file.
+	* config.h.in (USE_PPC64_OVERLAPPING_OPD): Add.
+	* configure.in (HAVE_ASM_GLOBAL_DOT_NAME): Remove.
+	* sysdeps/powerpc/powerpc64/sysdep.h: Formatting.
+	(OPD_ENT, BODY_LABEL, ENTRY_1, ENTRY_2, END_2, DOT_PREFIX,
+	BODY_PREFIX): Define.
+	(ENTRY, DOT_LABEL, END, TRACEBACK, END_GEN_TB, EALIGN): Support
+	HAVE_ASM_GLOBAL_DOT_NAME or no dot symbols,
+	USE_PPC64_OVERLAPPING_OPD or never overlapping .opd entries.
+	* sysdeps/powerpc/powerpc64/dl-machine.h: Include sysdep.h.
+	(TRAMPOLINE_TEMPLATE, RTLD_START): Use the new sysdep.h macros.
+
+2004-09-07  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.h: Don't define __THROW if it is already defined.
+
+	* sysdeps/powerpc/bits/atomic.h (atomic_increment): Define.
+	(atomic_decrement): Define.
+
+	* sysdeps/powerpc/bits/atomic.h: Implement atomic_increment_val and
+	atomic_decrement_val.
+	* sysdeps/powerpc/powerpc32/bits/atomic.h: Likewise.
+	* sysdeps/powerpc/powerpc64/bits/atomic.h: Likewise.
+
+	* csu/tst-atomic.c (do_test): Add tests of atomic_increment_val
+	and atomic_decrement_val.
+
+	* include/atomic.h: Define atomic_increment_val, atomic_decrement_val,
+	and atomic_delay is not already defined.
+	* sysdeps/i386/i486/bits/atomic.h: Define atomic_delay.
+	* sysdeps/x86_64/bits/atomic.h: Likewise.
+
+	* miscd/sys/cdefs.h (__NTH): New macro.
+	(__THROW): Define using nothrow attribute for C code and gcc >= 3.2.
+	(__REDIRECT_NTH): New macro.
+	* argp/argp.h: Use __NTH and __REDIRECT_NTH where necessary.
+	* ctype/ctype.h: Likewise.
+	* dirent/dirent.h: Likewise.
+	* io/fcntl.h: Likewise.
+	* io/sys/sendfile.h: Likewise.
+	* io/sys/stat.h: Likewise.
+	* io/sys/statfs.h: Likewise.
+	* io/sys/statvfs.h: Likewise.
+	* libio/bits/stdio.h: Likewise.
+	* misc/sys/mman.h: Likewise.
+	* posix/unistd.h: Likewise.
+	* resource/sys/resource.h: Likewise.
+	* rt/aio.h: Likewise.
+	* signal/signal.h: Likewise.
+	* stdlib/stdlib.h: Likewise.
+	* string/argz.h: Likewise.
+	* string/string.h: Likewise.
+	* sysdeps/generic/inttypes.h: Likewise.
+	* sysdeps/i386/fpu/bits/mathinline.h: Likewise.
+	* sysdeps/powerpc/fpu/bits/mathinline.h: Likewise.
+	* sysdeps/s390/fpu/bits/mathinline.h: Likewise.
+	* sysdeps/x86_64/fpu/bits/mathinline.h: Likewise.
+	* sysdeps/unix/sysv/linux/bits/socket.h: Likewise.
+	* sysdeps/unix/sysv/linux/bits/sys/sysmacros.h: Likewise.
+	* wcsmbs/wchar.h: Likewise.
+
+	* sysdeps/generic/glob.c: Use __PMT isntead of __P where appropriate.
+
+	* resolv/gethnamaddr.c (getanswer): Remove __P use in variable
+	definition.
+
+	* io/sys/poll.h: Remove __THROW from poll prototype, it's a
+	cancellation point.
+
+	* io/fts.c (fts_open): Remove uses of __P.
+
+	* include/stdlib.h: No need to use __THROW in this header.
+
+2004-09-06  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/hurd/dl-sysdep.c (__writev): Does use assert on FD
+	validity, since __assert_fail gets to here anyway.  Just fail.
+
+2004-09-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Fix problem with
+	AF_UNSPEC lookup with AI_CANONNAME of name which has only IPv6
+	addresses.
+
+2004-09-05  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/fpu/fraiseexcpt.c: Remove file.
+	* sysdeps/unix/sysv/linux/kernel-features.h
+	(__ASSUME_IEEE_RAISE_EXCEPTION): New.
+	* sysdeps/unix/sysv/linux/alpha/fraiseexcpt.c: New file.
+	* sysdeps/unix/sysv/linux/alpha/kernel_sysinfo.h: New file.
+	* sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Use it.
+	* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
+
+2004-09-05  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/div.S: Save and restore FPCR around fp operations.
+	* sysdeps/alpha/divl.S, sysdeps/alpha/divq.S, sysdeps/alpha/divqu.S,
+	sysdeps/alpha/ldiv.S, sysdeps/alpha/reml.S, sysdeps/alpha/remq.S,
+	sysdeps/alpha/remqu.S: Likewise.
+	* sysdeps/alpha/div_libc.h (FRAME): Increase to 64.
+
+2004-09-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/cache.c (cache_add): Correctly log GETHOSTBYADDR and
+	GETHOSTBYADDRv6 requests.
+
+2004-09-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/pwdcache.c (cache_addpw): Use correct key length in
+	cache_add calls.
+	* nscd/grpcache.c (cache_addgr): Likewise.
+
+2004-09-03  Alfred M. Szmidt  <ams@kemisten.nu>
+
+	* sysdeps/mach/hurd/i386/tls.h (THREAD_DTV): Changed type of _DTV
+	to `dtv_t *'.
+
+2004-09-03  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd.c (parse_opt): Use writev instead of two write for
+	invalidate command.
+
+2004-09-02  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/connections.c (nscd_run): Check early for invalid request types.
+
+2004-09-02  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/hurd/i386/tls.h (TLS_INIT_TP_EXPENSIVE): New macro.
+	(INSTALL_NEW_DTV, THREAD_DTV): Rewritten to fetch the right word.
+	(THREAD_SELF): New macro.
+
+2004-09-02  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	[BZ #357]
+	* stdlib/tst-setcontext.c (test_stack): Added test for stack clobber.
+	(main): Call test_stack.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
+	(__getcontext): Push stack frame then save parms in local frame.
+	Improve instruction scheduling.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
+	(__swapcontext): Likewise.
+
+2004-09-01  Andreas Schwab  <schwab@suse.de>
+
+	* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h [g++ >= 3.5]: Use
+	__builtin_offsetof.
+
+2004-09-01  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #361]
+	* posix/fnmatch_loop.c (FCT): For backslash between brackets, branch
+	to normal_bracket after fetching the next character.
+	* posix/tst-fnmatch.input: Add 25 new tests.
+	Reported by Markus Oberhumer <markus@oberhumer.com>.
+
+2004-09-01  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/rtld.c (dl_main): First check existence of ld.so.preload
+	with access.
+
+2004-09-01  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/waitflags.h
+	(WSTOPPED, WEXITED, WCONTINUED, WNOWAIT): New macros.
+	* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_WAITID_SYSCALL):
+	New macro.
+	* sysdeps/unix/sysv/linux/waitid.c: New file.  Use new syscall when
+	available, or fall back to the waitpid-based generic code.
+
+2004-08-14  Alfred M. Szmidt  <ams@kemisten.nu>
+
+	* sysdeps/mach/hurd/i386/init-first.c (_hurd_stack_setup): Let gcc
+	clobber the `ebp' register.
+	* sysdeps/mach/hurd/i386/Makefile (CFLAGS-init-first.c): Removed.
+	Reverts change from 2004-05-07 by Jeroen Dekkers.
+
+	* sysdeps/mach/hurd/i386/init-first.c (init): Changed the type of
+	NEWSP from `void *' to `int *'.  Changed all casts accordingly.
+
+2004-08-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* wcsmbs/wcsmbsload.c (__wcsmbs_getfct): Move attribute_hidden
+	before return type.
+	* locale/localename.c (__current_locale_name): Likewise.
+
+2004-08-30  Roland McGrath  <roland@frob.com>
+
+	* scripts/extract-abilist.awk: If `lastversion' variable defined, omit
+	later sets from output.
+	* Makerules (check-abi): Pass option to set that with value of
+	LIB-abi-frozen variable if one is set.
+
+	* abilist/libcidn.abilist: New file (empty).
+
+2004-08-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/bits/posix1_lim.h (_POSIX_CHILD_MAX, _POSIX_OPEN_MAX): If
+	not __USE_XOPEN2K, use the Unix98 mandated values.
+
+2004-08-27  Roland McGrath  <roland@redhat.com>
+
+	* configure.in (usetls): Default to yes.
+	* configure: Regenerated.
+
+2004-08-26  Roland McGrath  <roland@redhat.com>
+
+	* configure.in (add_ons_automatic): New variable, set to yes or no
+	indicating --enable-add-ons with no explicit list.
+	(running add-on fragments): Allow a fragment to modify $libc_add_on
+	and have that affect its place in the list of add-ons to use.
+	* configure: Regenerated.
+
+2004-08-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/cache.c: Major rewrite.  The data is now optionally kept in
+	a mmaped memory region which is automatically mirrored on disk.
+	This implements persistent data storage.  The Memory handled
+	needed to be completely revamped, it now uses a garbage collection
+	mechanism instead of malloc.
+	* nscd/connections.c: Likewise.
+	* nscd/nscd.c: Likewise.
+	* nscd/nscd.h: Likewise.
+	* nscd/nscd_conf.c: Likewise.
+	* nscd/nscd_stat.c: Likewise.
+	* nscd/grpcache.c: Likewise.
+	* nscd/hstcache.c:: Likewise.
+	* nscd/pwdcache.c:: Likewise.
+	* nscd/Makefile: Add rules to build mem.c.
+	* nscd/mem.c: New file.
+	* nscd/nscd.conf: Describe new configuration options.
+
+2004-08-26  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/unix/sysv/linux/mips/pread.c: Include sgidefs.h only if
+	NO_SGIDEFS_H isn't defined.
+	* sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
+
+	* sysdeps/unix/sysv/linux/sh/pread.c: Define NO_SGIDEFS_H and
+	_MIPS_SIM.
+	* sysdeps/unix/sysv/linux/sh/pwrite.c: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pread64.c: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise.
+
+2004-08-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/connections.c (nscd_run): atomic_increment was not missing.
+
+	* sysdeps/gnu/Makefile (libdl-sysdep_routines): Don't add eval.
+	Patch by Greg Schafer.
+
+2004-08-25  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/elf/start.S (_start): Use $15 as frame unwind
+	instead of $31.  Zero $15.
+	* sysdeps/unix/sysv/linux/alpha/clone.S (thread_start): Likewise.
+
+2004-08-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/powerpc/powerpc64/bits/atomic.h
+	(__arch_compare_and_exchange_bool_32_acq): Fix case where oldval
+	is negative.
+	(__arch_compare_and_exchange_bool_32_rel): Likewise.
+
+	* nscd/connections.c: Make socket nonblocking so that threads
+	don't get stuck on accept.  Fix locking.
+
+	* nscd/grpcache.c (cache_addgr): Use copy of original key in hash
+	entry with alternative key.
+	* nscd/pwdcache.c (cache_addpw): Likewise.
+
+2004-08-25  Richard Sandiford  <rsandifo@redhat.com>
+
+	* sysdeps/mips/dl-machine.h (_dl_start_user): Don't set
+	__libc_stack_end.
+
+2004-08-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/gnu/netinet/udp.h: Cosmetic changes.  Remove unnecessary
+	__BEGIN_DECLS/__END_DECLS.
+
+2004-08-23  Andreas Jaeger  <aj@suse.de>
+
+	[BZ #341]
+	* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (O_NOATIME): Define.
+	* sysdeps/unix/sysv/linux/arm/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/cris/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/i386/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/ia64/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/s390/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/sh/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (O_NOATIME): Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (O_NOATIME): Likewise.
+
+2004-08-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/hooks.c (DEFAULT_CHECK_ACTION): Moved to malloc.c.
+	(check_action): Likewise.
+	When printing error messages, use malloc_printf_nc now instead of
+	fiddling with the streams cancellation flag in every place.
+	* malloc/malloc.c (DEFAULT_CHECK_ACTION): New definition.  Change
+	default to 3.
+	(check_action): New variable.
+	(unlink): Print error message and eventually terminate in case list
+	is corrupted.
+	(malloc_printf_nc): New function.  Use it in _int_free.
+	Change proposed by Arjan van de Ven.
+
+	* dlfcn/Makefile: Don't build eval.c anymore.
+
+2004-08-20  Roland McGrath  <roland@frob.com>
+
+	* csu/Makefile ($(objpfx)version-info.h): Use printf in place
+	of echo -e for POSIX.2 portability.
+	Reported by Paul Jarc <prj@po.cwru.edu>.
+
+2004-08-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Minor optimizations in
+	list generation.
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use
+	getcanonname_r function if AI_CANONNAME flag is not set in
+	request.
+
+	* nis/nss_compat/compat-initgroups.c (getgrent_next_nss):
+	Initialize mysize with limits only if latter is >= 0.  Use mysize
+	in malloc call.
+
+2004-08-19  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Cast canon to (char *)
+	to avoid warning.
+
+	* resolv/nss_dns/dns-canon.c (_nss_dns_getcanonname_r): Initialize
+	status to NSS_STATUS_UNAVAIL.
+
+2004-08-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Use h->h_name in the
+	cannoname lookup since it has the FQDN even if the original NAME
+	value has not.
+
+2004-08-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Store NAME parameter
+	pointer in new variable ORIG_NAME and use this pointer when
+	determination of canonical name failed, not the possibly IDN
+	translated value of NAME.
+
+2004-08-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* resolv/resolv.h (RES_DEFAULT): Add RES_NOIP6DOTINT.
+	* resolv/res_init.c (res_setoptions): Recognize ip6-dotint option.
+	Reset RES_NOIP6DOTINT flag in this case..
+
+	* sysdeps/posix/getaddrinfo.c: Fix memory handling of
+	ai_canonname.
+
+2004-08-16  Ulrich Drepper  <drepper@redhat.com>
+
+	* resolv/nss_dns/dns-canon.c (_nss_dns_getcanonname_r): Don't use
+	CNAME records, we better follow the chain of CNAME records which
+	can be accomplished with A/AAAA lookups.
+
+2004-08-15  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/resource.h (enum __rusage_who):
+	Remove __RUSAGE_BOTH constant and RUSAGE_BOTH macro.
+	* sysdeps/unix/sysv/linux/alpha/bits/resource.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/resource.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise.
+
+2004-08-15  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/i386/i686/Makefile (elide-routines.os): Append hp-timing to
+	this, not ...
+	(static-only-routines): ... this.
+	* sysdeps/ia64/Makefile: Likewise.
+	* sysdeps/sparc/sparc32/sparcv9/Makefile: Likewise.
+	* sysdeps/sparc/sparc64/Makefile: Likewise.
+	* sysdeps/x86_64/Makefile: Likewise.
+	* sysdeps/i386/i686/hp-timing.c: Revert copyright terms change.
+	* sysdeps/ia64/hp-timing.c: Likewise.
+	* sysdeps/sparc/sparc32/sparcv9/hp-timing.c: Likewise.
+	* sysdeps/sparc/sparc64/hp-timing.c: Likewise.
+
+	* csu/elf-init.c: Update copyright terms including special exception
+	for these trivial files, which are statically linked into executables
+	that use dynamic linking for the significant library code.
+	* io/fstat.c: Likewise.
+	* io/fstat64.c: Likewise.
+	* io/lstat.c: Likewise.
+	* io/lstat64.c: Likewise.
+	* io/stat.c: Likewise.
+	* io/stat64.c: Likewise.
+	* stdlib/atexit.c: Likewise.
+	* sysdeps/alpha/elf/initfini.c: Likewise.
+	* sysdeps/alpha/elf/start.S: Likewise.
+	* sysdeps/arm/elf/start.S: Likewise.
+	* sysdeps/cris/elf/start.S: Likewise.
+	* sysdeps/generic/initfini.c: Likewise.
+	* sysdeps/generic/mknod.c: Likewise.
+	* sysdeps/hppa/elf/initfini.c: Likewise.
+	* sysdeps/hppa/elf/start.S: Likewise.
+	* sysdeps/i386/elf/start.S: Likewise.
+	* sysdeps/i386/i686/hp-timing.c: Likewise.
+	* sysdeps/ia64/elf/initfini.c: Likewise.
+	* sysdeps/ia64/elf/start.S: Likewise.
+	* sysdeps/ia64/hp-timing.c: Likewise.
+	* sysdeps/m68k/elf/start.S: Likewise.
+	* sysdeps/mach/start.c: Likewise.
+	* sysdeps/mips/elf/start.S: Likewise.
+	* sysdeps/powerpc/powerpc32/elf/start.S: Likewise.
+	* sysdeps/powerpc/powerpc64/elf/start.S: Likewise.
+	* sysdeps/s390/s390-32/elf/start.S: Likewise.
+	* sysdeps/s390/s390-32/initfini.c: Likewise.
+	* sysdeps/s390/s390-64/elf/start.S: Likewise.
+	* sysdeps/s390/s390-64/initfini.c: Likewise.
+	* sysdeps/sh/elf/initfini.c: Likewise.
+	* sysdeps/sh/elf/start.S: Likewise.
+	* sysdeps/sparc/sparc32/elf/start.S: Likewise.
+	* sysdeps/sparc/sparc32/sparcv9/hp-timing.c: Likewise.
+	* sysdeps/sparc/sparc64/elf/start.S: Likewise.
+	* sysdeps/sparc/sparc64/hp-timing.c: Likewise.
+	* sysdeps/standalone/i386/start.S: Likewise.
+	* sysdeps/standalone/i960/start.S: Likewise.
+	* sysdeps/standalone/m68k/m68020/start.S: Likewise.
+	* sysdeps/unix/arm/start.c: Likewise.
+	* sysdeps/unix/bsd/osf/alpha/start.S: Likewise.
+	* sysdeps/unix/bsd/ultrix4/mips/start.S: Likewise.
+	* sysdeps/unix/sparc/start.c: Likewise.
+	* sysdeps/unix/start.c: Likewise.
+	* sysdeps/unix/sysv/aix/start.s: Likewise.
+	* sysdeps/unix/sysv/irix4/start.c: Likewise.
+	* sysdeps/x86_64/elf/initfini.c: Likewise.
+	* sysdeps/x86_64/elf/start.S: Likewise.
+
+2004-08-15  Roland McGrath  <roland@redhat.com>
+
+	[BZ #227]
+	* sysdeps/unix/sysv/linux/kernel-features.h
+	(__ASSUME_BRK_PAGE_ROUNDED): New macro.
+	* sysdeps/unix/sysv/linux/dl-sysdep.c (frob_brk)
+	[! __ASSUME_BRK_PAGE_ROUNDED]: Adjust the break up if it falls within
+	the partial page after the dynamic linker's own data segment.
+
+2004-08-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Optimize generation of
+	v4-mapped addresses a bit.
+	(gethosts): Move alloca out of macro, so that it is done only once.
+
+	* sysdeps/posix/getaddrinfo.c (gaih_addrtuple): Change type of
+	addr to avoid casts.
+	(gethosts): Removed.
+	(gethosts2): Renamed to gethosts.  Make it usable for family !=
+	AF_UNSPEC.  Fix AI_V4MAPPED.
+	(gaih_inet): Remove use of old gethosts.  Always use what used to be
+	gethosts2.  If entry is found, try to use the same NSS module's
+	getcanonname_r function.  Use gethostbyaddr for AI_CANONNAME only
+	if getcanonname_r was not available.  Fix filtering of AI_V4MAPPED
+	addresses.  Numerous cleanups.
+	* resolv/nss_dns/dns-canon.c: New file.
+	* resolv/Makefile (libnss_dns-routines): Add dns-canon.
+	* resolv/Versions (libnss_dns): Add _nss_dns_getcanonname_r.
+
+	* elf/Makefile: Add rules to build and run tst-dlopenrpath.
+	* elf/tst-dlopenrpath.c: New file.
+	* elf/tst-dlopenrpathmod.c: New file.
+
+	* intl/tst-gettext.sh: Adjust for change of de.po file to UTF-8.
+	* intl/tst-gettext.c: Likewise.
+
+	* nss/getent.c (ahosts_keys_int): Correctly print IPv6 addresses.
+
+	* nss/getent.c: Allow queries for getaddrinfo with AF_INET and
+	AF_INET6.
+
+2004-08-14  Ulrich Drepper  <drepper@redhat.com>
+
+	* po/de.po: Update from translation team.
+
+2004-08-14  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/mach/configure: Regenerated.
+	* sysdeps/mach/hurd/configure: Regenerated.
+
+2004-08-14  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (getaddrinfo): If RFC3484 sorting is
+	performed, make sure it is still the first entry after sorting
+	that has the ai_canonname information.
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Really set ai_canonname
+	only in one entry.
+
+2004-08-13  Daniel Jacobowitz  <dan@debian.org>
+
+	* scripts/output-format.sed: Handle default case of three-argument
+	OUTPUT_FORMAT.
+
+	* sysdeps/arm/machine-gmon.h (mcount_internal): Mark as
+	__attribute_used__.
+
+2004-08-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* nss/getent.c (ahosts_keys): ai_canonname is NULL for all but the
+	first returned entry.  Print name only if not NULL.
+
+	* nis/nss_nis/nis-netgrp.c: Remove locking by using data in struct
+	__netgrent object passed in instead of global variables.
+	Optimize.
+	* nis/nss_nisplus/nisplus-netgrp.c: Remove locking by using data
+	in struct __netgrent object passed in instead of global variables.
+	* inet/netgroup.h (struct __netgrent): Add service_user field.
+	Move cursor in anonymous union, add new field location to that
+	union.
+	* inet/getnetgrent_r.c: Extensive rewrite to really enable
+	concurrent uset of set/get/endnetgrent and innetgr.
+	Reported by Chuck Simmons.
+
+	* inet/netgroup.h (struct name_list): Replace name pointer with
+	zero-sized array.
+	* inet/getnetgrent_r.c: Adjust code for change in name_list
+	layout.  Numerous strdup and free calls removed.
+
+	* elf/sprof.c (read_symbols): When comparing aliases, prefer
+	non-hidden over hidden symbols and strong over weak symbols
+	if both don't start with '_'.
+
+	* malloc/malloc.c: Use strong_alias instead of weak_alias wherever
+	possible.
+
+2004-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/resource.h: Define non-standard
+	RUSAGE_ enums as __RUSAGE_ and adjust macros accordingly.
+	* sysdeps/unix/sysv/linux/alpha/bits/resource.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/resource.h: Likewise.
+	Define non-standard RLIMIT_ enums as __RLIMIT_ and adjust macros
+	accordingly.
+
+2004-08-11  Andreas Schwab  <schwab@suse.de>
+
+	* resolv/res_libc.c: Move definition of __res_initstamp ...
+	* resolv/res_init.c: ... here.
+
+2004-08-10  GOTO Masanori  <gotom@debian.or.jp>
+
+	* locale/C-time.c: Change default ERA value from NULL to "".
+	* locale/tst-C-locale.c: Add test case for ERA keywords.
+
+2004-08-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/resource.h: Define non-standard
+	RLIMIT__ enums as __RLIMIT_ and adjust macros accordingly.
+	* sysdeps/unix/sysv/linux/alpha/bits/resource.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise.
+
+2004-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/resource.h (RLIMIT_SIGPENDING,
+	RLIMIT_MSGQUEUE): Add.
+	(RLIMIT_NLIMITS, RLIM_NLIMITS): Adjust.
+	* sysdeps/unix/sysv/linux/alpha/bits/resource.h (RLIMIT_SIGPENDING,
+	RLIMIT_MSGQUEUE, RLIMIT_NLIMITS): Add.
+	(RLIM_NLIMITS): Adjust.
+	* sysdeps/unix/sysv/linux/sparc/bits/resource.h (RLIMIT_SIGPENDING,
+	RLIMIT_MSGQUEUE, RLIMIT_NLIMITS): Add.
+	(RLIM_NLIMITS): Adjust.
+	* sysdeps/unix/sysv/linux/mips/bits/resource.h (RLIMIT_SIGPENDING,
+	RLIMIT_MSGQUEUE, RLIMIT_NLIMITS): Add.
+	(RLIM_NLIMITS): Adjust.
+
+2004-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+	* resolv/res_query.c (__libc_res_nsearch): Protect the debugging
+	printf with #ifdef DEBUG and RES_DEBUG check.
+
+	* sysdeps/unix/sysv/linux/bits/shm.h: Move __END_DECLS after
+	__USE_MISC #endif.
+	* sysdeps/generic/bits/shm.h: Add __BEGIN_DECLS for __getpagesize
+	declaration.
+	* sysdeps/gnu/bits/shm.h: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Likewise.
+	* sysdeps/unix/sysv/linux/s390/bits/shm.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/bits/shm.h: Likewise.
+
+2004-08-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* po/ca.po: Update from translation team.
+
+2004-08-11  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/shm.h: Add __BEGIN_DECLS for
+	__getpagesize declaration.
+
+2004-08-11  Roland McGrath  <roland@redhat.com>
+
+	* configure.in (libc_cv_cpp_asm_debuginfo): Add missing braces around
+	commands inside &&.
+	Reported by Andreas Schwab <schwab@suse.de>.
+	* configure: Regenerated.
+
+	* posix/tst-waitid.c (do_test): Ignore SIGCHLD before cleanup SIGKILL.
+
+2004-08-11  Ulrich Drepper  <drepper@redhat.com>
+
+	* time/tzset.c (tzset_internal): Add new parameter which is
+	nonzero if called through tzset.  Use TZDEFAULT name including
+	name comparison if the new parameter is zero.  This means implicit
+	tzset calls will not cause files to be opened and read by tzfile.c
+	all the time.
+
+2004-08-11  Jakub Jelinek  <jakub@redhat.com>
+
+	* rt/tst-timer2.c (do_test): If timer_create fails, just continue.
+	* rt/tst-timer4.c (do_test): If one of the timer_create calls fails,
+	return 1 immediately.
+
+	* time/tzfile.c (__tzfile_read): Free transitions only if it will
+	not be reused.
+
+	* sysdeps/ieee754/dbl-64/mpa.c: Include <sys/param.h>.
+	* sysdeps/ieee754/dbl-64/mpa.h (MAX, MIN): Macros removed.
+
+	* stdio-common/tst-popen.c: Include <string.h>.
+
+	* resolv/res_send.c (__libc_res_nsend): Only define TMPBUF #if DEBUG.
+
+	* sysdeps/pthread/aio_misc.c (handle_fildes_io): Remove noreturn
+	attribute.  Return NULL instead of calling pthread_exit at the end.
+
+2004-08-11  Roland McGrath  <roland@redhat.com>
+
+	* iconvdata/testdata/ISO-2022-JP-3: Regenerated.
+
+2004-08-10  Alfred M. Szmidt  <ams@kemisten.nu>
+
+	* sysdeps/generic/bits/in.h (struct ip_mreq): Remove definition.
+
+2004-08-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* libio/bits/stdio.h (fread_unlocked): Cast 0 to (size_t).
+	(fwrite_unlocked): When checking if size * n is <= 8, cast each
+	argument to size_t individually.  Cast n to (void) instead of
+	(size_t), surround with (), return (size_t) 0 if one of n or size
+	is 0.  [BZ #316]
+	* stdio-common/Makefile (tests): Add tst-unlockedio.
+	* stdio-common/tst-unlockedio.c: New test.
+
+2004-08-09  Roland McGrath  <roland@frob.com>
+
+	* manual/install.texi (Supported Configurations): Replace bug-glibc
+	mention with web URL.
+	* INSTALL: Regenerated.
+	* locale/iso-3166.def: Likewise, in comment.
+	* locale/iso-4217.def: Likewise.
+	* locale/iso-639.def: Likewise.
+	* posix/cpio.h: Remove bug reporting comment.
+
+2004-08-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* libio/bits/stdio.h (fread_unlocked): Add a couple of (size_t)
+	casts to handle funny calls with floating point argument values
+	and signed values correctly and without warning.
+	(fwrite_unlocked): Likewise.  [BZ #309]
+
+	* malloc/memusage.c (me): Use creat64, not creat.
+	* malloc/memusagestat.c: Fix handling of very large sizes.  [BZ #285]
+	Patch by Guy Maor <guymaor@yahoo.com>.
+
+	* elf/ldconfig.c (options): Mark parameter option names as
+	translatable.  [BZ #253]  Patch by Jakub Bogusz <qboosh@pld-linux.org>.
+
+	* iconv/gconv_charset.h (strip): Also allow comma which is what is
+	used to separate options.  [BZ #194]
+
+2004-08-09  Roland McGrath  <roland@redhat.com>
+
+	* FAQ.in: Refer to web pages instead of bug-glibc.
+	* FAQ: Regenerated.
+
+	* time/strptime_l.c: #include <stdbool.h>, `bool' used in last change.
+
+2004-08-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* time/tzset.c (tzset_internal): If TZ is not set do not compare
+	old and new tz value since it might be /etc/localtime in both
+	cases although the file changed.  [BZ #154]
+	Patch by Christian Franke <franke@computer.org>.
+
+	* time/tzfile.c (__tzfile_read): Determine dev/ino of file.
+	Compare with values of previously opened file.  Don't do anything
+	is they match.
+
+2004-08-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-load.c (_dl_map_object): If __RTLD_CALLMAP flag is set,
+	reset loader before the actual loading.
+	* elf/dl-open.c (dl_open_worker): If file name contains no path
+	element determine map of caller.  Pass caller map in this case to
+	_dl_map_object.  Set __RTLD_CALLMAP in mode.
+	* include/dlfcn.h (__RTLD_CALLMAP): Define.  [BZ #116]
+	Patch by Greg Wolodkin <greg@mathworks.com>.
+
+	* misc/syslog.c (openlog_internal): Always try both UDP and TCP.
+	[BZ #108]  Patch mainly by Bjorn Andersson <bjorn@iki.fi>.
+
+	* configure.in: Also recognize i786. [BZ #106]
+	Patch by <pluto@pld-linux.org>.
+
+	* resolv/res_query.c (__libc_res_nsearch): Correctly test whether
+	name contains any dots. [BZ #95]
+
+	* resolv/res_send.c: Compiling with DEBUG defined works again.
+	* resolv/gethnamaddr.c (dprintf): Renamed to Dprintf.  Adjust all
+	callers.
+
+	* resolv/tst-leaks.c (TIMEOUT): Define so that if no server is
+	available the process is not killed. [BZ #41]
+
+	* intl/tst-gettext.c (main): Improve some messages. [BZ #33]
+
+	* time/strptime_l.c (__strptime_internal): Fix handling of %Ey.
+	[BZ #28]
+
+	* po/sv.po: Update from translation team.
+
+2004-08-07  Ulrich Drepper  <drepper@redhat.com>
+
+	* inet/netinet/in.h: Add more const to the setipv4soucefilter,
+	getsourcefilter, and setsourcefilter parameter list.
+	* sysdeps/generic/setipv4sourcefilter.c: Likewise.
+	* sysdeps/generic/getsourcefilter.c: Likewise.
+	* sysdeps/generic/setsourcefilter.c: Likewise.
+	* sysdeps/unix/sysv/linux/setipv4sourcefilter.c: Likewise.
+	* sysdeps/unix/sysv/linux/getsourcefilter.c: Likewise.
+	* sysdeps/unix/sysv/linux/setsourcefilter.c: Likewise.
+
+	* po/tr.po: Update from translation team.
+
+2004-08-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* iconvdata/jisx0213.h (jisx0213_added_in_2004_p): Fix typo.
+	Reported by Paolo Bonzini.
+
+2004-08-06  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/ia64/dl-machine.h (elf_machine_fixup_plt): Add
+	always_inline.
+	* sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_runtime_setup,
+	elf_machine_fixup_plt, elf_machine_plt_conflict): Likewise.
+
+	* sysdeps/unix/sysv/linux/netatalk/at.h: Include bits/sockaddr.h
+	before including linux/atalk.h.
+
+	* resolv/res_libc.c: Include atomic.h.
+
+	* intl/finddomain.c (free_mem): Rename to...
+	(_nl_finddomain_subfreeres): ... this.  Add
+	__libc_freeres_fn_section.
+	* intl/loadmsgcat.c (_nl_unload_domain): Add
+	__libc_freeres_fn_section.
+	* intl/gettextP.h (_nl_unload_domain): Move into #ifdef _LIBC.
+	Add attribute_hidden.
+	(_nl_findomain_subfreeres): New prototype.
+	* iconv/gconv_db.c (free_mem): Call _nl_findomain_subfreeres.
+
+2004-07-30  Guido Guenther  <agx@sigxcpu.org>
+
+	* nss/getent.c (passwd_keys): Use strtoul instead of isdigit to
+	test if the key is numeric or not.
+	(group_keys): Likewise.
+
+2004-08-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* inet/netinet/in.h: Define struct ip_msfilter, IP_MSFILTER_SIZE,
+	struct group_filter, and GROUP_FILTER_SIZE.
+	* include/sys/socket.h: Declare __getsockopt.
+	* sysdeps/unix/sysv/linux/setipv4sourcefilter.c: New file.
+	* sysdeps/unix/sysv/linux/getipv4sourcefilter.c: New file.
+	* sysdeps/unix/sysv/linux/setsourcefilter.c: New file.
+	* sysdeps/unix/sysv/linux/getsourcefilter.c: New file. [BZ #211]
+
+	* po/ko.po: Update from translation team.
+
+2004-08-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* hesiod/hesiod.c (__hesiod_res_get): Use calloc instead of malloc +
+	memset.
+	(__hesiod_res_set): Free nsaddrs.
+
+	* include/resolv.h (__res_maybe_init): Add prototype.
+	* resolv/resolv.h (struct __res_state): Add _u._ext.initstamp field.
+	* resolv/Versions (libc): Add __res_maybe_init@@GLIBC_PRIVATE.
+	* resolv/res_libc.c (__res_initstamp, lock): New variables.
+	(res_init): Increase __res_initstamp.
+	(__res_maybe_init): New function.
+	* resolv/res_init.c (__res_vinit): Initialize _u._ext.initstamp.
+	* hesiod/hesiod.c (__hesiod_res_get): Use __res_maybe_init instead
+	of RES_INIT check and {res_ninit,__res_ninit,res_init} call.
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Likewise.
+	* resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r,
+	_nss_dns_gethostbyaddr_r): Likewise.
+	* resolv/nss_dns/dns-network.c (_nss_dns_getnetbyname_r,
+	_nss_dns_getnetbyaddr_r): Likewise.
+	* resolv/gethnamaddr.c (gethostbyname, gethostbyname2,
+	gethostbyaddr): Likewise.
+	* resolv/res_data.c (fp_nquery, res_mkquery, res_mkupdate,
+	res_isourserver, res_sendsigned, res_update, res_search,
+	res_querydomain): Likewise.
+	* nss/getXXbyYY_r.c (INTERNAL (REENTRANT_NAME)): Likewise.
+	* nss/digits_dots.c (__nss_hostname_digits_dots): Likewise.
+	* nss/getnssent_r.c (__nss_setent, __nss_endent, __nss_getent_r):
+	Likewise.
+
+2004-08-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Set ai_family for
+	V4-mapped IPv6 addresses and req->ai_family==AF_INET.
+	Reported by A. Guru <a.guru@sympatico.ca>.
+
+	* po/sv.po: Update from translation team.
+	* po/sk.po: Likewise.
+	* po/pl.po: Likewise.
+
+2004-08-04  Jakub Jelinek  <jakub@redhat.com>
+	    Ulrich Drepper  <drepper@redhat.com>
+
+	* wcsmbs/mbsrtowcs_l.c (__mbsrtowcs_l): Don't read more input
+	characters than necessary.
+
+2004-08-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* wcsmbs/Makefile (tests): Add tst-mbsrtowcs.
+	* wcsmbs/tst-mbsrtowcs.c: New file.
+
+	* po/fr.po: Update from translation team.
+
+2004-08-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* resolv/inet_pton.c (inet_pton4): Disallow octal numbers.  Reported
+	by A. Guru <a.guru@sympatico.ca>.  [BZ #295]
+
+2004-08-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* po/nl.po: Update from translation team.
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Recognize all the IPv4
+	numeric address formats inet_addr knows.
+	(getaddrinfo): Allow AI_NUMERICSERV flag.
+	If neither IPv4 nor IPv6 interface is present we cannot make any
+	decision for AI_ADDRCONFIG.  Fail if AI_NUMERICSERV is set and the
+	string is not just a number.  Remove useless freeaddrinfo call.
+	* resolv/netdb.h (AI_NUMERICSERV): Define.
+	Based on a patch by a.guru@sympatico.ca.
+
+2004-08-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* stdlib/strfmon_l.c (__vstrfmon_l): Memset whole info structure
+	instead of trying to initialize some, but not all, fields one by
+	one.
+	* stdio-common/printf_size.c (printf_size): Initialize fb_info
+	structure with *info instead of trying to initialize some, but not
+	all, fields from it.
+
+	* nscd/connections.c (handle_request): Check if req->type is in
+	LASTDBREQ .. LASTREQ range instead of req.
+
+	* locale/programs/linereader.c (lr_create): Initialize
+	lr->return_widestr to 0.
+
+	* elf/dl-close.c (free_slotinfo): Add __libc_freeres_fn_section.
+	(free_mem): Call free_slotinfo just once.
+
+	* stdio-common/tst-fmemopen.c (main): Check for MAP_FAILED instead
+	of NULL.
+
+	* locale/localeinfo.h (_nl_locale_subfreeres): New prototype.
+	* locale/setlocale.c (free_category): Add __libc_freeres_fn_section.
+	(free_mem): Rename to _nl_locale_subfreeres.
+	* iconv/gconv_db.c: Include locale/localeinfo.h.
+	(free_derivation, free_modules_db): Add __libc_freeres_fn_section.
+	(free_mem): Call _nl_locale_subfreeres.
+	* iconv/gconv_dl.c (do_release_all): Add __libc_freeres_fn_section.
+
+2004-08-04  Roland McGrath  <roland@frob.com>
+
+	* Makeconfig ($(common-objpfx)config.status):
+	Fix typo: $(add_ons) -> $(add-ons).
+	(Makeconfig-add-on): New variable.  When doing $(sysdep-makeconfigs)
+	include, use black magic to get it set to an add-on's name during the
+	include of the add-on's Makeconfig.
+
+	* configure.in: Use variable name `libc_add_on' when sourcing add-on
+	configure fragments, so they can refer to this.
+	* configure: Regenerated.
+
+2004-08-04  Roland McGrath  <roland@redhat.com>
+
+	* posix/tst-waitid.c (test_child): Sleep a second before stopping.
+	(do_test): Bump sleep to three seconds.
+	(sigchld, check_sigchld): New functions.
+	(do_test): Handle SIGCHLD and check for getting the right details.
+
+	* posix/tst-waitid.c (do_test): Kill the child process when bailing
+	out early on some failure.
+	[WCONTINUED]: Test WCONTINUED functionality.
+
+2004-08-03  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/connections.c (handle_request): Print more descriptive
+	message for invalid request types.
+
+2004-08-02  Jakub Jelinek  <jakub@redhat.com>
+
+	* iconvdata/ibm932.c (BODY): Avoid binary search for ch >= 0xffff.
+	Always treat high as highest number in range + 1.
+	* iconvdata/ibm943.c (BODY): Likewise.
+
+2004-07-31  Bruno Haible  <bruno@clisp.org>
+
+	* iconvdata/JISX0213.TXT: Updated to JISX0213 plane 1 version 2004.
+	* iconvdata/jisx0213.c (__jisx0213_to_ucs_main,
+	__jisx0213_to_ucs_pagestart, __jisx0213_from_ucs_level1,
+	__jisx0213_from_ucs_level2): Regenerated.
+	* iconvdata/jisx0213.h (jisx0213_added_in_2004_p): New function.
+	* iconvdata/iso-2022-jp-3.c (JISX0213_1_2000_set): Renamed from
+	JISX0213_1_set.
+	(JISX0213_1_2004_set): New enum value.
+	(BODY for FROM_LOOP): Treat ESC $ ( Q like ESC $ ( O.
+	(BODY for TO_LOOP): For JISX 0213 plane 1 characters, emit ESC $ ( O
+	when possible, ESC $ ( Q when needed.
+	* iconvdata/testdata/EUC-JISX0213: Add the 10 new characters.
+	* iconvdata/testdata/EUC-JISX0213..UTF8: Update.
+	* iconvdata/testdata/SHIFT_JISX0213: Add the 10 new characters.
+	* iconvdata/testdata/SHIFT_JISX0213..UTF8: Update.
+	* iconvdata/testdata/ISO-2022-JP-3: Add the 10 new JISX0213 characters.
+	* iconvdata/testdata/ISO-2022-JP-3..UTF8: Update.
+
+2004-07-22  Bruno Haible  <bruno@clisp.org>
+
+	* iconvdata/gconv-modules (ISO-8859-7): Add alias ISO_8859-7:2003.
+
+2004-07-29  David S. Miller  <davem@redhat.com>
+
+	* sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy): Optimize
+	better for smaller than 256 byte copies.  Also, use only one
+	unrolled loop instead of two for the large copy case.
+
+2004-07-30  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/divq.S: Save t3 before it gets clobbered.
+	* sysdeps/alpha/remq.S: Likewise.
+	* sysdeps/alpha/div.S, sysdeps/alpha/ldiv.S: Rewrite with the
+	new division algorithms in divl.S and divq.S respectively.
+
+2004-07-28  GOTO Masanori  <gotom@debian.or.jp>
+
+	* timezone/asia: Update from tzdata2004b.
+	* timezone/backward: Likewise.
+	* timezone/europe: Likewise.
+	* timezone/iso3166.tab: Likewise.
+	* timezone/leapseconds: Likewise.
+	* timezone/northamerica: Likewise.
+	* timezone/southamerica: Likewise.
+	* timezone/zone.tab: Likewise.
+
+	* timezone/private.h: Update from tzcode2004b.
+	* timezone/zic.c: Likewise.
+
+2004-07-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/grpcache.c (cache_addgr): If necessary, add entry also
+	under the name the user provided.
+	* nscd/pwdcache.c (cache_addpw): Likewise.
+
+2004-07-26  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/posix/waitid.c [WEXITED]: Clear WEXITED bit in OPTIONS for
+	call to __waitpid.
+
+2004-07-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/hstcache.c (cache_addhst): Fix two scenarios which lead to
+	memory leaks.
+
+	* sysdeps/unix/sysv/linux/ifreq.c (__ifreq): Assign pointer for
+	new buffer at the right time.
+	Reported by Jakub Bogusz <qboosh@pld-linux.org>.
+
+2004-07-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* inet/Versions [libc, GLIBC_2.3.4]: Add getipv4sourcefilter,
+	getsourcefilter, setipv4sourcefilter, and setsourcefilter.
+	* inet/Makefile (routines): Likewise.
+	* inet/netinet/in.h: Add prototypes for getipv4sourcefilter,
+	getsourcefilter, setipv4sourcefilter, and setsourcefilter.
+	* sysdeps/generic/getipv4sourcefilter.c: New file.
+	* sysdeps/generic/setipv4sourcefilter.c: New file.
+	* sysdeps/generic/getsourcefilter.c: New file.
+	* sysdeps/generic/setsourcefilter.c: New file.
+
+2004-07-17  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/powerpc/powerpc64/memcpy.S: Improve instruction scheduling
+	for POWER4 machines.
+
+2004-07-21  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #274]
+	* stdlib/strtod_l.c (INTERNAL (__STRTOF)): Fix used >=
+	BITS_PER_MP_LIMB shifting up.
+	* stdlib/tst-strtod.c (main): Add new tests.
+
+2004-07-23  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #282]
+	* libio/iopopen.c (_IO_new_popen): Use _IO_init instead of
+	_IO_no_init.  Remove wd from struct locked_FILE.
+	(_IO_wproc_jumps): Remove.
+	Reported by Andrew Josey <a.josey@opengroup.org>.
+	* stdio-common/Makefile (tests): Add tst-popen.
+	* stdio-common/tst-popen.c: New test.
+
+2004-07-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/bits/posix1_lim.h: Fix values for _POSIX_CHILD_MAX and
+	_POSIX_OPEN_MAX.  Add _POSIX_HOST_NAME_MAX, _POSIX_SYMLINK_MAX,
+	_POSIX_SYMLOOP_MAX, and _POSIX_RE_DUP_MAX.
+	Reported by Andrew Josey.
+
+	* include/features.h: Document _POSIX_C_SOURCE == 200112L.
+
+	* grp/grp.h: Define gid_t if __USE_XOPEN2K is defined.
+	* pwd/pwd.h: Define uid_t and gid_t if __USE_XOPEN2K is defined.
+	* io/sys/stat.h: Define dev_t, gid_t, ino_t, mode_t, nlink_t,
+	off_t, time_t, and uid_t if __USE_XOPEN2K is defined.
+	* signal/signal.h: Define pid_t if __USE_XOPEN2K is defined.
+	* posix/unistd.h: Define gid_t, off_t, pid_t, uid_t, and
+	useconds_t if __USE_XOPEN2K is defined.
+	* io/utime.h: Define time_t if __USE_XOPEN2K is defined.
+	* libio/stdio.h: Declare fseeko and ftello if __USE_XOPEN2K is defined.
+
+2004-07-19  Thorsten Kukuk  <kukuk@suse.de>
+
+	* nis/nss_compat/compat-initgroups.c (getgrent_next_nss): Don't
+	allocate memory for large temporary variables with alloca.
+
+2004-07-22  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Compatibility
+	code must have version GLIBC_2.0.  Patch by Dwayne McConnell.
+
+	* nscd/nscd_getgr_r.c (nscd_getgr_r): Avoid read call with NULL
+	pointer and zero length.
+
+2004-07-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/cache.c (prune_cache): Print correct list when debugging.
+
+2004-07-21  Jakub Jelinek  <jakub@redhat.com>
+
+	* resolv/res_libc.c (res_init): If RES_INIT is set and
+	_res.nscount > 0, call __res_nclose and free nsaddrs.
+	* resolv/Makefile: Add rules to build and run tst-leaks2.
+	* resolv/tst-leaks2.c: New test.
+
+2004-07-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* intl/libintl.h: Don't define macros for C++.
+	Patch by Goto Masanori.
+
+2004-07-22  GOTO Masanori  <gotom@debian.or.jp>
+
+	[BZ #276]
+	* include/arpa/inet.h: Change inet_aton type from in_addr_t to int.
+	* inet/arpa/inet.h: Likewise.
+	* resolv/inet_addr.c: Likewise.
+
+2004-07-21  Alexandre Oliva  <aoliva@redhat.com>
+
+	* sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: Add semtimedop.
+
+2004-07-20  Roland McGrath  <roland@redhat.com>
+
+	* configure.in (add_ons): Substitute this.  Move $add_ons handling
+	after AC_CANONICAL_HOST and default setting of $machine et al.
+	Don't set $subdirs from $add_ons.
+	Instead, source add-on/configure fragments early on.
+	(base_machine): If it's already set, don't set it based on $machine.
+	(libc_config_ok): New variable, set to no.  If an add-on fragment sets
+	it to yes, skip the  tuple sanity check as if --enable-hacker-mode.
+	(sysnames): Try appending add-on names after machine as well.
+	* config.make.in (add-ons): Set from @add_ons@ instead of @subdirs@.
+	* Makeconfig ($(common-objpfx)config.status): Also depend on configure
+	files in $(add_ons) dirs.
+
+	* sysdeps/unix/sysv/linux/bits/in.h (struct ip_mreq): Remove
+	definition, now in netinet/in.h proper.
+
+2004-07-20  Alexandre Oliva  <aoliva@redhat.com>
+
+	* sysdeps/unix/sysv/linux/mips/Makefile ($(objpfx)syscall-%.h):
+	Sort by syscalls.  Make sure we get headers such as sgidefs.h from
+	the build tree before just-installed ones.
+
+	* sysdeps/mips/atomicity.h: Use standard names for ABI macros,
+	include sgidefs.h where appropriate.
+	* sysdeps/mips/dl-machine.h: Likewise.
+	* sysdeps/mips/machine-gmon.h: Likewise.
+	* sysdeps/mips/bits/setjmp.h: Likewise.
+	* sysdeps/mips/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/mips/mips64/__longjmp.c: Likewise.
+	* sysdeps/mips/mips64/setjmp_aux.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pread.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/procfs.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/ptrace.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/tas.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/user.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/Makefile ($(objpfx)syscall-%.h):
+	Likewise.
+	* sysdeps/unix/sysv/linux/mips/configure.in (asm-unistd.h):
+	Likewise.
+
+	* sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Update to use
+	_dl_lookup_symbol_x.
+	(elf_machine_runtime_link_map): Don't INTUSE _dl_signal_error.
+
+2004-07-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* inet/netinet/in.h: Define struct ip_mreq and struct
+	ip_mreq_source.
+	Define struct group_req and struct group_source_req.
+	* sysdeps/unix/sysv/linux/bits/in.h: Define IP_UNBLOCK_SOURCE,
+	IP_BLOCK_SOURCE, IP_ADD_SOURCE_MEMBERSHIP,
+	IP_DROP_SOURCE_MEMBERSHIP, IP_MSFILTER, MCAST_JOIN_GROUP,
+	MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE, MCAST_LEAVE_GROUP,
+	MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP, and
+	MCAST_MSFILTER.
+	Define MCAST_INCLUDE and MCAST_EXCLUDE.
+
+	* iconvdata/gconv-modules: Add alias for IBM874 [BZ #244].
+
+2004-07-19  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #258]
+	* math/libm-test.inc (max_value, min_value): New variables.
+	(initialize): Initialize them.
+	(pow_test): Add a couple of new tests.
+	* sysdeps/i386/fpu/e_powf.S (__ieee754_powf): Don't generate invalid
+	exception if |y| >= 1U<<31.
+	* sysdeps/i386/fpu/e_pow.S (__ieee754_pow): Don't generate invalid
+	exception if |y| >= 1L<<63.
+	* sysdeps/i386/fpu/e_powl.S (__ieee754_powl): Likewise.
+	If y*log2(x) overflows to +-inf, return still +inf/+0 instead of NaN.
+	* sysdeps/x86_64/fpu/e_powl.S (__ieee754_powl): Likewise.
+
+2004-07-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/pwdcache.c (cache_addpw): Optimize case of unsuccessful
+	lookup a bit.
+	* nscd/grpcache.c (cache_addgr): Likewise.
+	* nscd/hstcache.c (cache_addhst): Likewise.
+
+2004-07-10  GOTO Masanori  <gotom@debian.or.jp>
+
+	* sysdeps/s390/s390-32/elf/start.S: Remove symbol _fp_hw.
+	* sysdeps/s390/s390-64/elf/start.S: Likewise.
+
+2004-04-16  Andreas Schwab  <schwab@suse.de>
+
+	* sysdeps/ia64/bits/atomic.h: Cast first argument of
+	__sync_bool_compare_and_swap_si correct to void*.
+
+2004-07-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* iconv/iconv_prog.c (print_known_names): Make machine-readable
+	output even less cluttered.
+
+2004-07-16  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	[BZ #269]
+	* setjmp/Makefile (tests): Add bug269-setjmp.
+	* setjmp/bug269-setjmp.c: New file.
+	* sysdeps/powerpc/powerpc64/__longjmp-common.S [SHARED && !IS_IN_rtld]:
+	Store R2 from jmpbuf in callers TOC save area.
+	* sysdeps/powerpc/powerpc64/bsd-_setjmp.S [SHARED && !IS_IN_rtld]:
+	Store R2 in TOC save area.
+	* sysdeps/powerpc/powerpc64/setjmp-common.S [SHARED && !IS_IN_rtld]:
+	Copy TOC save area from previous frame as R2 (TOC) in jmpbuf.
+
+2004-07-16  Jakub Jelinek  <jakub@redhat.com>
+
+	* locale/newlocale.c: Include bits/libc-lock.h.
+	(__libc_setlocale_lock): Extern decl.
+	(__newlocale): Use it.
+	Reported by Ulrich Weigand <Ulrich.Weigand@de.ibm.com>.
+
+2004-07-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Remove
+	static inline __attribute ((always_inline)).  Don't define if
+	NO_CANCELLATION.
+	(__libc_fcntl): Use INLINE_SYSCALL directly instead of
+	__fcntl_nocancel.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c (__fcntl_nocancel):
+	Remove static inline __attribute ((always_inline)).  Don't define
+	if NO_CANCELLATION.
+	(__libc_fcntl): Use INLINE_SYSCALL directly instead of
+	__fcntl_nocancel.
+	* sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Define to
+	__libc_fcntl if NO_CANCELLATION and __ASSUME_FCNTL64 == 0.
+	Don't define at all if NO_CANCELLATION and __ASSUME_FCNTL64 > 0.
+	(__libc_fcntl): Don't define if __fcntl_nocancel is a macro.
+
+	[BZ #262]
+	* sysdeps/i386/elf/start.S (_start): Use @GOT instead of @GOTOFF
+	for main.
+	* elf/Makefile: Add rules to build and run tst-pie1.
+	* elf/tst-pie1.c: New test.
+	* elf/tst-piemod1.c: New file.
+
+2004-07-14  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #266]
+	* manual/string.texi (l64a): Note that the static buffer is 7 bytes
+	long.  Rewrite example code so that it takes into account l64a output
+	shorter than 6 characters.
+	Reported by Julian Graham <julian.graham@aya.yale.edu>.
+
+2004-07-14  Kaz  Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/sh/dl-machine.h: Don't reset _dl_starting_up here.
+	(elf_machine_rela_relative): Remove unused valiable.
+
+2004-07-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+	[BZ #263]
+	* sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Don't store
+	outside the buffer if the read returns 0.  __strtod_l can't set
+	endp to NULL, so remove a test for that case.
+
+2004-07-12  Roland McGrath  <roland@redhat.com>
+
+	* manual/signal.texi (Interrupted Primitives): Make clear that
+	TEMP_FAILURE_RETRY evaluates its expression as long int and compares
+	it to -1 to define "failure".
+
+2004-07-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/ldconfig.c: Define PROCINFO_CLASS as static before including
+	ldsodefs.h.
+	* sysdeps/generic/ldsodefs.h: Only define PROCINFO_CLASS if it is not
+	already defined.
+	* sysdeps/i386/dl-procinfo.c: Define PROCINFO_CALLS only if not
+	already defined.
+
+	* elf/rtld.c (print_statistics): Mark with noinline attribute.
+	* sysdeps/i386/dl-machine.h (elf_machine_rel): Mark with always_inline
+	attribute.
+	(elf_machine_rel_relative): Likewise.
+
+	* include/string.h: Add libc_hidden_proto for __strtok_r and
+	__strsep_g.
+	* sysdeps/generic/strsep.c: Add libc_hidden_def.
+	* sysdeps/generic/strtok_r.c: Likewise.
+	* sysdeps/i386/strtok_r.S: Add alias for internal symbol.
+	* sysdeps/i386/i686/strtok_r.S: Likewise.
+	* sysdeps/x86_64/strtok_r.S: Likewise.
+
+2004-07-09  Alexandre Oliva  <aoliva@redhat.com>
+
+	* inet/getnetgrent_r.c (internal_setnetgrent): Make it hidden
+	instead of internal-linkage, such that we can alias to it.
+	(internal_endnetgrent, internal_getnetgrent_r): Likewise.
+
+2004-07-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Move attribute
+	to the front for gcc 3.5+.
+	* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise.
+	* include/fcntl.h: Don't declare __fcntl_nocancel here if
+	NO_CANCELLATION is defined.
+
+2004-07-07  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/dl-fini.c (_dl_fini): Add nloaded variable, load
+	GL(dl_nloaded) into it while still in critical section.
+
+2004-07-06  Thorsten Kukuk  <kukuk@suse.de>
+
+	* nss/getent.c (print_group, print_passwd): Use %lu format for
+	`unsigned long int' values.
+
+	* sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Fix syntax
+	error typos in goto statements.
+
+2004-07-07  Roland McGrath  <roland@frob.com>
+
+	* Makefile (dist-separate): New variable.
+	(glibc-%.tar rule): Make separate tar files for add-ons listed there.
+	Depend on their configure files.
+	(dist-do-separate-dirs): New canned sequence to do that.
+	(dist-separate-libidn, dist-separate-linuxthreads): New variables.
+	(dist): Depend on add-on tar files based on $(dist-separate).
+	(dist-version): New variable, default to $(version).
+	(tag-for-dist, dist): Use that in place of $(version) in deps.
+
+2004-07-07  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-fini.c (_dl_fini): Move the unlock of the ld.so lock
+	before the loop running the destructors.
+
+2004-05-18  Andreas Schwab  <schwab@suse.de>
+
+	* elf/dl-load.c (_dl_map_object_from_fd): Use the end address of
+	the first segment for mprotect, not l_text_end.
+
+2004-07-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-profile.c (_dl_start_profile): Compact error handling.
+	Remove hashfraction variable.  Make kcount and kcountsize local
+	variables.
+
+	* elf/dl-init.c: Don't define and use _dl_starting_up if
+	HAVE_INLINED_SYSCALLS is defined and the variable is not used.
+	* elf/dl-support.c: Likewise.
+	* elf/rtld.c: Likewise.
+	* elf/dl-misc.c (_dl_debug_vdprintf): Use writev syscall directly
+	if HAVE_INLINED_SYSCALLS is defined.
+	* sysdeps/powerpc/powerpc64/dl-machine.h: Don't reset _dl_starting_up
+	here.
+	* sysdeps/powerpc/powerpc32/dl-start.S: Likewise.
+	* sysdeps/unix/sysv/linux/configure.in: Define HAVE_INLINED_SYSCALLS.
+	* config.h.in: Add entry for HAVE_INLINED_SYSCALLS.
+
+	* sysdeps/posix/profil.c: If compiled for ld.so, omit code which
+	is needed to stop profiling.
+	* elf/dl-open.c (dl_open_worker): If a newly opened object is to be
+	profile make sure it cannot be unloaded.
+
+	* sysdeps/unix/sysv/linux/dl-origin.c: Inline readlink syscall.
+
+	* sysdeps/unix/sysv/linux/fcntl.c: If compiled without cancellation
+	support, make sure the helper function is inlined.
+	* sysdeps/unix/sysv/linux/pread.c: Likewise.
+	* sysdeps/unix/sysv/linux/pwrite.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise.
+
+2004-07-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* include/string.h (ffs): Add libc_hidden_builtin_proto.
+	* sysdeps/rs6000/ffs.c (ffs): Add libc_hidden_builtin_def.
+	* sysdeps/alpha/alphaev67/ffs.S (ffs): Likewise.
+	* sysdeps/alpha/ffs.S (ffs): Likewise.
+	* sysdeps/s390/ffs.c (ffs): Likewise.
+	* sysdeps/powerpc/ffs.c (ffs): Likewise.
+	* sysdeps/i386/ffs.c (ffs): Likewise.
+	* sysdeps/i386/i686/ffs.c (ffs): Likewise.
+	* sysdeps/m68k/ffs.c (ffs): Likewise.
+	* sysdeps/generic/ffs.c (ffs): Likewise.
+	* sysdeps/m88k/ffs.c (ffs): Likewise.
+	* sysdeps/am29k/ffs.c (ffs): Likewise.
+	* sysdeps/i960/ffs.c (ffs): Likewise.
+	* sysdeps/x86_64/ffs.c (ffs): Likewise.
+
+	* Makerules (check-abi): Use diff -p -U 0 instead of diff -pu0.
+
+	* sysdeps/powerpc/novmx-longjmp.c (__libc_longjmp,
+	__libc_siglongjmp): Remove symbol_version.
+	* sysdeps/powerpc/longjmp.c (__libc_longjmp, __libc_siglongjmp):
+	Export @@GLIBC_PRIVATE, not @@GLIBC_2.3.4.
+	* sysdeps/powerpc/sigjmp.c (__sigjmp_save): Use strong_alias
+	unconditionally.
+	* sysdeps/powerpc/novmx-sigjmp.c (__sigjmp_save): Remove.
+	* sysdeps/powerpc/powerpc32/__longjmp.S (__longjmp): Use
+	strong_alias instead of default_symbol_version, remove
+	symbol_version.
+	* sysdeps/powerpc/powerpc64/__longjmp.S (__longjmp): Likewise.
+	* sysdeps/powerpc/powerpc32/bsd-setjmp.S (__novmx__setjmp): Change
+	into strong_alias to __novmxsetjmp.
+	(__vmx__setjmp): Similarly with __vmxsetjmp.
+	(__setjmp): Make it strong_alias to __vmx__setjmp, remove
+	default_symbol_version and symbol_version.
+	* sysdeps/powerpc/powerpc64/bsd-setjmp.S (__novmx__setjmp): Change
+	into strong_alias to __novmxsetjmp.
+	(__vmx__setjmp): Similarly with __vmxsetjmp.
+	(__setjmp): Make it strong_alias to __vmx__setjmp, remove
+	default_symbol_version and symbol_version.
+
+	* nscd/nscd_getgr_r.c: Include stdio-common/_itoa.h.
+
+2004-07-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/rtld.c (dl_main): Mark dyn_temp with attribute_relro.
+
+2004-07-04  Matthew Reppert  <arashi@kai.vm.bytemark.co.uk>
+
+	* sysdeps/unix/sysv/linux/i386/glob64.c (glob64): Use libc_hidden_ver
+	instead of libc_hidden_def.
+
+2004-07-01  Roland McGrath  <roland@redhat.com>
+
+	* aclocal.m4: Add provide for AC_CONFIG_AUX_DIR_DEFAULT.
+
+	* Makeconfig ($(common-objpfx)shlib-versions.v.i): Move top-level
+	$(..)shlib-versions file to last in deps list.  This lets add-ons give
+	more-specific matches that override defaults in the top-level file.
+
+	* sysdeps/unix/sysv/linux/configure.in: If arch_minimum_kernel was
+	already set, don't set it or libc_cv_gcc_unwind_find_fde.
+	* sysdeps/unix/sysv/linux/configure: Regenerated.
+
+2004-07-01  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+	* sysdeps/s390/fpu/bits/mathinline.h [__LIBC_INTERNAL_MATH_INLINES]
+	(__ieee754_sqrt): Define as __MATH_INLINE using sqdbr instruction.
+	(__ieee754_sqrtf): Define as __MATH_INLINE using sqebr instruction.
+	* sysdeps/s390/fpu/e_sqrt.c: New file.
+	* sysdeps/s390/fpu/e_sqrtf.c: New file.
+	* sysdeps/s390/Implies: New file.
+	* sysdeps/s390/s390-32/Implies: Remove ieee754, move
+	ieee754/dbl-64 and ieee754/flt-32 to s390/Implies.
+	* sysdeps/s390/s390-64/Implies: Likewise.
+
+2004-06-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Include tls.h.
+	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise.
+
+	* sysdeps/unix/sysv/linux/s390/s390-32/clone.S (thread_start):
+	DO_CALL (exit, 1) instead of branching to _exit.
+	* sysdeps/unix/sysv/linux/s390/s390-64/clone.S (thread_start):
+	Likewise.
+
+	* sysdeps/s390/fpu/bits/mathinline.h: New file.
+
+	* include/glob.h (glob64): Add libc_hidden_proto.
+	* sysdeps/generic/glob64.c (glob64): Add libc_hidden_def.
+	* sysdeps/gnu/glob64.c (glob64): Likewise.
+	* sysdeps/unix/sysv/linux/i386/glob64.c (glob64): Likewise.
+
+2004-06-11  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/i386/fpu/libm-test-ulps: Update for GCC 3.4.
+	* sysdeps/s390/fpu/libm-test-ulps: Likewise.
+
+2004-06-11  Dwayne Grant McConnell  <dgm69@us.ibm.com>
+
+	* sysdeps/powerpc/fpu/s_lround.c: Removed.
+	* sysdeps/powerpc/fpu/s_lroundf.c: Removed.
+	* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_floor.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_lrint.c: Removed.
+	* sysdeps/powerpc/powerpc32/fpu/s_lrint.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_lroundf.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_lround.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_rint.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_round.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: New file.
+	* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: New file.
+
+2004-06-30  Ulrich Drepper  <drepper@redhat.com>
+
+	* include/net/if.h: Handle if_nameindex and if_freenameindex with
+	libc_proto_hidden.
+	* sysdeps/unix/sysv/linux/netlinkaccess.h: New file.
+	* sysdeps/unix/sysv/linux/ifaddrs.c: Export netlink handling functions.
+	* sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Implement using
+	netlink if possible.  Fall back on ioctl method if necessary.
+	* sysdeps/unix/sysv/linux/Dist: Add netlinkaccess.h.
+
+	* include/unistd.h: Declare __truncate.
+	* sysdeps/generic/truncate.c: Also define __truncate.
+	* sysdeps/mach/hurd/truncate.c: Likewise.
+	* sysdeps/unix/common/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/truncate64.c: Use __truncate, not truncate.
+
+2004-06-29  Ulrich Drepper  <drepper@redhat.com>
+
+	* stdio-common/printf-parsemb.c (__parse_one_specmb): Initialize
+	info.extra.  Patch by Marcus Meissner.
+
+2004-06-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/unix/sysv/linux/sh/sysdep.h (SYSCALL_ERROR_HANDLER):
+	Fix branch offset for a PLT entry.
+
+2004-06-20  Jim Meyering  <jim@meyering.net>
+
+	* malloc/obstack.h (obstack_base): Cast to `void *', to align with
+	documentation.
+
+2004-06-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* inet/bug-if1.c (do_test): Simply use 0 as invalid index.
+	Workaround for [BZ #232].
+
+	* sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Use extend_alloca.
+
+2004-06-28  GOTO Masanori  <gotom@debian.or.jp>
+
+	* iconv/gconv_simple.c: Use get16/put16 for user given buffer
+	in ucs2/ucs2reverse when unaligned memory access is attempted.
+	* iconv/tst-iconv5.c: New file.
+	* iconv/Makefile (tests): Add tst-iconv5.
+
+2004-06-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* inet/bug-if1.c: Include <string.h>.
+
+2004-06-19  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/posix/waitid.c (do_waitid) [DO_WAITID]: Define function
+	under this macro name instead.
+	[NO_DO_WAITID]: Don't define it at all.
+	(do_waitid) [WNOWAIT, WEXITED]: If these POSIX.1 waitid flag bits are
+	defined, then return ENOTSUP for combinations of selection bits other
+	than WEXITED and WEXITED|WSTOPPED, which this version cannot support.
+
+	* posix/tst-waitid.c: New file.
+	* posix/Makefile (tests): Add it.
+
+2004-06-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/alpha/sysdep.h (inline_syscall6): Fix a typo.
+
+	[BZ #231]
+	* sysdeps/unix/alpha/sysdep.S (__syscall_error): Avoid !samegp
+	relocation in librt.so.
+
+	[BZ #230]
+	* sysdeps/alpha/dl-machine.h (_dl_start_user): Use ldah/ldl to load
+	_dl_skip_args.  Patch by Jakub Bogusz <qboosh@pld-linux.org>.
+
+2004-06-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/ldconfig.c (add_dir): Take chroot into account.
+	Based on changes by HJ Lu and Hideki Iwamoto.
+
+	* nscd/connections.c (invalidate_cache): If the host cache has to
+	be invalidated, re-read resolv.conf.
+
+	* resolv/resolv.h (RES_NOIP6DOTINT): Define.
+	* resolv/res_init.c (res_setoptions): Handle no-ip6-dotint option.
+	* resolv/gethnamaddr.c (gethostbyaddr): Don't lookup with .ip6.int
+	if RES_NOIP6DOTINT flag is set.
+	* resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Likewise.
+
+2004-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/fcntl.c: Move to...
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fcntl.c: ... here.
+	* sysdeps/unix/sysv/linux/powerpc/lockf64.c: Move to...
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/lockf64.c: ... here.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: New file.
+
+	* sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (F_GETLK, F_SETLK,
+	F_SETLKW): Fix values for -m32 -D_FILE_OFFSET_BITS=64.
+
+2004-06-21  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #231]
+	* sysdeps/unix/alpha/Makefile: New file.
+	* sysdeps/unix/alpha/rt-sysdep.S: New file.
+	Reported by Jakub Bogusz <qboosh@pld-linux.org>.
+
+2004-06-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): For AI_CANONNAME,
+	determine the canonical name only for the first returned entry.
+
+	* inet/bug-if1.c: New file.
+	* inet/Makefile (tests): Add bug-if1.
+
+2004-06-18  Roland McGrath  <roland@frob.com>
+
+	* Makerules (compile-mkdep-flags): Add -MT $@.
+
+	* Makefile (dist, tag-for-dist): New targets.
+	(files-for-dist, tag-of-stem): New variables.
+	(glibc-%.tar glibc-linuxthreads-%.tar): New pattern rule.
+	Make tar files using cvs export.
+	(%.bz2, %.gz, tag-%): New pattern rules.
+	(distribute): Variable removed.
+	(+subdir_targets): Remove distinfo targets.
+	(echo_subdirs, echo-distinfo, parent_echo-distinfo): Targets removed.
+	(rpm/%): Pattern rule removed.
+	* rpm/Makefile, rpm/rpmrc, rpm/template: Ancient cruft files removed.
+	* Rules (subdir_echo-headers, subdir_echo-distinfo, subdir_dist):
+	Targets removed.
+	* Makerules (dist, subdir_distinfo): Targets removed.
+	($(objpfx)distinfo): Depend on $(distribute).
+	* Make-dist: File removed.
+
+	* NEWS: Fix a typo.  Update bug-reporting instructions.
+
+2004-06-17  Thorsten Kukuk  <kukuk@suse.de>
+
+	* sysdeps/unix/sysv/linux/sched_setaffinity.c
+	(__sched_setaffinity_new): Set errno to EINVAL and return -1 if
+	cpuset is wrongly set.
+
+2004-06-15  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/powerpc/powerpc64/memcpy.S: Improve instruction scheduling
+	for POWER4 machines.
+
+2004-06-14  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #218]
+	* sunrpc/pmap_prot2.c (xdr_pmaplist): When freeing, remember pml_next
+	in a local variable, point rp to that local variable afterwards.
+
+2004-06-11  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/ieee754/dbl-64/e_sqrt.c (__ieee754_sqrt): Handle special
+	cases properly.
+
+2004-06-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
+	error value for unknown interface. [BZ #198]
+
+2004-06-13  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/i386/bits/string.h (memcpy): Add () around arguments.
+	(memchr, __memrchr, strlen, strcmp, strncmp, __strchr_g, __strchr_c,
+	__strchrnul_g, __strchrnul_c, strspn, strcspn, strpbrk): Add memory
+	the asm uses as its input, either of size __n where __n is known or
+	0xfffffff.
+	(strstr): Add "memory" clobber.
+
+2004-06-14  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #219]
+	* nss/nsswitch.c (free_mem): Don't try to close a library handle
+	if the handle is invalid.  Patch by David Kimdon <kimdon@esrf.fr>.
+
+2004-06-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	[BZ #217]
+	* debug/xtrace.sh: Fix typo in error diagnostics.
+
+2004-06-14  Andreas Schwab  <schwab@suse.de>
+
+	* stdio-common/psignal.c (psignal): Don't use BUF when asprintf
+	failed.
+
+2004-06-15  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Fix pasto
+	that clobbers r19.  Fix pasto that overflowed sigcontext.v_reserve.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Fix pasto
+	that clobbers r19.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Fix pasto
+	that clobbers r19.  Fix pasto that overflowed sigcontext.v_reserve.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S:
+	Fix setting of sigcontext.v_regs.  Fix pasto that clobbers r19.
+	Fix pasto that overflowed sigcontext.v_reserve.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S:
+	Fix pasto that clobbers r19.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Fix setting
+	of sigcontext.v_regs.  Fix pasto that clobbers r19.  Fix pasto that
+	overflowed sigcontext.v_reserve.
+
+2004-05-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+	[BZ #150]
+	* sysdeps/generic/strtol_l.c (DEF): Use ".gnu.linkonce.r."
+	instead of ".gnu.linkonce.ro." as the prefix for linkonce
+	read-only section name.
+
+2004-06-14  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/div_libc.h (_ITOFS): Use "sp" not "$sp".
+	(_ITOFT, _FTOIT, _ITOFT2): Likewise.
+
+2004-06-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/s390/s390-32/backtrace.c (init): Guard with #ifdef SHARED.
+	(unwind_backtrace, unwind_getip): Define #ifndef SHARED.
+	(__backtrace): Don't call init #ifndef SHARED.
+	* sysdeps/s390/s390-64/backtrace.c (init): Guard with #ifdef SHARED.
+	(unwind_backtrace, unwind_getip): Define #ifndef SHARED.
+	(__backtrace): Don't call init #ifndef SHARED.
+	* sysdeps/ia64/backtrace.c (init): Guard with #ifdef SHARED.
+	(unwind_backtrace, unwind_getip): Define #ifndef SHARED.
+	(__backtrace): Don't call init #ifndef SHARED.
+
+2004-06-11  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/arm/strlen.S [__ARMEB__]: Compute correctly for big-endian.
+	From Krzysztof Halasa <khc@pm.waw.pl>.
+
+2004-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/tls-macros.h [__s390x__] (TLS_LD, TLS_GD): Clobber also r14.
+
+2004-06-08  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #199]
+	* crypt/md5-crypt.c (__md5_crypt): Only update buflen if realloc
+	succeeds.  Reported by Miles Ohlrich <miles@cray.com>.
+
+	* elf/chroot_canon.c (chroot_canon): Avoid segfault if first malloc
+	fails.  Avoid memory leak if realloc fails.
+
+2004-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/generic/setenv.c (setenv): Return -1/EINVAL if name is
+	NULL, "" or contains '=' character in it.  Reported by
+	Michael T Kerrisk <mtk-lists@gmx.net>.
+	* stdlib/tst-environ.c: Include errno.h.
+	(main): Add tests for these arguments to setenv/unsetenv.
+
+2004-06-07  Roland McGrath  <roland@frob.com>
+
+	* NEWS: Update bug reporting instructions.  Fix some typos.
+
+2004-06-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* stdio-common/_itoa.h: Don't expand _itoa inline for libc.
+	* stdio-common/_itoa.c: Add _itoa implementation.
+
+	* nscd/nscd_gethst_r.c (__nscd_open_socket): Change implementation
+	to also send request.  Add parameter to allow this.
+	Change callers.
+	* nscd/nscd_getgr_r.c: Change __nscd_open_socket caller.
+	* nscd/nscd_getpw_r.c: Likewise.
+	* nscd/nscd-client.h: Change __nscd_open_socket prototype.
+
+2004-06-05  Andreas Jaeger  <aj@suse.de>
+
+	* sysdeps/unix/sysv/linux/x86_64/makecontext.c (__makecontext):
+	Handle more than 6 args correctly.  Based on a patch by Masahide
+	Washizawa <washi@jp.ibm.com>.
+
+2004-06-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/nscd_gethst_r.c (nscd_gethst_r): Use __nss_not_use_nscd_hosts
+	in all places, not __nss_not_use_nscd_group.
+	Reported by Philippe Gregoire.
+
+2004-06-03  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/i386/i486/bits/atomic.h: Optimize a bit.
+
+2004-05-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	* argp/argp-help.c (__argp_error, __argp_failure): Check result
+	of __asprintf call and don't use string if it failed.
+	* stdio-common/psignal.c (psignal): Likewise.
+	* locale/programs/localedef.c (more_help): Likewise.
+	* resolv/res_hconf.c (arg_service_list, arg_trimdomain_list,
+	arg_bool, parse_line): Check result of __asprintf calls and
+	don't use string if they failed.
+	* sunrpc/svc_simple.c (registerrpc, universal): Likewise.
+	* elf/ldconfig.c (parse_conf_include): Check result of __asprintf
+	call and exit if it failed.
+
+2004-05-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/posix/sysconf.c (__sysconf) <cases _SC_REALTIME_SIGNALS,
+	_SC_PRIORITY_SCHEDULING, _SC_TIMERS, _SC_ASYNCHRONOUS_IO,
+	_SC_PRIORITIZED_IO, _SC_SYNCHRONIZED_IO, _SC_FSYNC, _SC_MAPPED_FILES,
+	_SC_MEMLOCK, _SC_MEMLOCK_RANGE, _SC_MEMORY_PROTECTION,
+	_SC_MESSAGE_PASSING, _SC_SEMAPHORES, _SC_SHARED_MEMORY_OBJECTS,
+	_SC_THREADS, _SC_THREAD_SAFE_FUNCTIONS, _SC_THREAD_ATTR_STACKADDR,
+	_SC_THREAD_ATTR_STACKSIZE, _SC_THREAD_PRIORITY_SCHEDULING,
+	_SC_THREAD_PRIO_INHERIT, _SC_THREAD_PRIO_PROTECT,
+	_SC_THREAD_PROCESS_SHARED>: Return _POSIX_* value instead of 1.
+	* sysdeps/unix/sysv/linux/sysconf.c (__sysconf)
+	<case _SC_MONOTONIC_CLOCK>: Return _POSIX_VERSION instead of 1.
+
+2004-05-07  Jeroen Dekkers  <jeroen@dekkers.cx>
+
+	* sysdeps/mach/hurd/i386/Makefile (CFLAGS-init-first.c): Add
+	-momit-leaf-frame-pointer.
+
+	* inet/test-ifaddrs.c (addr_string): Surround AF_PACKET case with
+	#ifdef AF_PACKET.
+
+	* sysdeps/mach/hurd/getcwd.c
+	(_hurd_canonicalize_directory_name_intern): Only realloc when
+	size is <= 0.
+
+	* sysdeps/mach/hurd/mmap.c (__mmap): Fail when addr or offset
+	isn't page aligned.
+
+	* sysdeps/mach/hurd/spawni.c (EXPAND_DTABLE): Set dtablesize to
+	new size.
+
+	* sysdeps/mach/hurd/Versions (GLIBC_PRIVATE): Add __libc_read,
+	__libc_write and __libc_lseek64.
+
+2004-05-29  Roland McGrath  <roland@redhat.com>
+
+	* elf/Makefile (shared-only-routines): Add dl-caller.
+
+2004-05-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/powerpc/configure.in: New file.
+
+2004-05-28  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Add .machine
+	"altivec" to enable VMX instructions.
+	* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
+	* sysdeps/powerpc/powerpc64/__longjmp-common.S: Likewise.
+	* sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise.
+
+2004-05-27  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Define using
+	__builtin_expm1l for GCC 3.5+.
+	(__expl): Define using __builtin_expl for GCC 3.4+.
+	(exp, expf, expl): Don't define for GCC 3.4+.
+	(tan, tanf, tanl): Don't define for GCC 3.5+.
+	(__atan2l): Define using __builtin_atan2l for GCC 3.4+.
+	(atan2, atan2f, atan2l): Don't define for GCC 3.4+ or !__FAST_MATH__.
+	(fmod, fmodf, fmodl): Don't define for GCC 3.5+ or !__FAST_MATH__.
+	(fabsf, fabsl): Only provide if __USE_MISC or __USE_ISOC99.
+	(sin, sinf, sinl, cos, cosf, cosl, log, logf, logl): Don't define
+	for GCC 3.4+.
+	(log10, log10f, log10l, asin, asinf, asinl, acos, acosf, acosl):
+	Don't define for GCC 3.5+.
+	(atan, atanf, atanl): Don't define for GCC 3.4+ or !__FAST_MATH__.
+	(log1p, log1pf, log1pl, logb, logbf, logbl, log2, log2f, log2l): Don't
+	define for GCC 3.5+.
+	(drem, dremf, dreml): Don't define for GCC 3.5+ or !__FAST_MATH__.
+	* sysdeps/sparc/fpu/bits/mathinline.h (sqrt, sqrtf, sqrtl): Don't
+	define for GCC 3.2+.
+
+2004-05-27  Jakub Jelinek  <jakub@redhat.com>
+
+	* string/bits/string2.h (__bzero): Define even for GCC 3.0+.
+	* sysdeps/alpha/stpcpy.S (stpcpy): Add libc_hidden_builtin_def.
+	* sysdeps/alpha/alphaev67/stpcpy.S (stpcpy): Likewise.
+	* sysdeps/powerpc/powerpc32/stpcpy.S (stpcpy): Likewise.
+	* sysdeps/powerpc/powerpc64/stpcpy.S (stpcpy): Likewise.
+	* sysdeps/sparc/sparc32/stpcpy.S (stpcpy): Likewise.
+	* sysdeps/sparc/sparc64/stpcpy.S (stpcpy): Likewise.
+	* sysdeps/i386/stpcpy.S (stpcpy): Likewise.
+	* sysdeps/i386/i586/stpcpy.S (stpcpy): Likewise.
+	* sysdeps/generic/stpcpy.c (stpcpy): Likewise.
+	* sysdeps/x86_64/stpcpy.S (stpcpy): Likewise.
+	* sysdeps/i386/i586/memcpy.S (memcpy): Remove
+	libc_hidden_builtin_def if MEMPCPY_P.
+	* sysdeps/x86_64/memcpy.S (memcpy): Likewise.
+	* sysdeps/i386/i686/mempcpy.S (mempcpy): Add libc_hidden_builtin_def.
+	* sysdeps/i386/i586/mempcpy.S (mempcpy): Likewise.
+	* sysdeps/generic/mempcpy.c (mempcpy): Likewise.
+	* sysdeps/x86_64/mempcpy.S (mempcpy): Likewise.
+
+2004-05-26  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/generic/bits/in.h
+	(IMPLINK_IP, IMPLINK_LOWEXPER, IMPLINK_HIGHEXPER): Macros removed.
+	These are long obsolete in BSD systems where they originated.
+	* conform/data/netinet/in.h-data: Remove `allow IMPLINK_*'
+
+2004-05-26  Jakub Jelinek  <jakub@redhat.com>
+
+	* include/string.h (mempcpy, stpcpy): Add libc_hidden_builtin_proto.
+	* string/bits/string2.h (memset): Disable macro for GCC 3.0+.
+	(__mempcpy): Use __builtin_mempcpy for GCC 3.4+.
+	(strchr): For GCC 3.2+, only use __rawmemchr if second argument is
+	constant '\0' and first argument is not constant.
+	(__stpcpy): Use __builtin_stpcpy for GCC 3.4+.
+	(strncpy): Remove #ifdef _USE_STRING_ARCH_mempcpy variant.
+	For GCC 3.2+ use __builtin_strncpy.
+	(strncat): For GCC 3.2+ use __builtin_strncat.
+	(strcmp): For GCC 3.2+ use __builtin_strcmp if both arguments are
+	constant.
+	(strcspn, strspn, strpbrk): For GCC 3.2+, use builtin function
+	if both arguments are constant.
+
+2004-05-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* nss/nss_files/files-hosts.c: Fix condition for looking up IPv4
+	mapped addresses in gethostbyaddr.
+
+2004-05-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* nss/digits_dots.c (__nss_hostname_digits_dots): Remove typep and
+	flags parameter, convert afp to simple int parameter.  Adjust code.
+	typep was never != NULL and flags therefore also unused.  *afp is
+	never modified.
+	* nss/nsswitch.h: Adjust __nss_hostname_digits_dots prototype.
+	* nss/getXXbyYY.c: Remove HAVE_TYPE handling.  Adjust af parameter
+	handling for __nss_hostname_digits_dots calls.
+	* nss/getXXbyYY_r.c: Likewise.
+
+	* elf/dl-load.c (_dl_map_object_from_fd): Map DSOs with MAP_DENYWRITE.
+
+2004-05-25  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/powerpc/fpu/Makefile: Make ld.so a dependency of libm.so.
+	* sysdeps/powerpc/fpu/bits/mathinline.h [__LIBC_INERNAL_MATH_INLINES]
+	(__ieee754_sqrt): Define as __MATH_INLINE using fsqrt instruction.
+	(__ieee754_sqrtf): Define as __MATH_INLINE using fsqrts instruction.
+	* sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrt): Moved
+	implementation from w_sqrt.c.
+	* sysdeps/powerpc/fpu/e_sqrtf.c (__slow_ieee754_sqrtf): Moved
+	implementation from w_sqrtf.c.
+	* sysdeps/powerpc/fpu/w_sqrt.c (__sqrt): Wrapper implementation
+	using inline __ieee754_sqrt().
+	* sysdeps/powerpc/fpu/w_sqrtf.c (__sqrtf): Wrapper implementation
+	using inline __ieee754_sqrtf().
+	* sysdeps/powerpc/powerpc32/sysdep.h [__ASSEMBLER__]: Include
+	<sysdeps/powerpc/sysdep.h> independent of __ASSEMBLER__.
+	* sysdeps/powerpc/sysdep.h [__ASSEMBLER__] (PPC_FEATURE_*): Define
+	PPC_FEATURE_*  independent of __ASSEMBLER__.
+
+2004-05-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/pthread/aio_notify.c: Use <> instead of "" for aio_misc.h
+	include.
+	(aio_start_notify_thread): Define if not defined.
+	(notify_func_wrapper): Use it.
+	* sysdeps/pthread/aio_misc.c: Use <> instead of "" for aio_misc.h
+	include.
+	(aio_create_helper_thread): Define if not defined.
+	(__aio_create_helper_thread): New function.
+	(__aio_enqueue_request): Use aio_create_helper_thread.
+
+	* nis/ypclnt.c (ypall_data, ypall_foreach): Remove.
+	(struct ypresp_all_data): New type.
+	(__xdr_ypresp_all): Change second argument to
+	struct ypresp_all_data *.  Replace ypall_foreach and
+	ypall_data with objp->foreach and objp->data.
+	(yp_all): Remove status variable, add data.  Replace
+	all uses of status with data.status.  Initialize data.foreach
+	and data.data instead of ypall_foreach and ypall_data.
+
+2004-05-24  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/dl-lookup.c (add_dependency): Set DF_1_NODELETE bit
+	in l_flags_1, not in l_flags.
+
+2004-04-10  Robert Millan  <robertmh@gnu.org>
+
+	* sysdeps/unix/sysv/linux/bits/in.h: Cosmetic fixes to get in sync
+	with sysdeps/generic/bits/in.h.
+
+2004-05-25  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/generic/unwind-dw2-fde-glibc.c: Change copyright terms from
+	GCC GPL to standard glibc LGPL.
+
+2004-05-24  Ulrich Drepper  <drepper@redhat.com>
+
+	* manual/string.texi (Copying and Concatenation): Fixed second
+	concat example.
+	Reported by Fabian Pietsch <fabian@zzznowman.dyndns.org>.
+
+2004-05-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/obstack.c: Don't allow linking with _obstack.
+
+2004-05-23  Andreas Schwab  <schwab@suse.de>
+
+	* sysdeps/m68k/m68020/bits/atomic.h: Use "+m" constraint instead
+	of separate "m" constraints.
+
+2004-05-15  Chris Demetriou  <cgd@broadcom.com>
+
+	* sysdeps/mips/dl-machine.h (ELF_DL_FRAME_SIZE)
+	(ELF_DL_SAVE_ARG_REGS, ELF_DL_RESTORE_ARG_REGS): For the N32
+	and 64 ABIs, save and restore regs $10 and $11 (a6 and a7).
+
+2004-05-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+	* malloc/obstack.c (_obstack) [!defined _LIBC]: Remove; not used.
+	Add comment explaining why libc still defines it.
+
+2004-05-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+	* malloc/obstack.h (_obstack_free, obstack_1grow, obstack_1grow_fast,
+	obstack_alignment_mask, obstack_alloc, obstack_base,
+	obstack_blank, obstack_blank_fast, obstack_chunk_size,
+	obstack_copy, obstack_copy0, obstack_finish, obstack_grow,
+	obstack_grow0, obstack_init, obstack_int_grow,
+	obstack_int_grow_fast, obstack_make_room, obstack_memory_used,
+	obstack_next_free, obstack_object_size, obstack_ptr_grow,
+	obstack_ptr_grow_fast, obstack_room): Remove declarations of
+	nonexistent functions.
+
+2004-05-18  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/powerpc/powerpc64/sysdep.h [__ASSEMBLER__]: Include
+	<sysdeps/powerpc/sysdep.h> independent of __ASSEMBLER__.
+	[PIC]: Redundent for powerpc64, removed.
+	(ENTRY): Generate size and alignment for opd entry.
+	(EALIGN): Generate size and alignment for opd entry.
+	(END): Use DOT_LABEL in ASM_SIZE_DIRECTIVE.
+	(END_GEN_TB): Use DOT_LABEL in ASM_SIZE_DIRECTIVE.
+
+2004-05-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* misc/regexp.h: Say the functions have been withdrawn.
+
+	* wcsmbs/tst-wcpncpy.c: Add more tests.
+
+2004-05-18  Roland McGrath  <roland@frob.com>
+
+	* sysdeps/generic/unwind.h: Change copyright terms from GCC GPL to
+	standard glibc LGPL.
+	* sysdeps/generic/unwind-dw2.c: Likewise.
+	* sysdeps/generic/unwind-dw2-fde.c: Likewise.
+	* sysdeps/generic/unwind-dw2-fde.h: Likewise.
+	* sysdeps/generic/unwind-pe.h: Likewise.
+
+2004-05-15  Petter Reinholdtsen  <pere@hungry.com>
+
+	* locale/iso-3166.def: Remove YUGOSLAVIA and insert "SERBIA AND
+	MONTENEGRO" which have taken over the code 819.  Patch from
+	Danilo Segan. [BZ #40]
+
+2004-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+	(SYSCALL_ERROR_HANDLER): Rename __sparc.get_pic.l7 to
+	__sparc_get_pic_l7.
+
+2004-05-15  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+	* catgets/gencat.c: Update bug reporting instructions.
+	* csu/version.c: Likewise.
+	* debug/catchsegv.sh: Likewise.
+	* debug/pcprofiledump.c: Likewise.
+	* debug/xtrace.sh: Likewise.
+	* elf/ldd.bash.in: Likewise.
+	* iconv/iconv_prog.c: Likewise.
+	* iconv/iconvconfig.c: Likewise.
+	* locale/programs/locale.c: Likewise.
+	* locale/programs/localedef.c: Likewise.
+	* login/programs/pt_chown.c: Likewise.
+	* malloc/memusage.sh: Likewise.
+	* malloc/memusagestat.c: Likewise.
+	* malloc/mtrace.pl: Likewise.
+	* manual/crypt.texi: Likewise.
+	* manual/install.texi: Likewise.
+	* nss/makedb.c: Likewise.
+
+2004-05-14  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Only
+	CHECK_STATIC_TLS if sym != NULL.
+	* sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise.
+	* sysdeps/i386/dl-machine.h (elf_machine_rela): Likewise.
+
+2004-05-12  Andreas Schwab  <schwab@suse.de>
+
+	* posix/regex_internal.c (build_wcs_buffer): Also set pstr->mbs
+	when translating.
+
+2004-05-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Rules (xtests): Depend on tests.
+
+2004-05-13  Jakub Jelinek  <jakub@redhat.com>
+
+	* libio/genops.c (_IO_default_xsputn): Avoid one overflow per char if
+	count is negative, yet write_ptr < write_end.
+	(_IO_default_xsgetn): Avoid one underflow per char if count is
+	negative, yet read_ptr < read_end.
+
+2004-05-12  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/bits/termios.h (XTABS): Define XTABS
+	equal to TAB3.
+
+2004-05-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/dl-lookup.c (_dl_lookup_symbol_x): Correct _dl_signal_cerror
+	call.
+
+2004-05-10  Roland McGrath  <roland@frob.com>
+
+	* hurd/hurdlookup.c (__hurd_file_name_split): Return ENOENT for "".
+	(__hurd_directory_name_split): Likewise.
+
+2004-05-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* po/fr.po: Update from translation team.
+
+2004-05-10  Andreas Jaeger  <aj@suse.de>
+
+	* sysdeps/unix/sysv/linux/x86_64/makecontext.c (__makecontext):
+	Correctly compute alignment.
+	Patch by Michael Matz <matz@suse.de>.
+
+2004-05-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/generic/sigpause.c: Prevent sigpause prototype.
+	* sysdeps/posix/sigpause.c: Likewise.
+	* signal/signal.h: Don't define sigpause macro unless needed.
+
+2004-05-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* configure.in (libc_cv_libgcc_s_suffix): New check.
+	(libc_cv_as_needed): Use -lgcc_s$libc_cv_libgcc_s_suffix.
+	* config.make.in (libgcc_s_suffix): Set.
+	* Makeconfig (libgcc_eh): Use -lgcc_s$(libgcc_s_suffix).
+
+2004-05-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* signal/signal.h: Use BSD sigpause only if BSD behavior is preferred.
+
+2004-04-29  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (LOADARGS_1,
+	LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, LOADARGS_6):
+	Load argument values into temporary variables.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (LOADARGS_1,
+	LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, LOADARGS_6):
+	Likewise.
+
+2004-05-07  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/Makefile: mq_send.c and mq_receive.c
+	need to be compiled with exceptions.
+
+2004-05-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/ifreq.c (__ifreq): Fix memory handling.
+	* sysdeps/generic/ifreq.c (__ifreq): Fix memory handling.
+
+	* resolv/res_hconf.c (_res_hconf_reorder_addrs): Make clear that
+	realloc cannot fail.
+
+	* nss/nss_files/files-netgrp.c (EXPAND): Free buffer which cannot
+	be expanded.
+
+	* nis/nis_table.c: Clean up memory handling.
+	* nis/nis_subr.c (nis_getnames): Clean up memory handling.
+	* nis/nis_removemember.c (nis_removemember): Add comment
+	explaining use of realloc.
+
+	* math/tgmath.h (fabs): Use __TGMATH_UNARY_REAL_IMAG_RET_REAL.
+	(carg): Likewise.
+	Patch by Lev S Bishop <lev.bishop@yale.edu>.
+
+	* math/bug-tgmath1.c (main): Test fabs and carg as well.
+
+2004-05-06  Richard Henderson  <rth@redhat.com>
+
+	* elf/elf.h (AT_L1I_CACHESHAPE, AT_L1D_CACHESHAPE,
+	AT_L2_CACHESHAPE, AT_L3_CACHESHAPE): New.
+	* sysdeps/unix/sysv/linux/alpha/Versions: Export
+	__libc_alpha_cache_shape as a private symbol.
+	* sysdeps/unix/sysv/linux/alpha/dl-sysdep.c: New file.
+	* sysdeps/unix/sysv/linux/alpha/sysconf.c: New file.
+
+2004-05-06  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/div_libc.h (_ITOFS, _ITOFT, _FTOIT, _ITOFT2): New.
+	* sysdeps/alpha/divl.S: Use them.
+	* sysdeps/alpha/divq.S: Likewise.
+	* sysdeps/alpha/divqu.S: Likewise.
+	* sysdeps/alpha/reml.S: Likewise.
+	* sysdeps/alpha/remq.S: Likewise.
+	* sysdeps/alpha/remqu.S: Likewise.
+
+2004-05-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* math/tgmath.h (__TGMATH_UNARY_REAL_IMAG_RET_REAL):Define.
+	(cimag): Use it.
+	(creal): Likewise.
+	* math/Makefile (tests): Add bug-tgmath1.
+	* math/bug-tgmath1.c: New file.
+
+2004-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/alpha/atomicity.h: Remove.
+	* sysdeps/generic/atomicity.h: Remove.
+
+2004-05-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sysdeps/i386/i486/bits/string.h (strpbrk): Cast return to
+	char *.
+
+2004-04-22  David Mosberger  <davidm@hpl.hp.com>
+
+	* sysdeps/unix/sysv/linux/ia64/Makefile (librt-routines): Mention
+	  rt-sysdep.
+	* sysdeps/unix/sysv/linux/ia64/rt-sysdep.S: New file.
+
+	* sysdeps/ia64/strcat.c: New file.
+	* sysdeps/ia64/strcat.S: Delete.
+
+2004-05-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/ia64/sysdep.S (USE___THREAD): Remove
+	defined.
+
+2004-04-23  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/ia64/fpu/libm_support.h (__libm_error_support): Add
+	libc_hidden_proto.  Define to __GI___libm_error_support for
+	assembly going into libc.so.
+	* sysdeps/ia64/fpu/libc_libm_error.c (__libm_error_support): Add
+	libc_hidden_def.
+
+	* include/libc-symbols.h (HIDDEN_BUILTIN_JUMPTARGET): Define.
+	* sysdeps/ia64/bcopy.S (bcopy): Use it for jump to memmove.
+
+	* sysdeps/unix/sysv/linux/ia64/sysdep.S (__syscall_error): Access
+	gprel errno if RTLD_PRIVATE_ERRNO or __thread __libc_errno/errno
+	if USE___THREAD.
+
+2004-05-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/bsd/bits/fcntl.h (F_SETOWN, F_GETOWN): Define if
+	__USE_BSD or __USE_UNIX98.
+	* sysdeps/unix/bsd/ultrix4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
+	* sysdeps/unix/bsd/bsd4.4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
+	* sysdeps/unix/bsd/sun/sunos4/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/common/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
+	* sysdeps/unix/sysv/aix/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
+	* sysdeps/unix/sysv/irix4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
+	* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/s390/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/cris/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sh/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/i386/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/ia64/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/arm/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (F_SETOWN, F_GETOWN):
+	Likewise.
+	* sysdeps/generic/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
+	* sysdeps/mach/hurd/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
+	* io/sys/stat.h (S_ISSOCK, S_IFSOCK): Likewise.
+
+2004-05-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/Versions (libc): Remove __libc_wait, __libc_waitpid,
+	__libc_pause, __libc_nanosleep, __libc_pread, __libc_pread64,
+	__libc_pwrite64, __waitid and __pselect @@GLIBC_PRIVATE.
+	* stdlib/Versions (libc): Remove __on_exit@@GLIBC_PRIVATE.
+	* sysdeps/unix/sysv/linux/Versions (libc): Remove
+	__libc_sigaction@@GLIBC_PRIVATE.
+	* sysdeps/unix/sysv/linux/x86_64/Versions (libc): Remove
+	__modify_ldt@@GLIBC_PRIVATE.
+	* socket/Versions (libc): Remove __libc_accept, __libc_send,
+	__libc_recvfrom, __libc_recvmsg, __libc_sendmsg, __libc_recv,
+	__libc_sendto and __libc_connect @@GLIBC_PRIVATE.
+	* stdio-common/Versions (libc): Remove
+	_itoa_upper_digits@@GLIBC_PRIVATE.
+	* resolv/Versions (libresolv): Remove __ns_samename@@GLIBC_PRIVATE.
+	* misc/Versions (libc): Remove __libc_fsync, __libc_msync,
+	__libc_readv and __libc_writev @@GLIBC_PRIVATE.
+	* termios/Versions (libc): Remove __libc_tcdrain@@GLIBC_PRIVATE.
+	* io/Versions (libc): Remove __libc_open, __libc_close, __libc_read,
+	__libc_write, __libc_lseek, __libc_fcntl, __libc_open64 and
+	__libc_lseek64 @@GLIBC_PRIVATE.
+
+2004-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/dl-load.c (open_verify): Move e_phentsize check after e_type
+	check.
+
+2004-04-29  Steven Munroe  <sjmunroe@us.ibm.com>
+
+	* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_floor.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_llrint.c: Removed.
+	* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_llrintf.c: Removed.
+	* sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_llround.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_lround.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_lroundf.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_rint.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_rintf.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_round.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: New file.
+	* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: New file.
+
+	* math/test-misc.c [LDBL_MANT_DIG == 106](main): Correct LDBL_MAX
+	mantissa for AIX long double format.
+	* misc/qefgcvt.c [LDBL_MANT_DIG == 106] (NDIGIT_MAX): Define for AIX
+	long double format.
+	* misc/qefgcvt_r.c [LDBL_MANT_DIG == 106] (NDIGIT_MAX): Likewise.
+	* stdlib/fpioconst.c [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__>1024]
+	(_fpioconst_pow10): AIX long double format has same exponent range as
+	double.
+	* stdlib/fpioconst.h [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__>1024]
+	(LDBL_MAX_10_EXP_LOG): AIX long double format has same exponent range
+	as double.
+
+2004-04-23  Art Haas  <ahaas@airmail.net>
+
+	* sysdeps/unix/sysv/linux/kernel-features.h: Add 'defined'.
+
+2004-04-28  Carlos O'Donell  <carlos@baldric.uwo.ca>
+
+	* sysdeps/unix/sysv/linux/mq_getattr.c: Include <stddef.h>.
+	* sysdeps/unix/sysv/linux/mq_notify.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_open.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_receive.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_send.c: Likewise.
+
+2004-04-29  Philip Blundell  <pb@nexus.co.uk>
+
+	* sysdeps/arm/dl-machine.h (RTLD_START): Avoid unnecessary GOT
+	entries.
+
+2004-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* manual/resource.texi (sched_setaffinity, sched_getaffinity): Fix
+	prototypes and description [BZ #131].
+
+	* string/bits/string2.h (strpbrk): Cast NULL to char * [BZ #130].
+	Patch by Ed Catmur <ed@catmur.co.uk>.
+	* string/tst-inlcall.c (main): Add test for strpbrk.
+
+	[BZ #140]
+	* sysdeps/unix/sysv/linux/sys/sysctl.h: Remove linux/compiler.h
+	include.
+	(_LINUX_KERNEL_H, _LINUX_TYPES_H, _LINUX_LIST_H): Only define if not
+	yet defined, #undef back after including linux/sysctl.h if defined
+	here.
+	(__LINUX_COMPILER_H, __user): Define if not yet defined, #undef
+	back after including linux/sysctl.h if defined here.
+
+	* sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c (_Qp_qtoi): Use %f31
+	for single precision register, add it to __asm clobbers [BZ #139].
+	* sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c (_Qp_qtoui): Use %f31
+	for single precision register, add it to __asm clobbers.
+	* sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c (_Qp_qtoux): Use fqtox
+	instead of fqtoi in QP_HANDLE_EXCEPTIONS.
+	* sysdeps/sparc/sparc64/soft-fp/qp_qtox.c (_Qp_qtox): Likewise.
+	Reported by M. H. VanLeeuwen <vanl@megsinet.net>.
+
+2004-04-23  Andreas Schwab  <schwab@suse.de>
+
+	* sysdeps/unix/sysv/linux/m68k/register-dump.h: Use
+	__attribute_used__.
+
+2004-04-22  Philip Blundell  <philb@gnu.org>
+
+	* sysdeps/arm/dl-machine.h (elf_machine_rela): Don't use INTUSE
+	when calling _dl_signal_error.
+	(elf_machine_rel): Likewise.
+
+2004-04-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/ia64/setjmp.S: Define _GI___sigsetjmp
+	and use it internally instead of __sigsetjmp.
+	* sysdeps/ia64/fpu/s_frexpf.c (frexpf): Use _GI___libm_frexp_4f.
+	* sysdeps/ia64/fpu/s_frexpl.c (frexpl): Use _GI___libm_frexp_4l.
+	* sysdeps/ia64/fpu/libm_frexp4.S: Define _GI___libm_frexp_4.
+	* sysdeps/ia64/fpu/libm_frexp4f.S: Define _GI___libm_frexp_4f.
+	* sysdeps/ia64/fpu/libm_frexp4l.S: Define _GI___libm_frexp_4l.
+	* sysdeps/ia64/fpu/s_frexp.c (frexp): Use _GI___libm_frexp_4.
+	* sysdeps/ia64/fpu/libm_support.h: Declare _GI___libm_frexp_4,
+	_GI___libm_frexp_4f, _GI___libm_frexp_4l.
+	* sysdeps/ia64/fpu/bits/mathinline.h: New file.
+	* sysdeps/unix/sysv/linux/ia64/__start_context.S: Use
+	HIDDEN_JUMPTARGET for exit call.
+	* sysdeps/unix/sysv/linux/ia64/clone2.S: Use HIDDEN_JUMPTARGET for
+	_exit call.
+	* sysdeps/ia64/bcopy.S: Use HIDDEN_JUMPTARGET for memmove call.
+	* sysdeps/ia64/strcat.S: Use HIDDEN_JUMPTARGET for strlen and
+	strcpy calls.
+
+2004-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	* posix/tst-chmod.c (do_test): Fix a typo.
+
+	* elf/lateglobal.c (main): Fix error checks.
+	Patch by Stephen Clarke <stephen.clarke@st.com>.
+
+	* manual/ctype.texi (isblank, iswblank): Mark as ISO functions,
+	mention they have been added in ISO C99.
+	Reported by Ben Pfaff <blp@cs.stanford.edu>.
+
+2004-03-31  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sysdeps/ieee754/ldbl-128/bits/huge_vall.h: Fix typo.
+
+2004-04-20  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/shm_open.c (shm_unlink): Change EPERM into
+	EACCES.
+
+2004-04-20  Jakub Jelinek  <jakub@redhat.com>
+
+	* stdio-common/vfscanf.c (_IO_vfscanf): Revert last %% whitespace
+	handling change.
+	* stdio-common/tst-sscanf.c (int_tests): Adjust.
+
+	* nis/nss-nis.c: Include stdlib.h.
+
+	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Shut up a
+	warning.
+	* sysdeps/sparc/sparc64/memcmp.S (memcmp): Remove BP_SYM () from
+	libc_hidden_builtin_def.
+
+2004-04-20  Jim Meyering  <jim@meyering.net>
+
+	* misc/error.c (error_tail): Don't leak upon realloc failure.
+
+2004-04-20  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+	* sysdeps/unix/sysv/linux/dl-execstack.c (_dl_make_stack_executable):
+	Use RETURN_ADDRESS instead of __builtin_return_address.
+
+2004-04-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/mq_unlink.c: Rewrite to produce more
+	compact code.
+
+2004-04-20  Jakub Jelinek  <jakub@redhat.com>
+
+	* stdio-common/vfscanf.c (_IO_vfscanf): When skipping whitespace,
+	do input_error () instead of conv_error () and don't look at errno.
+	Don't eat any whitespace before %% if skip_space == 0.
+	* stdio-common/tst-sscanf.c (int_tests): New array.
+	(main): Run int_tests.
+
+
+See ChangeLog.14 for earlier changes.
diff --git a/Makerules b/Makerules
index 887d7275c3..57268a6988 100644
--- a/Makerules
+++ b/Makerules
@@ -972,7 +972,7 @@ $(inst_libdir)/libc.so: $(common-objpfx)format.lds \
 	 cat $<; \
 	 echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
 	      '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
-	      ')' \
+	      ' AS_NEEDED (' $(inst_slibdir)/$(rtld-installed-name) ') )' \
 	) > $@.new
 	mv -f $@.new $@
 
diff --git a/NEWS b/NEWS
index f73d3287c4..cd975c998b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,17 @@
-GNU C Library NEWS -- history of user-visible changes.  2004-12-19
-Copyright (C) 1992-2002,2003,2004 Free Software Foundation, Inc.
+GNU C Library NEWS -- history of user-visible changes.  2005-2-21
+Copyright (C) 1992-2004, 2005 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.
 
+Version 2.4
+
+* More overflow detection functions.
+
+* New iconv converters for IBM1025, IBM1122, IBM1137, IBM1153,
+  IBM1154, IBM1155, IBM1156, IBM1157, and IBM1158 contributed by Jiro Sekiba.
+
 Version 2.3.4
 
 * Support for RFC 3678.  Real implementations exist only for Linux so far.
diff --git a/Versions.def b/Versions.def
index 33409f1143..45b2127914 100644
--- a/Versions.def
+++ b/Versions.def
@@ -20,6 +20,7 @@ libc {
   GLIBC_2.3.2
   GLIBC_2.3.3
   GLIBC_2.3.4
+  GLIBC_2.4
 %ifdef USE_IN_LIBIO
   HURD_CTHREADS_0.3
 %endif
diff --git a/crypt/crypt_util.c b/crypt/crypt_util.c
index 5467a97b8a..0db5be7b0f 100644
--- a/crypt/crypt_util.c
+++ b/crypt/crypt_util.c
@@ -902,7 +902,7 @@ __setkey_r(__key, __data)
       c = c << 1 | *__key++;
     ktab[i] = c >> 1;
   }
-  _ufc_mk_keytab_r(ktab, __data);
+  _ufc_mk_keytab_r((char *) ktab, __data);
 }
 weak_alias (__setkey_r, setkey_r)
 
diff --git a/csu/Makefile b/csu/Makefile
index 20709c3c8d..bd82641d41 100644
--- a/csu/Makefile
+++ b/csu/Makefile
@@ -241,7 +241,7 @@ $(objpfx)version-info.h: $(common-objpfx)config.make $(all-Banner-files)
 	 esac; \
 	 files="$(all-Banner-files)";				\
 	 if test -n "$$files"; then				\
-	   echo "\"Available extensions:\\n\"";			\
+	   printf '"Available extensions:\\n"\n';		\
 	   sed -e '/^#/d' -e 's/^[[:space:]]*/	/'		\
 	       -e 's/^\(.*\)$$/\"\1\\n\"/' $$files;		\
 	 fi) > $@T
diff --git a/csu/elf-init.c b/csu/elf-init.c
index dbd2a91cb7..fcf6a04315 100644
--- a/csu/elf-init.c
+++ b/csu/elf-init.c
@@ -110,7 +110,7 @@ __libc_csu_init (void)
 void
 __libc_csu_fini (void)
 {
-#if 0
+#ifndef LIBC_NONSHARED
 #ifdef HAVE_INITFINI_ARRAY
   size_t i = __fini_array_end - __fini_array_start;
   while (i-- > 0)
diff --git a/ctype/ctype-extn.c b/ctype/ctype-extn.c
index b54080d7ac..d6851d4fbc 100644
--- a/ctype/ctype-extn.c
+++ b/ctype/ctype-extn.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1997,1999,2000,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,9 +20,9 @@
 #include <ctype.h>
 
 #define __ctype_tolower \
-  ((uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128)
+  ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128)
 #define __ctype_toupper \
-  ((uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128)
+  ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128)
 
 /* Real function versions of the non-ANSI ctype functions.  isblank is
    now in ISO C99 but we leave it here.  */
diff --git a/debug/Makefile b/debug/Makefile
index 6df06116b7..c904913c35 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1998,1999,2000,2001,2004,2005 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -24,12 +24,16 @@ subdir	:= debug
 headers	:= execinfo.h
 distribute = sigcontextinfo.h register-dump.h frame.h
 
-routines := backtrace backtracesyms backtracesymsfd noophooks \
+routines  = backtrace backtracesyms backtracesymsfd noophooks \
 	    memcpy_chk memmove_chk mempcpy_chk memset_chk stpcpy_chk \
 	    strcat_chk strcpy_chk strncat_chk strncpy_chk \
 	    sprintf_chk vsprintf_chk snprintf_chk vsnprintf_chk \
 	    printf_chk fprintf_chk vprintf_chk vfprintf_chk \
-	    gets_chk chk_fail readonly-area
+	    gets_chk chk_fail readonly-area fgets_chk fgets_u_chk \
+	    read_chk pread_chk pread64_chk recv_chk recvfrom_chk \
+	    readlink_chk getwd_chk getcwd_chk \
+	    $(static-only-routines)
+static-only-routines := warning-nop
 
 CFLAGS-backtrace.c = -fno-omit-frame-pointer
 CFLAGS-sprintf_chk.c = -D_IO_MTSAFE_IO
@@ -41,6 +45,13 @@ CFLAGS-fprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions)
 CFLAGS-vprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions)
 CFLAGS-vfprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions)
 CFLAGS-gets_chk.c = -D_IO_MTSAFE_IO $(exceptions)
+CFLAGS-fgets_chk.c = -D_IO_MTSAFE_IO $(exceptions)
+CFLAGS-fgets_u_chk.c = -D_IO_MTSAFE_IO $(exceptions)
+CFLAGS-read_chk.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pread_chk.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pread64_chk.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-recv_chk.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-recvfrom_chk.c = -fexceptions -fasynchronous-unwind-tables
 
 tests = backtrace-tst tst-chk1 tst-chk2 tst-chk3 \
 	test-strcpy_chk test-stpcpy_chk
diff --git a/debug/Versions b/debug/Versions
index 07d6fbb830..fd97834171 100644
--- a/debug/Versions
+++ b/debug/Versions
@@ -18,4 +18,10 @@ libc {
     __printf_chk; __fprintf_chk; __vprintf_chk; __vfprintf_chk;
     __gets_chk;
   }
+  GLIBC_2.4 {
+    __fgets_chk; __fgets_unlocked_chk;
+    __read_chk; __pread_chk; __pread64_chk;
+    __readlink_chk; __getcwd_chk; __getwd_chk;
+    __recv_chk; __recvfrom_chk;
+  }
 }
diff --git a/debug/chk_fail.c b/debug/chk_fail.c
index 6921ca4686..0cfca295a9 100644
--- a/debug/chk_fail.c
+++ b/debug/chk_fail.c
@@ -28,7 +28,7 @@ __chk_fail (void)
 {
   /* The loop is added only to keep gcc happy.  */
   while (1)
-    __libc_message (1, "*** buffer overflow detected ***: %s terminated\n",
+    __libc_message (2, "*** buffer overflow detected ***: %s terminated\n",
 		    __libc_argv[0] ?: "<unknown>");
 }
 libc_hidden_def (__chk_fail)
diff --git a/debug/fgets_chk.c b/debug/fgets_chk.c
new file mode 100644
index 0000000000..27fbede7f0
--- /dev/null
+++ b/debug/fgets_chk.c
@@ -0,0 +1,67 @@
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2002, 2003, 2005
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   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.
+
+   As a special exception, if you link the code in this file with
+   files compiled with a GNU compiler to produce an executable,
+   that does not cause the resulting executable to be covered by
+   the GNU Lesser General Public License.  This exception does not
+   however invalidate any other reasons why the executable file
+   might be covered by the GNU Lesser General Public License.
+   This exception applies to code released by its copyright holders
+   in files containing the exception.  */
+
+#include "libioP.h"
+#include <stdio.h>
+#include <sys/param.h>
+
+char *
+__fgets_chk (buf, size, n, fp)
+     char *buf;
+     size_t size;
+     int n;
+     _IO_FILE *fp;
+{
+  _IO_size_t count;
+  char *result;
+  CHECK_FILE (fp, NULL);
+  if (n <= 0)
+    return NULL;
+  _IO_acquire_lock (fp);
+  /* This is very tricky since a file descriptor may be in the
+     non-blocking mode. The error flag doesn't mean much in this
+     case. We return an error only when there is a new error. */
+  int old_error = fp->_IO_file_flags & _IO_ERR_SEEN;
+  fp->_IO_file_flags &= ~_IO_ERR_SEEN;
+  count = INTUSE(_IO_getline) (fp, buf, MIN ((size_t) n - 1, size), '\n', 1);
+  /* If we read in some bytes and errno is EAGAIN, that error will
+     be reported for next read. */
+  if (count == 0 || ((fp->_IO_file_flags & _IO_ERR_SEEN)
+		     && errno != EAGAIN))
+    result = NULL;
+  else if (count >= size)
+    __chk_fail ();
+  else
+    {
+      buf[count] = '\0';
+      result = buf;
+    }
+  fp->_IO_file_flags |= old_error;
+  _IO_release_lock (fp);
+  return result;
+}
diff --git a/debug/fgets_u_chk.c b/debug/fgets_u_chk.c
new file mode 100644
index 0000000000..324d7e371b
--- /dev/null
+++ b/debug/fgets_u_chk.c
@@ -0,0 +1,65 @@
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2002, 2003, 2005
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   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.
+
+   As a special exception, if you link the code in this file with
+   files compiled with a GNU compiler to produce an executable,
+   that does not cause the resulting executable to be covered by
+   the GNU Lesser General Public License.  This exception does not
+   however invalidate any other reasons why the executable file
+   might be covered by the GNU Lesser General Public License.
+   This exception applies to code released by its copyright holders
+   in files containing the exception.  */
+
+#include "libioP.h"
+#include <stdio.h>
+#include <sys/param.h>
+
+char *
+__fgets_unlocked_chk (buf, size, n, fp)
+     char *buf;
+     size_t size;
+     int n;
+     _IO_FILE *fp;
+{
+  _IO_size_t count;
+  char *result;
+  CHECK_FILE (fp, NULL);
+  if (n <= 0)
+    return NULL;
+  /* This is very tricky since a file descriptor may be in the
+     non-blocking mode. The error flag doesn't mean much in this
+     case. We return an error only when there is a new error. */
+  int old_error = fp->_IO_file_flags & _IO_ERR_SEEN;
+  fp->_IO_file_flags &= ~_IO_ERR_SEEN;
+  count = INTUSE(_IO_getline) (fp, buf, MIN ((size_t) n - 1, size), '\n', 1);
+  /* If we read in some bytes and errno is EAGAIN, that error will
+     be reported for next read. */
+  if (count == 0 || ((fp->_IO_file_flags & _IO_ERR_SEEN)
+		     && errno != EAGAIN))
+    result = NULL;
+  else if (count >= size)
+    __chk_fail ();
+  else
+    {
+      buf[count] = '\0';
+      result = buf;
+    }
+  fp->_IO_file_flags |= old_error;
+  return result;
+}
diff --git a/debug/getcwd_chk.c b/debug/getcwd_chk.c
new file mode 100644
index 0000000000..cb864c858e
--- /dev/null
+++ b/debug/getcwd_chk.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/param.h>
+
+
+char *
+__getcwd_chk (char *buf, size_t size, size_t buflen)
+{
+  if (size > buflen)
+    __chk_fail ();
+
+  return __getcwd (buf, size);
+}
diff --git a/debug/getwd_chk.c b/debug/getwd_chk.c
new file mode 100644
index 0000000000..898af28d3f
--- /dev/null
+++ b/debug/getwd_chk.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/param.h>
+
+
+char *
+__getwd_chk (char *buf, size_t buflen)
+{
+  char *res = __getcwd (buf, buflen);
+  if (res == NULL && errno == ERANGE)
+    __chk_fail ();
+  return res;
+}
+
+link_warning (getwd,
+	      "the `getwd' function is dangerous and should not be used.")
diff --git a/debug/pread64_chk.c b/debug/pread64_chk.c
new file mode 100644
index 0000000000..93e5151ddc
--- /dev/null
+++ b/debug/pread64_chk.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <unistd.h>
+#include <sys/param.h>
+
+
+ssize_t
+__pread64_chk (int fd, void *buf, size_t nbytes, off64_t offset, size_t buflen)
+{
+  if (nbytes > buflen)
+    __chk_fail ();
+
+  return __pread64 (fd, buf, offset, nbytes);
+}
diff --git a/debug/pread_chk.c b/debug/pread_chk.c
new file mode 100644
index 0000000000..24c13103dd
--- /dev/null
+++ b/debug/pread_chk.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <unistd.h>
+#include <sys/param.h>
+
+
+ssize_t
+__pread_chk (int fd, void *buf, size_t nbytes, off_t offset, size_t buflen)
+{
+  if (nbytes > buflen)
+    __chk_fail ();
+
+  return __pread (fd, buf, offset, nbytes);
+}
diff --git a/debug/read_chk.c b/debug/read_chk.c
new file mode 100644
index 0000000000..da2bc945b7
--- /dev/null
+++ b/debug/read_chk.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <unistd.h>
+#include <sys/param.h>
+#ifdef HAVE_INLINED_SYSCALLS
+# include <errno.h>
+# include <sysdep.h>
+#endif
+
+
+ssize_t
+__read_chk (int fd, void *buf, size_t nbytes, size_t buflen)
+{
+  if (nbytes > buflen)
+    __chk_fail ();
+
+#ifdef HAVE_INLINED_SYSCALLS
+  return INLINE_SYSCALL (read, 3, fd, buf, nbytes);
+#else
+  return __read (fd, buf, nbytes);
+#endif
+}
diff --git a/debug/readlink_chk.c b/debug/readlink_chk.c
new file mode 100644
index 0000000000..ac18ee2c29
--- /dev/null
+++ b/debug/readlink_chk.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <unistd.h>
+#include <sys/param.h>
+#ifdef HAVE_INLINED_SYSCALLS
+# include <errno.h>
+# include <sysdep.h>
+#endif
+
+
+ssize_t
+__readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
+{
+  if (len > buflen)
+    __chk_fail ();
+
+#ifdef HAVE_INLINED_SYSCALLS
+  return INLINE_SYSCALL (readlink, 3, path, buf, len);
+#else
+  return __readlink (path, buf, len);
+#endif
+}
diff --git a/debug/recv_chk.c b/debug/recv_chk.c
new file mode 100644
index 0000000000..7a49d17234
--- /dev/null
+++ b/debug/recv_chk.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sys/param.h>
+#include <sys/socket.h>
+
+
+ssize_t
+__recv_chk (int fd, void *buf, size_t n, size_t buflen, int flags)
+{
+  /* In case N is greater than BUFLEN, we read BUFLEN+1 bytes.
+     This might overflow the buffer but the damage is reduced to just
+     one byte.  And the program will terminate right away.  */
+  ssize_t nrecv = __recv (fd, buf, MIN (n, buflen + 1), flags);
+  if (nrecv > 0 && (size_t) nrecv > buflen)
+    __chk_fail ();
+  return nrecv;
+}
diff --git a/debug/recvfrom_chk.c b/debug/recvfrom_chk.c
new file mode 100644
index 0000000000..e1b1da7f6b
--- /dev/null
+++ b/debug/recvfrom_chk.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sys/param.h>
+#include <sys/socket.h>
+
+
+ssize_t
+__recvfrom_chk (int fd, void *buf, size_t n, size_t buflen, int flags,
+		__SOCKADDR_ARG addr, socklen_t *addr_len)
+{
+  /* In case N is greater than BUFLEN, we read BUFLEN+1 bytes.
+     This might overflow the buffer but the damage is reduced to just
+     one byte.  And the program will terminate right away.  */
+  ssize_t nrecv = __recvfrom (fd, buf, MIN (n, buflen + 1), flags,
+			      addr, addr_len);
+  if (nrecv > 0 && (size_t) nrecv > buflen)
+    __chk_fail ();
+  return nrecv;
+}
diff --git a/debug/tst-chk1.c b/debug/tst-chk1.c
index b4607bc9f0..ea059e6f85 100644
--- a/debug/tst-chk1.c
+++ b/debug/tst-chk1.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
 
@@ -455,6 +455,85 @@ do_test (void)
   CHK_FAIL_END
 #endif
 
+  rewind (stdin);
+
+  if (fgets (buf, sizeof (buf), stdin) != buf
+      || memcmp (buf, "abcdefgh\n", 10))
+    FAIL ();
+  if (fgets (buf, sizeof (buf), stdin) != buf || memcmp (buf, "ABCDEFGHI", 10))
+    FAIL ();
+
+#if __USE_FORTIFY_LEVEL >= 1
+  CHK_FAIL_START
+  if (fgets (buf, sizeof (buf) + 1, stdin) != buf)
+    FAIL ();
+  CHK_FAIL_END
+#endif
+
+  rewind (stdin);
+
+  if (fgets_unlocked (buf, sizeof (buf), stdin) != buf
+      || memcmp (buf, "abcdefgh\n", 10))
+    FAIL ();
+  if (fgets_unlocked (buf, sizeof (buf), stdin) != buf
+      || memcmp (buf, "ABCDEFGHI", 10))
+    FAIL ();
+
+#if __USE_FORTIFY_LEVEL >= 1
+  CHK_FAIL_START
+  if (fgets_unlocked (buf, sizeof (buf) + 1, stdin) != buf)
+    FAIL ();
+  CHK_FAIL_END
+#endif
+
+  lseek (fileno (stdin), 0, SEEK_SET);
+
+  if (read (fileno (stdin), buf, sizeof (buf) - 1) != sizeof (buf) - 1
+      || memcmp (buf, "abcdefgh\n", 9))
+    FAIL ();
+  if (read (fileno (stdin), buf, sizeof (buf) - 1) != sizeof (buf) - 1
+      || memcmp (buf, "ABCDEFGHI", 9))
+    FAIL ();
+
+#if __USE_FORTIFY_LEVEL >= 1
+  CHK_FAIL_START
+  if (read (fileno (stdin), buf, sizeof (buf) + 1) != sizeof (buf) + 1)
+    FAIL ();
+  CHK_FAIL_END
+#endif
+
+  if (pread (fileno (stdin), buf, sizeof (buf) - 1, 0) != sizeof (buf) - 1
+      || memcmp (buf, "abcdefgh\n", 9))
+    FAIL ();
+  if (pread (fileno (stdin), buf, sizeof (buf) - 1, sizeof (buf) - 1)
+      != sizeof (buf) - 1
+      || memcmp (buf, "ABCDEFGHI", 9))
+    FAIL ();
+
+#if __USE_FORTIFY_LEVEL >= 1
+  CHK_FAIL_START
+  if (pread (fileno (stdin), buf, sizeof (buf) + 1, 2 * sizeof (buf))
+      != sizeof (buf) + 1)
+    FAIL ();
+  CHK_FAIL_END
+#endif
+
+  if (pread64 (fileno (stdin), buf, sizeof (buf) - 1, 0) != sizeof (buf) - 1
+      || memcmp (buf, "abcdefgh\n", 9))
+    FAIL ();
+  if (pread64 (fileno (stdin), buf, sizeof (buf) - 1, sizeof (buf) - 1)
+      != sizeof (buf) - 1
+      || memcmp (buf, "ABCDEFGHI", 9))
+    FAIL ();
+
+#if __USE_FORTIFY_LEVEL >= 1
+  CHK_FAIL_START
+  if (pread64 (fileno (stdin), buf, sizeof (buf) + 1, 2 * (sizeof (buf) - 1))
+      != sizeof (buf) + 1)
+    FAIL ();
+  CHK_FAIL_END
+#endif
+
   if (freopen (temp_filename, "r", stdin) == NULL)
     {
       puts ("could not open temporary file");
diff --git a/debug/warning-nop.c b/debug/warning-nop.c
new file mode 100644
index 0000000000..b4ebbac4dd
--- /dev/null
+++ b/debug/warning-nop.c
@@ -0,0 +1,40 @@
+/* Dummy nop functions to elicit link-time warnings.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sys/cdefs.h>
+
+static void
+nop (void)
+{
+}
+
+/* Don't insert any other #include's before this #undef!  */
+
+#undef __warndecl
+#define __warndecl(name, msg) \
+  extern void name (void) __attribute__ ((alias ("nop"))) attribute_hidden; \
+  link_warning (name, msg)
+
+#undef	__USE_FORTIFY_LEVEL
+#define __USE_FORTIFY_LEVEL 99
+
+/* Following here we need an #include for each public header file
+   that uses __warndecl.  */
+
+#include <string.h>
diff --git a/dlfcn/dlerror.c b/dlfcn/dlerror.c
index 8789f4f68b..1254381f2b 100644
--- a/dlfcn/dlerror.c
+++ b/dlfcn/dlerror.c
@@ -1,5 +1,5 @@
 /* Return error detail for failing <dlfcn.h> functions.
-   Copyright (C) 1995-2000,2002,2003,2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-2000,2002,2003,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -180,13 +180,30 @@ init (void)
     static_buf = &last_result;
 }
 
+
+static void
+check_free (struct dl_action_result *rec)
+{
+  if (rec->errstring != NULL
+      && strcmp (rec->errstring, "out of memory") != 0)
+    {
+      /* We can free the string only if the allocation happened in the
+	 C library used by the dynamic linker.  This means, it is
+	 always the C library in the base namespave.  */
+      struct link_map *map = NULL;
+      Dl_info info;
+      if (_dl_addr (check_free, &info, &map, NULL) != 0
+	  && map != NULL && map->l_ns == 0)
+	free ((char *) rec->errstring);
+    }
+}
+
+
 static void
 __attribute__ ((destructor))
 fini (void)
 {
-  if (last_result.errstring != NULL
-      && strcmp (last_result.errstring, "out of memory") != 0)
-    free ((char *) last_result.errstring);
+  check_free (&last_result);
 }
 
 
@@ -194,11 +211,7 @@ fini (void)
 static void
 free_key_mem (void *mem)
 {
-  struct dl_action_result *result = (struct dl_action_result *) mem;
-
-  if (result->errstring != NULL
-      && strcmp (result->errstring, "out of memory") != 0)
-    free ((char *) result->errstring);
+  check_free ((struct dl_action_result *) mem);
 
   free (mem);
   __libc_setspecific (key, NULL);
diff --git a/elf/Makefile b/elf/Makefile
index 47e6ea4d58..8a8bb3a239 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -141,7 +141,10 @@ tests-static = tst-tls1-static tst-tls2-static
 ifeq (yesyesyes,$(build-static)$(build-shared)$(elf))
 tests-static += tst-tls9-static
 tst-tls9-static-ENV = \
-	LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)dlfcn
+       LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)dlfcn
+endif
+ifeq (yes,$(have-initfini-array))
+tests-static += tst-array1-static
 endif
 tests += $(tests-static)
 endif
@@ -701,6 +704,10 @@ $(objpfx)tst-array1.out: $(objpfx)tst-array1
 	  $(objpfx)tst-array1 > $@
 	cmp $@ tst-array1.exp > /dev/null
 
+$(objpfx)tst-array1-static.out: $(objpfx)tst-array1-static
+	$(objpfx)tst-array1-static > $@
+	cmp $@ tst-array1.exp > /dev/null
+
 $(objpfx)tst-array2: $(objpfx)tst-array2dep.so
 $(objpfx)tst-array2.out: $(objpfx)tst-array2
 	$(elf-objpfx)$(rtld-installed-name) \
diff --git a/elf/dl-addr.c b/elf/dl-addr.c
index 685cab9be8..c56736ceb1 100644
--- a/elf/dl-addr.c
+++ b/elf/dl-addr.c
@@ -1,5 +1,5 @@
 /* Locate the shared object symbol nearest a given address.
-   Copyright (C) 1996-2003, 2004   Free Software Foundation, Inc.
+   Copyright (C) 1996-2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,16 +28,12 @@ _dl_addr (const void *address, Dl_info *info,
 	  struct link_map **mapp, const ElfW(Sym) **symbolp)
 {
   const ElfW(Addr) addr = DL_LOOKUP_ADDRESS (address);
-  struct link_map *match;
-  const ElfW(Sym) *symtab, *matchsym, *symtabend;
-  const char *strtab;
-  ElfW(Word) strtabsize;
 
   /* Protect against concurrent loads and unloads.  */
   __rtld_lock_lock_recursive (GL(dl_load_lock));
 
   /* Find the highest-addressed object that ADDRESS is not below.  */
-  match = NULL;
+  struct link_map *match = NULL;
   for (Lmid_t ns = 0; ns < DL_NNS; ++ns)
     for (struct link_map *l = GL(dl_ns)[ns]._ns_loaded; l; l = l->l_next)
       if (addr >= l->l_map_start && addr < l->l_map_end)
@@ -72,11 +68,12 @@ _dl_addr (const void *address, Dl_info *info,
 	  && match->l_type == lt_executable)
 	info->dli_fname = _dl_argv[0];
 
-      symtab = (const void *) D_PTR (match, l_info[DT_SYMTAB]);
-      strtab = (const void *) D_PTR (match, l_info[DT_STRTAB]);
+      const ElfW(Sym) *symtab = D_PTR (match, l_info[DT_SYMTAB]);
+      const char *strtab = (const char *) D_PTR (match, l_info[DT_STRTAB]);
 
-      strtabsize = match->l_info[DT_STRSZ]->d_un.d_val;
+      ElfW(Word) strtabsize = match->l_info[DT_STRSZ]->d_un.d_val;
 
+      const ElfW(Sym) *symtabend;
       if (match->l_info[DT_HASH] != NULL)
 	symtabend = (symtab
 		     + ((Elf_Symndx *) D_PTR (match, l_info[DT_HASH]))[1]);
@@ -90,6 +87,7 @@ _dl_addr (const void *address, Dl_info *info,
       /* We assume that the string table follows the symbol table,
 	 because there is no way in ELF to know the size of the
 	 dynamic symbol table!!  */
+      const ElfW(Sym) *matchsym;
       for (matchsym = NULL; (void *) symtab < (void *) symtabend; ++symtab)
 	if (addr >= match->l_addr + symtab->st_value
 #if defined USE_TLS
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 088b2224e2..97e1e0089c 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -110,6 +110,8 @@ int __stack_prot attribute_hidden attribute_relro
   = PROT_GROWSDOWN;
 #elif _STACK_GROWS_UP && defined PROT_GROWSUP
   = PROT_GROWSUP;
+#else
+  = 0;
 #endif
 
 
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index fdb076951d..24fc89af10 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -1,5 +1,5 @@
 /* Look up a symbol in the loaded objects.
-   Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -395,11 +395,13 @@ _dl_debug_bindings (const char *undef_name, struct link_map *undef_map,
 
   if (GLRO(dl_debug_mask) & DL_DEBUG_BINDINGS)
     {
-      _dl_debug_printf ("binding file %s to %s: %s symbol `%s'",
+      _dl_debug_printf ("binding file %s [%lu] to %s [%lu]: %s symbol `%s'",
 			(reference_name[0]
 			 ? reference_name
 			 : (rtld_progname ?: "<main program>")),
+			undef_map->l_ns,
 			value->m->l_name[0] ? value->m->l_name : rtld_progname,
+			value->m->l_ns,
 			protected ? "protected" : "normal", undef_name);
       if (version)
 	_dl_debug_printf_c (" [%s]\n", version->name);
diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c
index b680683198..2d309fb210 100644
--- a/elf/dl-reloc.c
+++ b/elf/dl-reloc.c
@@ -1,5 +1,5 @@
 /* Relocate a shared object and resolve its references to other loaded objects.
-   Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -124,8 +124,10 @@ _dl_nothread_init_static_tls (struct link_map *map)
 # endif
 
   /* Fill in the DTV slot so that a later LD/GD access will find it.  */
-  THREAD_DTV ()[map->l_tls_modid].pointer.val = dest;
-  THREAD_DTV ()[map->l_tls_modid].pointer.is_static = true;
+  dtv_t *dtv = THREAD_DTV ();
+  assert (map->l_tls_modid <= dtv[-1].counter);
+  dtv[map->l_tls_modid].pointer.val = dest;
+  dtv[map->l_tls_modid].pointer.is_static = true;
 
   /* Initialize the memory.  */
   memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h
index 5118144174..1d6806f50c 100644
--- a/elf/dynamic-link.h
+++ b/elf/dynamic-link.h
@@ -1,5 +1,5 @@
 /* Inline functions for dynamic linking.
-   Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -31,20 +31,24 @@
    optimizing away alignment tests or using word instructions for
    copying memory, breaking the very code written to handle the
    unaligned cases.  */
+# if ! ELF_MACHINE_NO_REL
 auto void __attribute__((always_inline))
 elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
 		 const ElfW(Sym) *sym, const struct r_found_version *version,
 		 void *const reloc_addr);
 auto void __attribute__((always_inline))
+elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
+			  void *const reloc_addr);
+# endif
+# if ! ELF_MACHINE_NO_RELA
+auto void __attribute__((always_inline))
 elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
 		  const ElfW(Sym) *sym, const struct r_found_version *version,
 		  void *const reloc_addr);
 auto void __attribute__((always_inline))
-elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-			  void *const reloc_addr);
-auto void __attribute__((always_inline))
 elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
 			   void *const reloc_addr);
+# endif
 # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
 auto void __attribute__((always_inline))
 elf_machine_lazy_rel (struct link_map *map,
diff --git a/elf/tst-array1-static.c b/elf/tst-array1-static.c
new file mode 100644
index 0000000000..21539a4212
--- /dev/null
+++ b/elf/tst-array1-static.c
@@ -0,0 +1 @@
+#include "tst-array1.c"
diff --git a/fedora/branch.mk b/fedora/branch.mk
index 2ec1f17148..f528e06674 100644
--- a/fedora/branch.mk
+++ b/fedora/branch.mk
@@ -1,5 +1,5 @@
 # This file is updated automatically by Makefile.
 glibc-branch := fedora
 glibc-base := HEAD
-fedora-sync-date := 2005-02-11 10:37 UTC
-fedora-sync-tag := fedora-glibc-20050211T1037
+fedora-sync-date := 2005-03-02 18:20 UTC
+fedora-sync-tag := fedora-glibc-20050302T1820
diff --git a/iconv/gconv_open.c b/iconv/gconv_open.c
index 90da784f78..b23ab44e4e 100644
--- a/iconv/gconv_open.c
+++ b/iconv/gconv_open.c
@@ -1,5 +1,6 @@
 /* Find matching transformation algorithms and initialize steps.
-   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,1999,2000,2001,2004,2005
+	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -279,7 +280,7 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
 		  /* Allocate the buffer.  */
 		  size = (GCONV_NCHAR_GOAL * steps[cnt].__max_needed_to);
 
-		  result->__data[cnt].__outbuf = (char *) malloc (size);
+		  result->__data[cnt].__outbuf = malloc (size);
 		  if (result->__data[cnt].__outbuf == NULL)
 		    {
 		      res = __GCONV_NOMEM;
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index ceefe840a5..a45c7a9b3d 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1997-2004, 2005 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -51,7 +51,9 @@ modules	:= ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5		 \
 	   GB18030 ISO-2022-CN-EXT VISCII GBBIG5 CP10007 KOI8-T		 \
 	   GEORGIAN-PS GEORGIAN-ACADEMY ISO-IR-209 MAC-SAMI ARMSCII-8	 \
 	   TCVN5712-1 libJISX0213 EUC-JISX0213 SHIFT_JISX0213		 \
-	   ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS PT154 RK1048
+	   ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS PT154 RK1048	 \
+	   IBM1025 IBM1122 IBM1137 IBM1153 IBM1154 IBM1155 IBM1156	 \
+	   IBM1157 IBM1158
 
 modules.so := $(addsuffix .so, $(modules))
 
@@ -172,7 +174,10 @@ distribute := gconv-modules extra-module.mk gap.awk gaptab.awk gconv.map    \
 	      mac-sami.c ibm1160.c ibm1160.h ibm1161.c ibm1161.h	    \
 	      ibm1163.c ibm1163.h ibm1164.c ibm1164.h jisx0213.c jisx0213.h \
 	      euc-jisx0213.c shift_jisx0213.c iso-2022-jp-3.c		    \
-	      tcvn5712-1.c armscii-8.c tscii.c ibm866nav.c pt154.c rk1048.c
+	      tcvn5712-1.c armscii-8.c tscii.c ibm866nav.c pt154.c rk1048.c \
+	      ibm1025.c ibm1025.h ibm1122.c ibm1122.h ibm1137.c ibm1137.h   \
+	      ibm1153.c ibm1153.h ibm1154.c ibm1154.h ibm1155.c ibm1155.h   \
+	      ibm1156.c ibm1156.h ibm1157.c ibm1157.h ibm1158.c ibm1158.h
 
 # We build the transformation modules only when we build shared libs.
 ifeq (yes,$(build-shared))
diff --git a/iconvdata/TESTS b/iconvdata/TESTS
index 57e86ac37e..8ff19125c3 100644
--- a/iconvdata/TESTS
+++ b/iconvdata/TESTS
@@ -1,5 +1,5 @@
 # Available tests for iconv(1) (and therefore iconv(3)) in GNU libc.
-# Copyright (C) 1998-2002 Free Software Foundation, Inc.
+# Copyright (C) 1998-2002, 2005 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 # Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 #
@@ -119,3 +119,12 @@ EUC-JISX0213		EUC-JISX0213		Y	UTF8
 SHIFT_JISX0213		SHIFT_JISX0213		Y	UTF8
 ISO-2022-JP-3		ISO-2022-JP-3		N	UTF8
 TSCII			TSCII			Y	UTF8
+IBM1025			IBM1025			N	UTF8
+IBM1122			IBM1122			N	UTF8
+IBM1137			IBM1137			N	UTF8
+IBM1153			IBM1153			N	UTF8
+IBM1154			IBM1154			N	UTF8
+IBM1155			IBM1155			N	UTF8
+IBM1156			IBM1156			N	UTF8
+IBM1157			IBM1157			N	UTF8
+IBM1158			IBM1158			N	UTF8
diff --git a/iconvdata/gconv-modules b/iconvdata/gconv-modules
index 1bf24413b3..75d4228497 100644
--- a/iconvdata/gconv-modules
+++ b/iconvdata/gconv-modules
@@ -1,7 +1,6 @@
 # GNU libc iconv configuration.
-# Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1997-2004, 2005 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
-#
 
 # The GNU C Library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -1572,3 +1571,73 @@ module	INTERNAL		PT154//			PT154		1
 alias	STRK1048-2002//		RK1048//
 module	RK1048//		INTERNAL		RK1048		1
 module	INTERNAL		RK1048//		RK1048		1
+
+#	from			to			module		cost
+alias	IBM-1025//		IBM1025//
+alias	CP1025//		IBM1025//
+alias	CSIBM1025//		IBM1025//
+module	IBM1025//		INTERNAL		IBM1025		1
+module	INTERNAL		IBM1025//		IBM1025		1
+
+#	from			to			module		cost
+alias	IBM-1122//		IBM1122//
+alias	CP1122//		IBM1122//
+alias	CSIBM1122//		IBM1122//
+module	IBM1122//		INTERNAL		IBM1122		1
+module	INTERNAL		IBM1122//		IBM1122		1
+
+#	from			to			module		cost
+alias	IBM-1137//		IBM1137//
+alias	CP1137//		IBM1137//
+alias	CSIBM1137//		IBM1137//
+module	IBM1137//		INTERNAL		IBM1137		1
+module	INTERNAL		IBM1137//		IBM1137		1
+
+#	from			to			module		cost
+alias	IBM-1153//		IBM1153//
+alias	CP1153//		IBM1153//
+alias	CSIBM1153//		IBM1153//
+module	IBM1153//		INTERNAL		IBM1153		1
+module	INTERNAL		IBM1153//		IBM1153		1
+
+#	from			to			module		cost
+alias	IBM-1154//		IBM1154//
+alias	CP1154//		IBM1154//
+alias	CSIBM1154//		IBM1154//
+module	IBM1154//		INTERNAL		IBM1154		1
+module	INTERNAL		IBM1154//		IBM1154		1
+
+#	from			to			module		cost
+alias	IBM-1155//		IBM1155//
+alias	CP1155//		IBM1155//
+alias	CSIBM1155//		IBM1155//
+module	IBM1155//		INTERNAL		IBM1155		1
+module	INTERNAL		IBM1155//		IBM1155		1
+
+#	from			to			module		cost
+alias	IBM-1155//		IBM1155//
+alias	CP1155//		IBM1155//
+alias	CSIBM1155//		IBM1155//
+module	IBM1155//		INTERNAL		IBM1155		1
+module	INTERNAL		IBM1155//		IBM1155		1
+
+#	from			to			module		cost
+alias	IBM-1156//		IBM1156//
+alias	CP1156//		IBM1156//
+alias	CSIBM1156//		IBM1156//
+module	IBM1156//		INTERNAL		IBM1156		1
+module	INTERNAL		IBM1156//		IBM1156		1
+
+#	from			to			module		cost
+alias	IBM-1157//		IBM1157//
+alias	CP1157//		IBM1157//
+alias	CSIBM1157//		IBM1157//
+module	IBM1157//		INTERNAL		IBM1157		1
+module	INTERNAL		IBM1157//		IBM1157		1
+
+#	from			to			module		cost
+alias	IBM-1158//		IBM1158//
+alias	CP1158//		IBM1158//
+alias	CSIBM1158//		IBM1158//
+module	IBM1158//		INTERNAL		IBM1158		1
+module	INTERNAL		IBM1158//		IBM1158		1
diff --git a/iconvdata/ibm1025.c b/iconvdata/ibm1025.c
new file mode 100644
index 0000000000..65931912fa
--- /dev/null
+++ b/iconvdata/ibm1025.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1025.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1025.h>
+
+#define CHARSET_NAME	"IBM1025//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1025.h b/iconvdata/ibm1025.h
new file mode 100644
index 0000000000..f608f4be42
--- /dev/null
+++ b/iconvdata/ibm1025.h
@@ -0,0 +1,133 @@
+/* Mapping table for IBM1025.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0452, [0x43] = 0x0453,
+  [0x44] = 0x0451, [0x45] = 0x0454, [0x46] = 0x0455, [0x47] = 0x0456,
+  [0x48] = 0x0457, [0x49] = 0x0458, [0x4a] = 0x005b, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+  [0x50] = 0x0026, [0x51] = 0x0459, [0x52] = 0x045a, [0x53] = 0x045b,
+  [0x54] = 0x045c, [0x55] = 0x045e, [0x56] = 0x045f, [0x57] = 0x042a,
+  [0x58] = 0x2116, [0x59] = 0x0402, [0x5a] = 0x005d, [0x5b] = 0x0024,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0403, [0x63] = 0x0401,
+  [0x64] = 0x0404, [0x65] = 0x0405, [0x66] = 0x0406, [0x67] = 0x0407,
+  [0x68] = 0x0408, [0x69] = 0x0409, [0x6a] = 0x007c, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x040a, [0x71] = 0x040b, [0x72] = 0x040c, [0x73] = 0x00ad,
+  [0x74] = 0x040e, [0x75] = 0x040f, [0x76] = 0x044e, [0x77] = 0x0430,
+  [0x78] = 0x0431, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+  [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+  [0x80] = 0x0446, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x0434, [0x8b] = 0x0435,
+  [0x8c] = 0x0444, [0x8d] = 0x0433, [0x8e] = 0x0445, [0x8f] = 0x0438,
+  [0x90] = 0x0439, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x043a, [0x9b] = 0x043b,
+  [0x9c] = 0x043c, [0x9d] = 0x043d, [0x9e] = 0x043e, [0x9f] = 0x043f,
+  [0xa0] = 0x044f, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x0440, [0xab] = 0x0441,
+  [0xac] = 0x0442, [0xad] = 0x0443, [0xae] = 0x0436, [0xaf] = 0x0432,
+  [0xb0] = 0x044c, [0xb1] = 0x044b, [0xb2] = 0x0437, [0xb3] = 0x0448,
+  [0xb4] = 0x044d, [0xb5] = 0x0449, [0xb6] = 0x0447, [0xb7] = 0x044a,
+  [0xb8] = 0x042e, [0xb9] = 0x0410, [0xba] = 0x0411, [0xbb] = 0x0426,
+  [0xbc] = 0x0414, [0xbd] = 0x0415, [0xbe] = 0x0424, [0xbf] = 0x0413,
+  [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x0425, [0xcb] = 0x0418,
+  [0xcc] = 0x0419, [0xcd] = 0x041a, [0xce] = 0x041b, [0xcf] = 0x041c,
+  [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+  [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+  [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x041d, [0xdb] = 0x041e,
+  [0xdc] = 0x041f, [0xdd] = 0x042f, [0xde] = 0x0420, [0xdf] = 0x0421,
+  [0xe0] = 0x005c, [0xe1] = 0x00a7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+  [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+  [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x0422, [0xeb] = 0x0423,
+  [0xec] = 0x0416, [0xed] = 0x0412, [0xee] = 0x042c, [0xef] = 0x042b,
+  [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+  [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+  [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x0417, [0xfb] = 0x0428,
+  [0xfc] = 0x042d, [0xfd] = 0x0429, [0xfe] = 0x0427, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00a0, idx:     0 },
+  { start: 0x00a7, end: 0x00ad, idx:    -6 },
+  { start: 0x0401, end: 0x045f, idx:  -857 },
+  { start: 0x2116, end: 0x2116, idx: -8207 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+  '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\xc0', '\x6a', '\xd0', '\xa1', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\xe1', '\x00', '\x00', '\x00', '\x00', '\x00', '\x73',
+  '\x63', '\x59', '\x62', '\x64', '\x65', '\x66', '\x67', '\x68',
+  '\x69', '\x70', '\x71', '\x72', '\x00', '\x74', '\x75', '\xb9',
+  '\xba', '\xed', '\xbf', '\xbc', '\xbd', '\xec', '\xfa', '\xcb',
+  '\xcc', '\xcd', '\xce', '\xcf', '\xda', '\xdb', '\xdc', '\xde',
+  '\xdf', '\xea', '\xeb', '\xbe', '\xca', '\xbb', '\xfe', '\xfb',
+  '\xfd', '\x57', '\xef', '\xee', '\xfc', '\xb8', '\xdd', '\x77',
+  '\x78', '\xaf', '\x8d', '\x8a', '\x8b', '\xae', '\xb2', '\x8f',
+  '\x90', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', '\xaa',
+  '\xab', '\xac', '\xad', '\x8c', '\x8e', '\x80', '\xb6', '\xb3',
+  '\xb5', '\xb7', '\xb1', '\xb0', '\xb4', '\x76', '\xa0', '\x00',
+  '\x44', '\x42', '\x43', '\x45', '\x46', '\x47', '\x48', '\x49',
+  '\x51', '\x52', '\x53', '\x54', '\x00', '\x55', '\x56', '\x58'
+};
diff --git a/iconvdata/ibm1122.c b/iconvdata/ibm1122.c
new file mode 100644
index 0000000000..504972b791
--- /dev/null
+++ b/iconvdata/ibm1122.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1122.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1122.h>
+
+#define CHARSET_NAME	"IBM1122//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1122.h b/iconvdata/ibm1122.h
new file mode 100644
index 0000000000..b37c84ae00
--- /dev/null
+++ b/iconvdata/ibm1122.h
@@ -0,0 +1,133 @@
+/* Mapping table for IBM1122.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x007b,
+  [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x007d,
+  [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x00a7, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+  [0x50] = 0x0026, [0x51] = 0x0060, [0x52] = 0x00ea, [0x53] = 0x00eb,
+  [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+  [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x00a4, [0x5b] = 0x00c5,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x0023,
+  [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x0024,
+  [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00f6, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x00f8, [0x71] = 0x005c, [0x72] = 0x00ca, [0x73] = 0x00cb,
+  [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+  [0x78] = 0x00cc, [0x79] = 0x00e9, [0x7a] = 0x003a, [0x7b] = 0x00c4,
+  [0x7c] = 0x00d6, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+  [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+  [0x8c] = 0x0161, [0x8d] = 0x00fd, [0x8e] = 0x017e, [0x8f] = 0x00b1,
+  [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+  [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x005d,
+  [0xa0] = 0x00b5, [0xa1] = 0x00fc, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+  [0xac] = 0x0160, [0xad] = 0x00dd, [0xae] = 0x017d, [0xaf] = 0x00ae,
+  [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+  [0xb4] = 0x00a9, [0xb5] = 0x005b, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+  [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+  [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+  [0xc0] = 0x00e4, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+  [0xcc] = 0x00a6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+  [0xd0] = 0x00e5, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+  [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+  [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+  [0xdc] = 0x007e, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+  [0xe0] = 0x00c9, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+  [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+  [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+  [0xec] = 0x0040, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+  [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+  [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+  [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+  [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00ff, idx:     0 },
+  { start: 0x0160, end: 0x0161, idx:   -96 },
+  { start: 0x017d, end: 0x017e, idx:  -123 },
+  { start: 0x203e, end: 0x203e, idx: -7994 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x4f', '\x7f', '\x63', '\x67', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\xec', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\xb5', '\x71', '\x9f', '\x5f', '\x6d',
+  '\x51', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\x43', '\xbb', '\x47', '\xdc', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\xaa', '\xb0', '\xb1', '\x5a', '\xb2', '\xcc', '\x4a',
+  '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+  '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+  '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+  '\x64', '\x65', '\x62', '\x66', '\x7b', '\x5b', '\x9e', '\x68',
+  '\x74', '\xe0', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+  '\x00', '\x69', '\xed', '\xee', '\xeb', '\xef', '\x7c', '\xbf',
+  '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\x00', '\x59',
+  '\x44', '\x45', '\x42', '\x46', '\xc0', '\xd0', '\x9c', '\x48',
+  '\x54', '\x79', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+  '\x00', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\x6a', '\xe1',
+  '\x70', '\xdd', '\xde', '\xdb', '\xa1', '\x8d', '\x00', '\xdf',
+  '\xac', '\x8c', '\xae', '\x8e', '\xbc'
+};
diff --git a/iconvdata/ibm1137.c b/iconvdata/ibm1137.c
new file mode 100644
index 0000000000..54df85b0ff
--- /dev/null
+++ b/iconvdata/ibm1137.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1137.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1137.h>
+
+#define CHARSET_NAME	"IBM1137//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1137.h b/iconvdata/ibm1137.h
new file mode 100644
index 0000000000..3d0f5dd1b7
--- /dev/null
+++ b/iconvdata/ibm1137.h
@@ -0,0 +1,133 @@
+/* Mapping table for IBM1137.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0901, [0x43] = 0x0902,
+  [0x44] = 0x0903, [0x45] = 0x0905, [0x46] = 0x0906, [0x47] = 0x0907,
+  [0x48] = 0x0908, [0x49] = 0x0909, [0x4a] = 0x090a, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+  [0x50] = 0x0026, [0x51] = 0x090b, [0x52] = 0x090c, [0x53] = 0x090d,
+  [0x54] = 0x090e, [0x55] = 0x090f, [0x56] = 0x0910, [0x57] = 0x0911,
+  [0x58] = 0x0912, [0x59] = 0x0913, [0x5a] = 0x0021, [0x5b] = 0x0024,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0914, [0x63] = 0x0915,
+  [0x64] = 0x0916, [0x65] = 0x0917, [0x66] = 0x0918, [0x67] = 0x0919,
+  [0x68] = 0x091a, [0x69] = 0x091b, [0x6a] = 0x091c, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x091d, [0x71] = 0x091e, [0x72] = 0x091f, [0x73] = 0x0920,
+  [0x74] = 0x0921, [0x75] = 0x0922, [0x76] = 0x0923, [0x77] = 0x0924,
+  [0x78] = 0x0925, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+  [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+  [0x80] = 0x0926, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x0927, [0x8b] = 0x0928,
+  [0x8c] = 0x092a, [0x8d] = 0x092b, [0x8e] = 0x092c, [0x8f] = 0x092d,
+  [0x90] = 0x092e, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x092f, [0x9b] = 0x0930,
+  [0x9c] = 0x0932, [0x9d] = 0x0933, [0x9e] = 0x0935, [0x9f] = 0x0936,
+  [0xa0] = 0x200c, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x0937, [0xab] = 0x0938,
+  [0xac] = 0x0939, [0xad] = 0x005b, [0xae] = 0x093c, [0xaf] = 0x093d,
+  [0xb0] = 0x093e, [0xb1] = 0x093f, [0xb2] = 0x0940, [0xb3] = 0x0941,
+  [0xb4] = 0x0942, [0xb5] = 0x0943, [0xb6] = 0x0944, [0xb7] = 0x0945,
+  [0xb8] = 0x0946, [0xb9] = 0x0947, [0xba] = 0x0948, [0xbb] = 0x0949,
+  [0xbc] = 0x094a, [0xbd] = 0x005d, [0xbe] = 0x094b, [0xbf] = 0x094c,
+  [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x094d, [0xcb] = 0x0950,
+  [0xcc] = 0x0951, [0xcd] = 0x0952, [0xd0] = 0x007d, [0xd1] = 0x004a,
+  [0xd2] = 0x004b, [0xd3] = 0x004c, [0xd4] = 0x004d, [0xd5] = 0x004e,
+  [0xd6] = 0x004f, [0xd7] = 0x0050, [0xd8] = 0x0051, [0xd9] = 0x0052,
+  [0xda] = 0x0960, [0xdb] = 0x0961, [0xdc] = 0x0962, [0xdd] = 0x0963,
+  [0xde] = 0x0964, [0xdf] = 0x0965, [0xe0] = 0x005c, [0xe1] = 0x200d,
+  [0xe2] = 0x0053, [0xe3] = 0x0054, [0xe4] = 0x0055, [0xe5] = 0x0056,
+  [0xe6] = 0x0057, [0xe7] = 0x0058, [0xe8] = 0x0059, [0xe9] = 0x005a,
+  [0xea] = 0x0966, [0xeb] = 0x0967, [0xec] = 0x0968, [0xed] = 0x0969,
+  [0xee] = 0x096a, [0xef] = 0x096b, [0xf0] = 0x0030, [0xf1] = 0x0031,
+  [0xf2] = 0x0032, [0xf3] = 0x0033, [0xf4] = 0x0034, [0xf5] = 0x0035,
+  [0xf6] = 0x0036, [0xf7] = 0x0037, [0xf8] = 0x0038, [0xf9] = 0x0039,
+  [0xfa] = 0x096c, [0xfb] = 0x096d, [0xfc] = 0x096e, [0xfd] = 0x096f,
+  [0xfe] = 0x0970, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00a0, idx:     0 },
+  { start: 0x0901, end: 0x0952, idx: -2144 },
+  { start: 0x0960, end: 0x0970, idx: -2157 },
+  { start: 0x200c, end: 0x200d, idx: -7944 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x5a', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\xad', '\xe0', '\xbd', '\x5f', '\x6d',
+  '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xa1', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\x42', '\x43', '\x44', '\x00', '\x45', '\x46', '\x47',
+  '\x48', '\x49', '\x4a', '\x51', '\x52', '\x53', '\x54', '\x55',
+  '\x56', '\x57', '\x58', '\x59', '\x62', '\x63', '\x64', '\x65',
+  '\x66', '\x67', '\x68', '\x69', '\x6a', '\x70', '\x71', '\x72',
+  '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x80', '\x8a',
+  '\x8b', '\x00', '\x8c', '\x8d', '\x8e', '\x8f', '\x90', '\x9a',
+  '\x9b', '\x00', '\x9c', '\x9d', '\x00', '\x9e', '\x9f', '\xaa',
+  '\xab', '\xac', '\x00', '\x00', '\xae', '\xaf', '\xb0', '\xb1',
+  '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7', '\xb8', '\xb9',
+  '\xba', '\xbb', '\xbc', '\xbe', '\xbf', '\xca', '\x00', '\x00',
+  '\xcb', '\xcc', '\xcd', '\xda', '\xdb', '\xdc', '\xdd', '\xde',
+  '\xdf', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef', '\xfa',
+  '\xfb', '\xfc', '\xfd', '\xfe', '\xa0', '\xe1'
+};
diff --git a/iconvdata/ibm1153.c b/iconvdata/ibm1153.c
new file mode 100644
index 0000000000..5eafc6b252
--- /dev/null
+++ b/iconvdata/ibm1153.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1153.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1153.h>
+
+#define CHARSET_NAME	"IBM1153//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1153.h b/iconvdata/ibm1153.h
new file mode 100644
index 0000000000..32fcac7a68
--- /dev/null
+++ b/iconvdata/ibm1153.h
@@ -0,0 +1,147 @@
+/* Mapping table for IBM1153.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+  [0x44] = 0x0163, [0x45] = 0x00e1, [0x46] = 0x0103, [0x47] = 0x010d,
+  [0x48] = 0x00e7, [0x49] = 0x0107, [0x4a] = 0x005b, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+  [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x0119, [0x53] = 0x00eb,
+  [0x54] = 0x016f, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x013e,
+  [0x58] = 0x013a, [0x59] = 0x00df, [0x5a] = 0x005d, [0x5b] = 0x0024,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+  [0x64] = 0x02dd, [0x65] = 0x00c1, [0x66] = 0x0102, [0x67] = 0x010c,
+  [0x68] = 0x00c7, [0x69] = 0x0106, [0x6a] = 0x007c, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x02c7, [0x71] = 0x00c9, [0x72] = 0x0118, [0x73] = 0x00cb,
+  [0x74] = 0x016e, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x013d,
+  [0x78] = 0x0139, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+  [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+  [0x80] = 0x02d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x015b, [0x8b] = 0x0148,
+  [0x8c] = 0x0111, [0x8d] = 0x00fd, [0x8e] = 0x0159, [0x8f] = 0x015f,
+  [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x0142, [0x9b] = 0x0144,
+  [0x9c] = 0x0161, [0x9d] = 0x00b8, [0x9e] = 0x02db, [0x9f] = 0x20ac,
+  [0xa0] = 0x0105, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x015a, [0xab] = 0x0147,
+  [0xac] = 0x0110, [0xad] = 0x00dd, [0xae] = 0x0158, [0xaf] = 0x015e,
+  [0xb0] = 0x02d9, [0xb1] = 0x0104, [0xb2] = 0x017c, [0xb3] = 0x0162,
+  [0xb4] = 0x017b, [0xb5] = 0x00a7, [0xb6] = 0x017e, [0xb7] = 0x017a,
+  [0xb8] = 0x017d, [0xb9] = 0x0179, [0xba] = 0x0141, [0xbb] = 0x0143,
+  [0xbc] = 0x0160, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+  [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+  [0xcc] = 0x00f6, [0xcd] = 0x0155, [0xce] = 0x00f3, [0xcf] = 0x0151,
+  [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+  [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+  [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x011a, [0xdb] = 0x0171,
+  [0xdc] = 0x00fc, [0xdd] = 0x0165, [0xde] = 0x00fa, [0xdf] = 0x011b,
+  [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+  [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+  [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x010f, [0xeb] = 0x00d4,
+  [0xec] = 0x00d6, [0xed] = 0x0154, [0xee] = 0x00d3, [0xef] = 0x0150,
+  [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+  [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+  [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x010e, [0xfb] = 0x0170,
+  [0xfc] = 0x00dc, [0xfd] = 0x0164, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00a0, idx:     0 },
+  { start: 0x00a7, end: 0x00b8, idx:    -6 },
+  { start: 0x00c1, end: 0x0111, idx:   -14 },
+  { start: 0x0118, end: 0x011b, idx:   -20 },
+  { start: 0x0139, end: 0x0148, idx:   -49 },
+  { start: 0x0150, end: 0x0165, idx:   -56 },
+  { start: 0x016e, end: 0x0171, idx:   -64 },
+  { start: 0x0179, end: 0x017e, idx:   -71 },
+  { start: 0x02c7, end: 0x02c7, idx:  -399 },
+  { start: 0x02d8, end: 0x02dd, idx:  -415 },
+  { start: 0x20ac, end: 0x20ac, idx: -8045 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+  '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\xc0', '\x6a', '\xd0', '\xa1', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\xb5', '\xbd', '\x00', '\x00', '\x00', '\x00', '\xca',
+  '\x00', '\x00', '\x90', '\x00', '\x00', '\x00', '\xbe', '\x00',
+  '\x00', '\x00', '\x9d', '\x65', '\x62', '\x00', '\x63', '\x00',
+  '\x00', '\x68', '\x00', '\x71', '\x00', '\x73', '\x00', '\x75',
+  '\x76', '\x00', '\xac', '\x00', '\x00', '\xee', '\xeb', '\x00',
+  '\xec', '\xbf', '\x00', '\x00', '\xfe', '\x00', '\xfc', '\xad',
+  '\x00', '\x59', '\x00', '\x45', '\x42', '\x00', '\x43', '\x00',
+  '\x00', '\x48', '\x00', '\x51', '\x00', '\x53', '\x00', '\x55',
+  '\x56', '\x00', '\x00', '\x00', '\x00', '\xce', '\xcb', '\x00',
+  '\xcc', '\xe1', '\x00', '\x00', '\xde', '\x00', '\xdc', '\x8d',
+  '\x00', '\x00', '\x00', '\x00', '\x66', '\x46', '\xb1', '\xa0',
+  '\x69', '\x49', '\x00', '\x00', '\x00', '\x00', '\x67', '\x47',
+  '\xfa', '\xea', '\xac', '\x8c', '\x72', '\x52', '\xda', '\xdf',
+  '\x78', '\x58', '\x00', '\x00', '\x77', '\x57', '\x00', '\x00',
+  '\xba', '\x9a', '\xbb', '\x9b', '\x00', '\x00', '\xab', '\x8b',
+  '\xef', '\xcf', '\x00', '\x00', '\xed', '\xcd', '\x00', '\x00',
+  '\xae', '\x8e', '\xaa', '\x8a', '\x00', '\x00', '\xaf', '\x8f',
+  '\xbc', '\x9c', '\xb3', '\x44', '\xfd', '\xdd', '\x74', '\x54',
+  '\xfb', '\xdb', '\xb9', '\xb7', '\xb4', '\xb2', '\xb8', '\xb6',
+  '\x70', '\x80', '\xb0', '\x00', '\x9e', '\x00', '\x64', '\x9f'
+};
diff --git a/iconvdata/ibm1154.c b/iconvdata/ibm1154.c
new file mode 100644
index 0000000000..9aaf5d8be2
--- /dev/null
+++ b/iconvdata/ibm1154.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1154.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1154.h>
+
+#define CHARSET_NAME	"IBM1154//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1154.h b/iconvdata/ibm1154.h
new file mode 100644
index 0000000000..6e4d07f8a3
--- /dev/null
+++ b/iconvdata/ibm1154.h
@@ -0,0 +1,134 @@
+/* Mapping table for IBM1154.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0452, [0x43] = 0x0453,
+  [0x44] = 0x0451, [0x45] = 0x0454, [0x46] = 0x0455, [0x47] = 0x0456,
+  [0x48] = 0x0457, [0x49] = 0x0458, [0x4a] = 0x005b, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+  [0x50] = 0x0026, [0x51] = 0x0459, [0x52] = 0x045a, [0x53] = 0x045b,
+  [0x54] = 0x045c, [0x55] = 0x045e, [0x56] = 0x045f, [0x57] = 0x042a,
+  [0x58] = 0x2116, [0x59] = 0x0402, [0x5a] = 0x005d, [0x5b] = 0x0024,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0403, [0x63] = 0x0401,
+  [0x64] = 0x0404, [0x65] = 0x0405, [0x66] = 0x0406, [0x67] = 0x0407,
+  [0x68] = 0x0408, [0x69] = 0x0409, [0x6a] = 0x007c, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x040a, [0x71] = 0x040b, [0x72] = 0x040c, [0x73] = 0x00ad,
+  [0x74] = 0x040e, [0x75] = 0x040f, [0x76] = 0x044e, [0x77] = 0x0430,
+  [0x78] = 0x0431, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+  [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+  [0x80] = 0x0446, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x0434, [0x8b] = 0x0435,
+  [0x8c] = 0x0444, [0x8d] = 0x0433, [0x8e] = 0x0445, [0x8f] = 0x0438,
+  [0x90] = 0x0439, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x043a, [0x9b] = 0x043b,
+  [0x9c] = 0x043c, [0x9d] = 0x043d, [0x9e] = 0x043e, [0x9f] = 0x043f,
+  [0xa0] = 0x044f, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x0440, [0xab] = 0x0441,
+  [0xac] = 0x0442, [0xad] = 0x0443, [0xae] = 0x0436, [0xaf] = 0x0432,
+  [0xb0] = 0x044c, [0xb1] = 0x044b, [0xb2] = 0x0437, [0xb3] = 0x0448,
+  [0xb4] = 0x044d, [0xb5] = 0x0449, [0xb6] = 0x0447, [0xb7] = 0x044a,
+  [0xb8] = 0x042e, [0xb9] = 0x0410, [0xba] = 0x0411, [0xbb] = 0x0426,
+  [0xbc] = 0x0414, [0xbd] = 0x0415, [0xbe] = 0x0424, [0xbf] = 0x0413,
+  [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x0425, [0xcb] = 0x0418,
+  [0xcc] = 0x0419, [0xcd] = 0x041a, [0xce] = 0x041b, [0xcf] = 0x041c,
+  [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+  [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+  [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x041d, [0xdb] = 0x041e,
+  [0xdc] = 0x041f, [0xdd] = 0x042f, [0xde] = 0x0420, [0xdf] = 0x0421,
+  [0xe0] = 0x005c, [0xe1] = 0x20ac, [0xe2] = 0x0053, [0xe3] = 0x0054,
+  [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+  [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x0422, [0xeb] = 0x0423,
+  [0xec] = 0x0416, [0xed] = 0x0412, [0xee] = 0x042c, [0xef] = 0x042b,
+  [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+  [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+  [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x0417, [0xfb] = 0x0428,
+  [0xfc] = 0x042d, [0xfd] = 0x0429, [0xfe] = 0x0427, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00a0, idx:     0 },
+  { start: 0x00ad, end: 0x00ad, idx:   -12 },
+  { start: 0x0401, end: 0x045f, idx:  -863 },
+  { start: 0x20ac, end: 0x20ac, idx: -8107 },
+  { start: 0x2116, end: 0x2116, idx: -8212 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+  '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\xc0', '\x6a', '\xd0', '\xa1', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\x73', '\x63', '\x59', '\x62', '\x64', '\x65', '\x66',
+  '\x67', '\x68', '\x69', '\x70', '\x71', '\x72', '\x00', '\x74',
+  '\x75', '\xb9', '\xba', '\xed', '\xbf', '\xbc', '\xbd', '\xec',
+  '\xfa', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', '\xda', '\xdb',
+  '\xdc', '\xde', '\xdf', '\xea', '\xeb', '\xbe', '\xca', '\xbb',
+  '\xfe', '\xfb', '\xfd', '\x57', '\xef', '\xee', '\xfc', '\xb8',
+  '\xdd', '\x77', '\x78', '\xaf', '\x8d', '\x8a', '\x8b', '\xae',
+  '\xb2', '\x8f', '\x90', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e',
+  '\x9f', '\xaa', '\xab', '\xac', '\xad', '\x8c', '\x8e', '\x80',
+  '\xb6', '\xb3', '\xb5', '\xb7', '\xb1', '\xb0', '\xb4', '\x76',
+  '\xa0', '\x00', '\x44', '\x42', '\x43', '\x45', '\x46', '\x47',
+  '\x48', '\x49', '\x51', '\x52', '\x53', '\x54', '\x00', '\x55',
+  '\x56', '\xe1', '\x58'
+};
diff --git a/iconvdata/ibm1155.c b/iconvdata/ibm1155.c
new file mode 100644
index 0000000000..f60ec5fb44
--- /dev/null
+++ b/iconvdata/ibm1155.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1155.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1155.h>
+
+#define CHARSET_NAME	"IBM1155//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1155.h b/iconvdata/ibm1155.h
new file mode 100644
index 0000000000..282834f2ec
--- /dev/null
+++ b/iconvdata/ibm1155.h
@@ -0,0 +1,134 @@
+/* Mapping table for IBM1155.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x00e4,
+  [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x00e5,
+  [0x48] = 0x007b, [0x49] = 0x00f1, [0x4a] = 0x00c7, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+  [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x00ea, [0x53] = 0x00eb,
+  [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+  [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x011e, [0x5b] = 0x0130,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x00c4,
+  [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x00c5,
+  [0x68] = 0x005b, [0x69] = 0x00d1, [0x6a] = 0x015f, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x00ca, [0x73] = 0x00cb,
+  [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+  [0x78] = 0x00cc, [0x79] = 0x0131, [0x7a] = 0x003a, [0x7b] = 0x00d6,
+  [0x7c] = 0x015e, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x00dc,
+  [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+  [0x8c] = 0x007d, [0x8d] = 0x0060, [0x8e] = 0x00a6, [0x8f] = 0x00b1,
+  [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+  [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+  [0xa0] = 0x00b5, [0xa1] = 0x00f6, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+  [0xac] = 0x005d, [0xad] = 0x0024, [0xae] = 0x0040, [0xaf] = 0x00ae,
+  [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+  [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+  [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+  [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+  [0xc0] = 0x00e7, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+  [0xcc] = 0x007e, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+  [0xd0] = 0x011f, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+  [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+  [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+  [0xdc] = 0x005c, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+  [0xe0] = 0x00fc, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+  [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+  [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+  [0xec] = 0x0023, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+  [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+  [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+  [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+  [0xfc] = 0x0022, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00ff, idx:     0 },
+  { start: 0x011e, end: 0x011f, idx:   -30 },
+  { start: 0x0130, end: 0x0131, idx:   -46 },
+  { start: 0x015e, end: 0x015f, idx:   -90 },
+  { start: 0x20ac, end: 0x20ac, idx: -8102 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x4f', '\xfc', '\xec', '\xad', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\xae', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\x68', '\xdc', '\xac', '\x5f', '\x6d',
+  '\x8d', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\x48', '\xbb', '\x8c', '\xcc', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\xaa', '\xb0', '\xb1', '\x00', '\xb2', '\x8e', '\xb5',
+  '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+  '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+  '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+  '\x64', '\x65', '\x62', '\x66', '\x63', '\x67', '\x9e', '\x4a',
+  '\x74', '\x71', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+  '\x00', '\x69', '\xed', '\xee', '\xeb', '\xef', '\x7b', '\xbf',
+  '\x80', '\xfd', '\xfe', '\xfb', '\x7f', '\x00', '\x00', '\x59',
+  '\x44', '\x45', '\x42', '\x46', '\x43', '\x47', '\x9c', '\xc0',
+  '\x54', '\x51', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+  '\x00', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\xa1', '\xe1',
+  '\x70', '\xdd', '\xde', '\xdb', '\xe0', '\x00', '\x00', '\xdf',
+  '\x5a', '\xd0', '\x5b', '\x79', '\x7c', '\x6a', '\x9f'
+};
diff --git a/iconvdata/ibm1156.c b/iconvdata/ibm1156.c
new file mode 100644
index 0000000000..6751abe294
--- /dev/null
+++ b/iconvdata/ibm1156.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1156.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1156.h>
+
+#define CHARSET_NAME	"IBM1156//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1156.h b/iconvdata/ibm1156.h
new file mode 100644
index 0000000000..1352c8f672
--- /dev/null
+++ b/iconvdata/ibm1156.h
@@ -0,0 +1,149 @@
+/* Mapping table for IBM1156.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0161, [0x43] = 0x00e4,
+  [0x44] = 0x0105, [0x45] = 0x012f, [0x46] = 0x016b, [0x47] = 0x00e5,
+  [0x48] = 0x0113, [0x49] = 0x017e, [0x4a] = 0x00a2, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x007c,
+  [0x50] = 0x0026, [0x51] = 0x00e9, [0x52] = 0x0119, [0x53] = 0x0117,
+  [0x54] = 0x010d, [0x55] = 0x0173, [0x56] = 0x201e, [0x57] = 0x201c,
+  [0x58] = 0x0123, [0x59] = 0x00df, [0x5a] = 0x0021, [0x5b] = 0x0024,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x00ac,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0160, [0x63] = 0x00c4,
+  [0x64] = 0x0104, [0x65] = 0x012e, [0x66] = 0x016a, [0x67] = 0x00c5,
+  [0x68] = 0x0112, [0x69] = 0x017d, [0x6a] = 0x00a6, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x00f8, [0x71] = 0x00c9, [0x72] = 0x0118, [0x73] = 0x0116,
+  [0x74] = 0x010c, [0x75] = 0x0172, [0x76] = 0x012a, [0x77] = 0x013b,
+  [0x78] = 0x0122, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+  [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+  [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+  [0x8c] = 0x0101, [0x8d] = 0x017c, [0x8e] = 0x0144, [0x8f] = 0x00b1,
+  [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x0156, [0x9b] = 0x0157,
+  [0x9c] = 0x00e6, [0x9d] = 0x0137, [0x9e] = 0x00c6, [0x9f] = 0x20ac,
+  [0xa0] = 0x00b5, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x201d, [0xab] = 0x017a,
+  [0xac] = 0x0100, [0xad] = 0x017b, [0xae] = 0x0143, [0xaf] = 0x00ae,
+  [0xb0] = 0x005e, [0xb1] = 0x00a3, [0xb2] = 0x012b, [0xb3] = 0x00b7,
+  [0xb4] = 0x00a9, [0xb5] = 0x00a7, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+  [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x005b, [0xbb] = 0x005d,
+  [0xbc] = 0x0179, [0xbd] = 0x0136, [0xbe] = 0x013c, [0xbf] = 0x00d7,
+  [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x014d,
+  [0xcc] = 0x00f6, [0xcd] = 0x0146, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+  [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+  [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+  [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x0107,
+  [0xdc] = 0x00fc, [0xdd] = 0x0142, [0xde] = 0x015b, [0xdf] = 0x2019,
+  [0xe0] = 0x005c, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+  [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+  [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x014c,
+  [0xec] = 0x00d6, [0xed] = 0x0145, [0xee] = 0x00d3, [0xef] = 0x00d5,
+  [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+  [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+  [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x0106,
+  [0xfc] = 0x00dc, [0xfd] = 0x0141, [0xfe] = 0x015a, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00c9, idx:     0 },
+  { start: 0x00d3, end: 0x00e9, idx:    -9 },
+  { start: 0x00f3, end: 0x0119, idx:   -18 },
+  { start: 0x0122, end: 0x0123, idx:   -26 },
+  { start: 0x012a, end: 0x012f, idx:   -32 },
+  { start: 0x0136, end: 0x014d, idx:   -38 },
+  { start: 0x0156, end: 0x0161, idx:   -46 },
+  { start: 0x016a, end: 0x016b, idx:   -54 },
+  { start: 0x0172, end: 0x017e, idx:   -60 },
+  { start: 0x2019, end: 0x201e, idx: -7894 },
+  { start: 0x20ac, end: 0x20ac, idx: -8035 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x5a', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\xba', '\xe0', '\xbb', '\xb0', '\x6d',
+  '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\xc0', '\x4f', '\xd0', '\xa1', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\x00', '\x4a', '\xb1', '\x00', '\x00', '\x6a', '\xb5',
+  '\x00', '\xb4', '\x00', '\x8a', '\x5f', '\xca', '\xaf', '\x00',
+  '\x90', '\x8f', '\xea', '\xfa', '\x00', '\xa0', '\xb6', '\xb3',
+  '\x00', '\xda', '\x00', '\x8b', '\xb7', '\xb8', '\xb9', '\x00',
+  '\x00', '\x00', '\x00', '\x00', '\x63', '\x67', '\x9e', '\x00',
+  '\x00', '\x71', '\xee', '\x00', '\xef', '\xec', '\xbf', '\x80',
+  '\x00', '\x00', '\x00', '\xfc', '\x00', '\x00', '\x59', '\x00',
+  '\x00', '\x00', '\x00', '\x43', '\x47', '\x9c', '\x00', '\x00',
+  '\x51', '\xce', '\x00', '\xcf', '\xcc', '\xe1', '\x70', '\x00',
+  '\x00', '\x00', '\xdc', '\x00', '\x00', '\x00', '\xac', '\x8c',
+  '\x00', '\x00', '\x64', '\x44', '\xfb', '\xdb', '\x00', '\x00',
+  '\x00', '\x00', '\x74', '\x54', '\x00', '\x00', '\x00', '\x00',
+  '\x68', '\x48', '\x00', '\x00', '\x73', '\x53', '\x72', '\x52',
+  '\x78', '\x58', '\x76', '\xb2', '\x00', '\x00', '\x65', '\x45',
+  '\xbd', '\x9d', '\x00', '\x00', '\x00', '\x77', '\xbe', '\x00',
+  '\x00', '\x00', '\x00', '\xfd', '\xdd', '\xae', '\x8e', '\xed',
+  '\xcd', '\x00', '\x00', '\x00', '\x00', '\x00', '\xeb', '\xcb',
+  '\x9a', '\x9b', '\x00', '\x00', '\xfe', '\xde', '\x00', '\x00',
+  '\x00', '\x00', '\x62', '\x42', '\x66', '\x46', '\x75', '\x55',
+  '\x00', '\x00', '\x00', '\x00', '\x00', '\xbc', '\xab', '\xad',
+  '\x8d', '\x69', '\x49', '\xdf', '\x00', '\x00', '\x57', '\xaa',
+  '\x56', '\x9f'
+};
diff --git a/iconvdata/ibm1157.c b/iconvdata/ibm1157.c
new file mode 100644
index 0000000000..18ccc39efd
--- /dev/null
+++ b/iconvdata/ibm1157.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1157.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1157.h>
+
+#define CHARSET_NAME	"IBM1157//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1157.h b/iconvdata/ibm1157.h
new file mode 100644
index 0000000000..f30f6dff49
--- /dev/null
+++ b/iconvdata/ibm1157.h
@@ -0,0 +1,134 @@
+/* Mapping table for IBM1157.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x00e2, [0x43] = 0x007b,
+  [0x44] = 0x00e0, [0x45] = 0x00e1, [0x46] = 0x00e3, [0x47] = 0x007d,
+  [0x48] = 0x00e7, [0x49] = 0x00f1, [0x4a] = 0x00a7, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+  [0x50] = 0x0026, [0x51] = 0x0060, [0x52] = 0x00ea, [0x53] = 0x00eb,
+  [0x54] = 0x00e8, [0x55] = 0x00ed, [0x56] = 0x00ee, [0x57] = 0x00ef,
+  [0x58] = 0x00ec, [0x59] = 0x00df, [0x5a] = 0x20ac, [0x5b] = 0x00c5,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x00c2, [0x63] = 0x0023,
+  [0x64] = 0x00c0, [0x65] = 0x00c1, [0x66] = 0x00c3, [0x67] = 0x0024,
+  [0x68] = 0x00c7, [0x69] = 0x00d1, [0x6a] = 0x00f6, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x00f8, [0x71] = 0x005c, [0x72] = 0x00ca, [0x73] = 0x00cb,
+  [0x74] = 0x00c8, [0x75] = 0x00cd, [0x76] = 0x00ce, [0x77] = 0x00cf,
+  [0x78] = 0x00cc, [0x79] = 0x00e9, [0x7a] = 0x003a, [0x7b] = 0x00c4,
+  [0x7c] = 0x00d6, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+  [0x80] = 0x00d8, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x00ab, [0x8b] = 0x00bb,
+  [0x8c] = 0x0161, [0x8d] = 0x00fd, [0x8e] = 0x017e, [0x8f] = 0x00b1,
+  [0x90] = 0x00b0, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x00aa, [0x9b] = 0x00ba,
+  [0x9c] = 0x00e6, [0x9d] = 0x00b8, [0x9e] = 0x00c6, [0x9f] = 0x005d,
+  [0xa0] = 0x00b5, [0xa1] = 0x00fc, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x00a1, [0xab] = 0x00bf,
+  [0xac] = 0x0160, [0xad] = 0x00dd, [0xae] = 0x017d, [0xaf] = 0x00ae,
+  [0xb0] = 0x00a2, [0xb1] = 0x00a3, [0xb2] = 0x00a5, [0xb3] = 0x00b7,
+  [0xb4] = 0x00a9, [0xb5] = 0x005b, [0xb6] = 0x00b6, [0xb7] = 0x00bc,
+  [0xb8] = 0x00bd, [0xb9] = 0x00be, [0xba] = 0x00ac, [0xbb] = 0x007c,
+  [0xbc] = 0x00af, [0xbd] = 0x00a8, [0xbe] = 0x00b4, [0xbf] = 0x00d7,
+  [0xc0] = 0x00e4, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x00ad, [0xcb] = 0x00f4,
+  [0xcc] = 0x00a6, [0xcd] = 0x00f2, [0xce] = 0x00f3, [0xcf] = 0x00f5,
+  [0xd0] = 0x00e5, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+  [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+  [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x00b9, [0xdb] = 0x00fb,
+  [0xdc] = 0x007e, [0xdd] = 0x00f9, [0xde] = 0x00fa, [0xdf] = 0x00ff,
+  [0xe0] = 0x00c9, [0xe1] = 0x00f7, [0xe2] = 0x0053, [0xe3] = 0x0054,
+  [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+  [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x00b2, [0xeb] = 0x00d4,
+  [0xec] = 0x0040, [0xed] = 0x00d2, [0xee] = 0x00d3, [0xef] = 0x00d5,
+  [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+  [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+  [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x00b3, [0xfb] = 0x00db,
+  [0xfc] = 0x00dc, [0xfd] = 0x00d9, [0xfe] = 0x00da, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00ff, idx:     0 },
+  { start: 0x0160, end: 0x0161, idx:   -96 },
+  { start: 0x017d, end: 0x017e, idx:  -123 },
+  { start: 0x203e, end: 0x203e, idx: -7994 },
+  { start: 0x20ac, end: 0x20ac, idx: -8103 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x4f', '\x7f', '\x63', '\x67', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\xec', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\xb5', '\x71', '\x9f', '\x5f', '\x6d',
+  '\x51', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\x43', '\xbb', '\x47', '\xdc', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\xaa', '\xb0', '\xb1', '\x00', '\xb2', '\xcc', '\x4a',
+  '\xbd', '\xb4', '\x9a', '\x8a', '\xba', '\xca', '\xaf', '\xbc',
+  '\x90', '\x8f', '\xea', '\xfa', '\xbe', '\xa0', '\xb6', '\xb3',
+  '\x9d', '\xda', '\x9b', '\x8b', '\xb7', '\xb8', '\xb9', '\xab',
+  '\x64', '\x65', '\x62', '\x66', '\x7b', '\x5b', '\x9e', '\x68',
+  '\x74', '\xe0', '\x72', '\x73', '\x78', '\x75', '\x76', '\x77',
+  '\x00', '\x69', '\xed', '\xee', '\xeb', '\xef', '\x7c', '\xbf',
+  '\x80', '\xfd', '\xfe', '\xfb', '\xfc', '\xad', '\x00', '\x59',
+  '\x44', '\x45', '\x42', '\x46', '\xc0', '\xd0', '\x9c', '\x48',
+  '\x54', '\x79', '\x52', '\x53', '\x58', '\x55', '\x56', '\x57',
+  '\x00', '\x49', '\xcd', '\xce', '\xcb', '\xcf', '\x6a', '\xe1',
+  '\x70', '\xdd', '\xde', '\xdb', '\xa1', '\x8d', '\x00', '\xdf',
+  '\xac', '\x8c', '\xae', '\x8e', '\xbc', '\x5a'
+};
diff --git a/iconvdata/ibm1158.c b/iconvdata/ibm1158.c
new file mode 100644
index 0000000000..6ca7e6c1c6
--- /dev/null
+++ b/iconvdata/ibm1158.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1158.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1158.h>
+
+#define CHARSET_NAME	"IBM1158//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1158.h b/iconvdata/ibm1158.h
new file mode 100644
index 0000000000..31b71fee3b
--- /dev/null
+++ b/iconvdata/ibm1158.h
@@ -0,0 +1,135 @@
+/* Mapping table for IBM1158.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jiro SEKIBA <sekiba@jp.ibm.com>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static const uint32_t to_ucs4[256] =
+{
+  [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003,
+  [0x04] = 0x009c, [0x05] = 0x0009, [0x06] = 0x0086, [0x07] = 0x007f,
+  [0x08] = 0x0097, [0x09] = 0x008d, [0x0a] = 0x008e, [0x0b] = 0x000b,
+  [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f,
+  [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013,
+  [0x14] = 0x009d, [0x15] = 0x0085, [0x16] = 0x0008, [0x17] = 0x0087,
+  [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x0092, [0x1b] = 0x008f,
+  [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f,
+  [0x20] = 0x0080, [0x21] = 0x0081, [0x22] = 0x0082, [0x23] = 0x0083,
+  [0x24] = 0x0084, [0x25] = 0x000a, [0x26] = 0x0017, [0x27] = 0x001b,
+  [0x28] = 0x0088, [0x29] = 0x0089, [0x2a] = 0x008a, [0x2b] = 0x008b,
+  [0x2c] = 0x008c, [0x2d] = 0x0005, [0x2e] = 0x0006, [0x2f] = 0x0007,
+  [0x30] = 0x0090, [0x31] = 0x0091, [0x32] = 0x0016, [0x33] = 0x0093,
+  [0x34] = 0x0094, [0x35] = 0x0095, [0x36] = 0x0096, [0x37] = 0x0004,
+  [0x38] = 0x0098, [0x39] = 0x0099, [0x3a] = 0x009a, [0x3b] = 0x009b,
+  [0x3c] = 0x0014, [0x3d] = 0x0015, [0x3e] = 0x009e, [0x3f] = 0x001a,
+  [0x40] = 0x0020, [0x41] = 0x00a0, [0x42] = 0x0452, [0x43] = 0x0491,
+  [0x44] = 0x0451, [0x45] = 0x0454, [0x46] = 0x0455, [0x47] = 0x0456,
+  [0x48] = 0x0457, [0x49] = 0x0458, [0x4a] = 0x005b, [0x4b] = 0x002e,
+  [0x4c] = 0x003c, [0x4d] = 0x0028, [0x4e] = 0x002b, [0x4f] = 0x0021,
+  [0x50] = 0x0026, [0x51] = 0x0459, [0x52] = 0x045a, [0x53] = 0x045b,
+  [0x54] = 0x045c, [0x55] = 0x045e, [0x56] = 0x045f, [0x57] = 0x042a,
+  [0x58] = 0x2116, [0x59] = 0x0402, [0x5a] = 0x005d, [0x5b] = 0x0024,
+  [0x5c] = 0x002a, [0x5d] = 0x0029, [0x5e] = 0x003b, [0x5f] = 0x005e,
+  [0x60] = 0x002d, [0x61] = 0x002f, [0x62] = 0x0490, [0x63] = 0x0401,
+  [0x64] = 0x0404, [0x65] = 0x0405, [0x66] = 0x0406, [0x67] = 0x0407,
+  [0x68] = 0x0408, [0x69] = 0x0409, [0x6a] = 0x007c, [0x6b] = 0x002c,
+  [0x6c] = 0x0025, [0x6d] = 0x005f, [0x6e] = 0x003e, [0x6f] = 0x003f,
+  [0x70] = 0x040a, [0x71] = 0x040b, [0x72] = 0x040c, [0x73] = 0x00ad,
+  [0x74] = 0x040e, [0x75] = 0x040f, [0x76] = 0x044e, [0x77] = 0x0430,
+  [0x78] = 0x0431, [0x79] = 0x0060, [0x7a] = 0x003a, [0x7b] = 0x0023,
+  [0x7c] = 0x0040, [0x7d] = 0x0027, [0x7e] = 0x003d, [0x7f] = 0x0022,
+  [0x80] = 0x0446, [0x81] = 0x0061, [0x82] = 0x0062, [0x83] = 0x0063,
+  [0x84] = 0x0064, [0x85] = 0x0065, [0x86] = 0x0066, [0x87] = 0x0067,
+  [0x88] = 0x0068, [0x89] = 0x0069, [0x8a] = 0x0434, [0x8b] = 0x0435,
+  [0x8c] = 0x0444, [0x8d] = 0x0433, [0x8e] = 0x0445, [0x8f] = 0x0438,
+  [0x90] = 0x0439, [0x91] = 0x006a, [0x92] = 0x006b, [0x93] = 0x006c,
+  [0x94] = 0x006d, [0x95] = 0x006e, [0x96] = 0x006f, [0x97] = 0x0070,
+  [0x98] = 0x0071, [0x99] = 0x0072, [0x9a] = 0x043a, [0x9b] = 0x043b,
+  [0x9c] = 0x043c, [0x9d] = 0x043d, [0x9e] = 0x043e, [0x9f] = 0x043f,
+  [0xa0] = 0x044f, [0xa1] = 0x007e, [0xa2] = 0x0073, [0xa3] = 0x0074,
+  [0xa4] = 0x0075, [0xa5] = 0x0076, [0xa6] = 0x0077, [0xa7] = 0x0078,
+  [0xa8] = 0x0079, [0xa9] = 0x007a, [0xaa] = 0x0440, [0xab] = 0x0441,
+  [0xac] = 0x0442, [0xad] = 0x0443, [0xae] = 0x0436, [0xaf] = 0x0432,
+  [0xb0] = 0x044c, [0xb1] = 0x044b, [0xb2] = 0x0437, [0xb3] = 0x0448,
+  [0xb4] = 0x044d, [0xb5] = 0x0449, [0xb6] = 0x0447, [0xb7] = 0x044a,
+  [0xb8] = 0x042e, [0xb9] = 0x0410, [0xba] = 0x0411, [0xbb] = 0x0426,
+  [0xbc] = 0x0414, [0xbd] = 0x0415, [0xbe] = 0x0424, [0xbf] = 0x0413,
+  [0xc0] = 0x007b, [0xc1] = 0x0041, [0xc2] = 0x0042, [0xc3] = 0x0043,
+  [0xc4] = 0x0044, [0xc5] = 0x0045, [0xc6] = 0x0046, [0xc7] = 0x0047,
+  [0xc8] = 0x0048, [0xc9] = 0x0049, [0xca] = 0x0425, [0xcb] = 0x0418,
+  [0xcc] = 0x0419, [0xcd] = 0x041a, [0xce] = 0x041b, [0xcf] = 0x041c,
+  [0xd0] = 0x007d, [0xd1] = 0x004a, [0xd2] = 0x004b, [0xd3] = 0x004c,
+  [0xd4] = 0x004d, [0xd5] = 0x004e, [0xd6] = 0x004f, [0xd7] = 0x0050,
+  [0xd8] = 0x0051, [0xd9] = 0x0052, [0xda] = 0x041d, [0xdb] = 0x041e,
+  [0xdc] = 0x041f, [0xdd] = 0x042f, [0xde] = 0x0420, [0xdf] = 0x0421,
+  [0xe0] = 0x005c, [0xe1] = 0x20ac, [0xe2] = 0x0053, [0xe3] = 0x0054,
+  [0xe4] = 0x0055, [0xe5] = 0x0056, [0xe6] = 0x0057, [0xe7] = 0x0058,
+  [0xe8] = 0x0059, [0xe9] = 0x005a, [0xea] = 0x0422, [0xeb] = 0x0423,
+  [0xec] = 0x0416, [0xed] = 0x0412, [0xee] = 0x042c, [0xef] = 0x042b,
+  [0xf0] = 0x0030, [0xf1] = 0x0031, [0xf2] = 0x0032, [0xf3] = 0x0033,
+  [0xf4] = 0x0034, [0xf5] = 0x0035, [0xf6] = 0x0036, [0xf7] = 0x0037,
+  [0xf8] = 0x0038, [0xf9] = 0x0039, [0xfa] = 0x0417, [0xfb] = 0x0428,
+  [0xfc] = 0x042d, [0xfd] = 0x0429, [0xfe] = 0x0427, [0xff] = 0x009f
+};
+
+static const struct gap from_idx[] =
+{
+  { start: 0x0000, end: 0x00a0, idx:     0 },
+  { start: 0x00ad, end: 0x00ad, idx:   -12 },
+  { start: 0x0401, end: 0x045f, idx:  -863 },
+  { start: 0x0490, end: 0x0491, idx:  -911 },
+  { start: 0x20ac, end: 0x20ac, idx: -8105 },
+  { start: 0x2116, end: 0x2116, idx: -8210 },
+  { start: 0xffff, end: 0xffff, idx:     0 }
+};
+
+static const char from_ucs4[] =
+{
+  '\x00', '\x01', '\x02', '\x03', '\x37', '\x2d', '\x2e', '\x2f',
+  '\x16', '\x05', '\x25', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+  '\x10', '\x11', '\x12', '\x13', '\x3c', '\x3d', '\x32', '\x26',
+  '\x18', '\x19', '\x3f', '\x27', '\x1c', '\x1d', '\x1e', '\x1f',
+  '\x40', '\x4f', '\x7f', '\x7b', '\x5b', '\x6c', '\x50', '\x7d',
+  '\x4d', '\x5d', '\x5c', '\x4e', '\x6b', '\x60', '\x4b', '\x61',
+  '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+  '\xf8', '\xf9', '\x7a', '\x5e', '\x4c', '\x7e', '\x6e', '\x6f',
+  '\x7c', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+  '\xc8', '\xc9', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6',
+  '\xd7', '\xd8', '\xd9', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6',
+  '\xe7', '\xe8', '\xe9', '\x4a', '\xe0', '\x5a', '\x5f', '\x6d',
+  '\x79', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+  '\x88', '\x89', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96',
+  '\x97', '\x98', '\x99', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6',
+  '\xa7', '\xa8', '\xa9', '\xc0', '\x6a', '\xd0', '\xa1', '\x07',
+  '\x20', '\x21', '\x22', '\x23', '\x24', '\x15', '\x06', '\x17',
+  '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x09', '\x0a', '\x1b',
+  '\x30', '\x31', '\x1a', '\x33', '\x34', '\x35', '\x36', '\x08',
+  '\x38', '\x39', '\x3a', '\x3b', '\x04', '\x14', '\x3e', '\xff',
+  '\x41', '\x73', '\x63', '\x59', '\x00', '\x64', '\x65', '\x66',
+  '\x67', '\x68', '\x69', '\x70', '\x71', '\x72', '\x00', '\x74',
+  '\x75', '\xb9', '\xba', '\xed', '\xbf', '\xbc', '\xbd', '\xec',
+  '\xfa', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', '\xda', '\xdb',
+  '\xdc', '\xde', '\xdf', '\xea', '\xeb', '\xbe', '\xca', '\xbb',
+  '\xfe', '\xfb', '\xfd', '\x57', '\xef', '\xee', '\xfc', '\xb8',
+  '\xdd', '\x77', '\x78', '\xaf', '\x8d', '\x8a', '\x8b', '\xae',
+  '\xb2', '\x8f', '\x90', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e',
+  '\x9f', '\xaa', '\xab', '\xac', '\xad', '\x8c', '\x8e', '\x80',
+  '\xb6', '\xb3', '\xb5', '\xb7', '\xb1', '\xb0', '\xb4', '\x76',
+  '\xa0', '\x00', '\x44', '\x42', '\x00', '\x45', '\x46', '\x47',
+  '\x48', '\x49', '\x51', '\x52', '\x53', '\x54', '\x00', '\x55',
+  '\x56', '\x62', '\x43', '\xe1', '\x58'
+};
diff --git a/iconvdata/ibm930.h b/iconvdata/ibm930.h
index cbf24c39c2..739a88fe9d 100644
--- a/iconvdata/ibm930.h
+++ b/iconvdata/ibm930.h
@@ -45,7 +45,7 @@ static const uint16_t __ibm930sb_to_ucs4[256] =
   /* 0x40 */ 0x0020, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67,
   /* 0x48 */ 0xFF68, 0xFF69, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C,
   /* 0x50 */ 0x0026, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, 0x0000,
-  /* 0x58 */ 0xFF70, 0x0000, 0x0021, 0x005C, 0x002A, 0x0029, 0x003B, 0x00AC,
+  /* 0x58 */ 0xFF70, 0x0000, 0x0021, 0x00A5, 0x002A, 0x0029, 0x003B, 0x00AC,
   /* 0x60 */ 0x002D, 0x002F, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066,
   /* 0x68 */ 0x0067, 0x0068, 0x0000, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F,
   /* 0x70 */ 0x005B, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
diff --git a/iconvdata/ibm939.h b/iconvdata/ibm939.h
index 0597294ac6..900a5e2445 100644
--- a/iconvdata/ibm939.h
+++ b/iconvdata/ibm939.h
@@ -56,7 +56,7 @@ static const uint16_t __ibm939sb_to_ucs4[256] =
   /* 0x98 */ 0x0071, 0x0072, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E,
   /* 0xa0 */ 0x203E, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
   /* 0xa8 */ 0x0079, 0x007A, 0xFF8F, 0xFF90, 0xFF91, 0x005B, 0xFF92, 0xFF93,
-  /* 0xb0 */ 0x005E, 0x00A3, 0x005C, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98,
+  /* 0xb0 */ 0x005E, 0x00A3, 0x00A5, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98,
   /* 0xb8 */ 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0x005D, 0xFF9E, 0xFF9F,
   /* 0xc0 */ 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
   /* 0xc8 */ 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
diff --git a/iconvdata/testdata/IBM1025 b/iconvdata/testdata/IBM1025
new file mode 100644
index 0000000000..39b0a84127
--- /dev/null
+++ b/iconvdata/testdata/IBM1025
@@ -0,0 +1,28 @@
+  ! " # $ % & ' ( ) * + , - . / 0
+1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
+B C D E F G H I J K L M N O P Q R
+S T U V W X Y Z [ \ ] ^ _ ` a b c
+d e f g h i j k l m n o p q r s t
+u v w x y z { | } ~  €  ‚ ƒ „ …
+† ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • –
+— ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ §
+¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸
+¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É
+Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú
+Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë
+ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü
+ý þ ÿ 
+  ! " # $ % & ' ( ) * + , - . / 0
+1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
+B C D E F G H I J K L M N O P Q R
+S T U V W X Y Z [ \ ] ^ _ ` a b c
+d e f g h i j k l m n o p q r s t
+u v w x y z { | } ~  €  ‚ ƒ „ …
+† ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • –
+— ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ §
+¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸
+¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É
+Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú
+Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë
+ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü
+ý þ ÿ 
diff --git a/iconvdata/testdata/IBM1025..UTF8 b/iconvdata/testdata/IBM1025..UTF8
new file mode 100644
index 0000000000..09024c8475
--- /dev/null
+++ b/iconvdata/testdata/IBM1025..UTF8
@@ -0,0 +1,3 @@
+€€Â€‚€ƒ€„€
+€€€ˆ€‰€Š€‹€Œ€€€€ÂŽ‘€€“€”€•€–€€˜€™€š€›€€€ž€€ € Žђ€ѓ€ё€є€ѕ€і€ї€ј€[€.€<€(€+€!€&€љ€њŽћ€ќ€ў€џ€Ъ€№€Ђ€]€$€*€)€;€^€-€/€Ѓ€ÐŽЄ€Ѕ€І€Ї€Ј€Љ€|€,€%€_€>€?€Њ€Ћ€Ќ€­€ЎŽÐ€ю€а€б€`€:€#€@€'€=€"€ц€a€b€c€d€eÂŽf€g€h€i€д€е€ф€г€х€и€й€j€k€l€m€n€oÂŽp€q€r€к€л€м€н€о€п€Ñ€~€s€t€u€v€w€xÂŽy€z€р€Ñ€т€у€ж€в€ь€ы€з€ш€Ñ€щ€ч€ъ€ЮŽÐ€Б€Ц€Д€Е€Ф€Г€{€A€B€C€D€E€F€G€H€IŽХ€И€Й€К€Л€М€}€J€K€L€M€N€O€P€Q€R€ÐŽО€П€Я€Р€С€\€§€S€T€U€V€W€X€Y€Z€Т€УŽЖ€В€Ь€Ы€0€1€2€3€4€5€6€7€8€9€З€Ш€ЭŽЩ€Ч€Ÿ€Ž€€Â€‚€ƒ€„€
+€€€ˆ€‰€Š€‹€Œ€€€€ÂŽ‘€€“€”€•€–€€˜€™€š€›€€€ž€€ € Žђ€ѓ€ё€є€ѕ€і€ї€ј€[€.€<€(€+€!€&€љ€њŽћ€ќ€ў€џ€Ъ€№€Ђ€]€$€*€)€;€^€-€/€Ѓ€ÐŽЄ€Ѕ€І€Ї€Ј€Љ€|€,€%€_€>€?€Њ€Ћ€Ќ€­€ЎŽÐ€ю€а€б€`€:€#€@€'€=€"€ц€a€b€c€d€eÂŽf€g€h€i€д€е€ф€г€х€и€й€j€k€l€m€n€oÂŽp€q€r€к€л€м€н€о€п€Ñ€~€s€t€u€v€w€xÂŽy€z€р€Ñ€т€у€ж€в€ь€ы€з€ш€Ñ€щ€ч€ъ€ЮŽÐ€Б€Ц€Д€Е€Ф€Г€{€A€B€C€D€E€F€G€H€IŽХ€И€Й€К€Л€М€}€J€K€L€M€N€O€P€Q€R€ÐŽО€П€Я€Р€С€\€§€S€T€U€V€W€X€Y€Z€Т€УŽЖ€В€Ь€Ы€0€1€2€3€4€5€6€7€8€9€З€Ш€ЭŽЩ€Ч€Ÿ€Ž
\ No newline at end of file
diff --git a/iconvdata/testdata/IBM1122 b/iconvdata/testdata/IBM1122
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1122
Binary files differdiff --git a/iconvdata/testdata/IBM1122..UTF8 b/iconvdata/testdata/IBM1122..UTF8
new file mode 100644
index 0000000000..a44b917bce
--- /dev/null
+++ b/iconvdata/testdata/IBM1122..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM1137 b/iconvdata/testdata/IBM1137
new file mode 100644
index 0000000000..30994bfe6b
--- /dev/null
+++ b/iconvdata/testdata/IBM1137
Binary files differdiff --git a/iconvdata/testdata/IBM1137..UTF8 b/iconvdata/testdata/IBM1137..UTF8
new file mode 100644
index 0000000000..b36d18ade5
--- /dev/null
+++ b/iconvdata/testdata/IBM1137..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM1153 b/iconvdata/testdata/IBM1153
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1153
Binary files differdiff --git a/iconvdata/testdata/IBM1153..UTF8 b/iconvdata/testdata/IBM1153..UTF8
new file mode 100644
index 0000000000..c621c423cb
--- /dev/null
+++ b/iconvdata/testdata/IBM1153..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM1154 b/iconvdata/testdata/IBM1154
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1154
Binary files differdiff --git a/iconvdata/testdata/IBM1154..UTF8 b/iconvdata/testdata/IBM1154..UTF8
new file mode 100644
index 0000000000..7b431a49d0
--- /dev/null
+++ b/iconvdata/testdata/IBM1154..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM1155 b/iconvdata/testdata/IBM1155
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1155
Binary files differdiff --git a/iconvdata/testdata/IBM1155..UTF8 b/iconvdata/testdata/IBM1155..UTF8
new file mode 100644
index 0000000000..d3e53f9779
--- /dev/null
+++ b/iconvdata/testdata/IBM1155..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM1156 b/iconvdata/testdata/IBM1156
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1156
Binary files differdiff --git a/iconvdata/testdata/IBM1156..UTF8 b/iconvdata/testdata/IBM1156..UTF8
new file mode 100644
index 0000000000..5ff81538a3
--- /dev/null
+++ b/iconvdata/testdata/IBM1156..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM1157 b/iconvdata/testdata/IBM1157
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1157
Binary files differdiff --git a/iconvdata/testdata/IBM1157..UTF8 b/iconvdata/testdata/IBM1157..UTF8
new file mode 100644
index 0000000000..6687d34991
--- /dev/null
+++ b/iconvdata/testdata/IBM1157..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM1158 b/iconvdata/testdata/IBM1158
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1158
Binary files differdiff --git a/iconvdata/testdata/IBM1158..UTF8 b/iconvdata/testdata/IBM1158..UTF8
new file mode 100644
index 0000000000..1fb7dbc821
--- /dev/null
+++ b/iconvdata/testdata/IBM1158..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM930..UTF8 b/iconvdata/testdata/IBM930..UTF8
index 89df7f15ac..639a16fdac 100644
--- a/iconvdata/testdata/IBM930..UTF8
+++ b/iconvdata/testdata/IBM930..UTF8
Binary files differdiff --git a/iconvdata/testdata/IBM939..UTF8 b/iconvdata/testdata/IBM939..UTF8
index 89df7f15ac..639a16fdac 100644
--- a/iconvdata/testdata/IBM939..UTF8
+++ b/iconvdata/testdata/IBM939..UTF8
Binary files differdiff --git a/include/features.h b/include/features.h
index 5e6cca5c86..cb0844ddda 100644
--- a/include/features.h
+++ b/include/features.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1993,1995-2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1995-2003,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
diff --git a/include/libintl.h b/include/libintl.h
index 8f312f1042..20083d4264 100644
--- a/include/libintl.h
+++ b/include/libintl.h
@@ -41,7 +41,7 @@ extern char *__bind_textdomain_codeset (__const char *__domainname,
 					__const char *__codeset);
 
 extern const char _libc_intl_domainname[];
-extern const char _libc_intl_domainname_internal[] attribute_hidden;
+libc_hidden_proto (_libc_intl_domainname)
 
 /* Define the macros `_' and `N_' for conveniently marking translatable
    strings in the libc source code.  We have to make sure we get the
@@ -52,12 +52,7 @@ extern const char _libc_intl_domainname_internal[] attribute_hidden;
 
 # undef _
 /* This is defined as an optimizing macro, so use it.  */
-# if !defined NOT_IN_libc && defined SHARED
-#  define _(msgid) \
-  __dcgettext_internal (_libc_intl_domainname_internal, msgid, LC_MESSAGES)
-# else
-#  define _(msgid) \
+# define _(msgid) \
   __dcgettext (_libc_intl_domainname, msgid, LC_MESSAGES)
-#endif
 
 #endif
diff --git a/include/signal.h b/include/signal.h
index dc1e0a12e5..2be67babad 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -50,7 +50,7 @@ extern int __xpg_sigpause (int sig);
 
 /* Simplified sigemptyset() implementation without the parameter checking.  */
 #undef __sigemptyset
-#define __sigemptyset(ss) (memset (ss, '\0', sizeof (sigset_t)), 0)
+#define __sigemptyset(ss) (__builtin_memset (ss, '\0', sizeof (sigset_t)), 0)
 
 
 /* Allocate real-time signal with highest/lowest available priority.  */
diff --git a/include/stdio.h b/include/stdio.h
index 0c1e8fca10..c8c89ad878 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -38,6 +38,8 @@ extern int __printf_chk (int, const char *, ...);
 extern int __fprintf_chk (FILE *, int, const char *, ...);
 extern int __vprintf_chk (int, const char *, _G_va_list);
 extern int __vfprintf_chk (FILE *, int, const char *, _G_va_list);
+extern char *__fgets_unlocked_chk (char *buf, size_t size, int n, FILE *fp);
+extern char *__fgets_chk (char *buf, size_t size, int n, FILE *fp);
 
 /* Prototypes for compatibility functions.  */
 extern FILE *__new_tmpfile (void);
diff --git a/include/sys/socket.h b/include/sys/socket.h
index 937909a125..0a226726aa 100644
--- a/include/sys/socket.h
+++ b/include/sys/socket.h
@@ -59,6 +59,14 @@ extern int __connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
 extern int __connect_internal (int __fd, __CONST_SOCKADDR_ARG __addr,
 			       socklen_t __len) attribute_hidden;
 
+/* Read N bytes into BUF from socket FD.
+   Returns the number read or -1 for errors.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern ssize_t __recv (int __fd, void *__buf, size_t __n, int __flags)
+     attribute_hidden;
+
 /* Send N bytes of BUF on socket FD to peer at address ADDR (which is
    ADDR_LEN bytes long).  Returns the number sent, or -1 for errors.  */
 extern ssize_t __libc_sendto (int __fd, __const void *__buf, size_t __n,
diff --git a/inet/rexec.c b/inet/rexec.c
index 3c14836aa2..6deb1feb45 100644
--- a/inet/rexec.c
+++ b/inet/rexec.c
@@ -111,7 +111,8 @@ retry:
 		port = 0;
 	} else {
 		char num[32];
-		int s2, sa2len;
+		int s2;
+		socklen_t sa2len;
 
 		s2 = __socket(res0->ai_family, res0->ai_socktype, 0);
 		if (s2 < 0) {
@@ -136,7 +137,7 @@ retry:
 			port = atoi(servbuff);
 		(void) sprintf(num, "%u", port);
 		(void) __write(s, num, strlen(num)+1);
-		{ int len = sizeof (from);
+		{ socklen_t len = sizeof (from);
 		  s3 = TEMP_FAILURE_RETRY (accept(s2, (struct sockaddr *)&from,
 						  &len));
 		  __close(s2);
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c
index 39256ed566..546da8e29d 100644
--- a/intl/bindtextdom.c
+++ b/intl/bindtextdom.c
@@ -1,5 +1,5 @@
 /* Implementation of the bindtextdomain(3) function
-   Copyright (C) 1995-1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998, 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -60,9 +60,7 @@
 /* Contains the default location of the message catalogs.  */
 extern const char _nl_default_dirname[];
 #ifdef _LIBC
-extern const char _nl_default_dirname_internal[] attribute_hidden;
-#else
-# define INTUSE(name) name
+libc_hidden_proto (_nl_default_dirname)
 #endif
 
 /* List with bindings of specific domains.  */
@@ -152,8 +150,8 @@ set_binding_values (domainname, dirnamep, codesetp)
 	      char *result = binding->dirname;
 	      if (strcmp (dirname, result) != 0)
 		{
-		  if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
-		    result = (char *) INTUSE(_nl_default_dirname);
+		  if (strcmp (dirname, _nl_default_dirname) == 0)
+		    result = (char *) _nl_default_dirname;
 		  else
 		    {
 #if defined _LIBC || defined HAVE_STRDUP
@@ -168,7 +166,7 @@ set_binding_values (domainname, dirnamep, codesetp)
 
 		  if (__builtin_expect (result != NULL, 1))
 		    {
-		      if (binding->dirname != INTUSE(_nl_default_dirname))
+		      if (binding->dirname != _nl_default_dirname)
 			free (binding->dirname);
 
 		      binding->dirname = result;
@@ -222,7 +220,7 @@ set_binding_values (domainname, dirnamep, codesetp)
     {
       /* Simply return the default values.  */
       if (dirnamep)
-	*dirnamep = INTUSE(_nl_default_dirname);
+	*dirnamep = _nl_default_dirname;
       if (codesetp)
 	*codesetp = NULL;
     }
@@ -244,11 +242,11 @@ set_binding_values (domainname, dirnamep, codesetp)
 
 	  if (dirname == NULL)
 	    /* The default value.  */
-	    dirname = INTUSE(_nl_default_dirname);
+	    dirname = _nl_default_dirname;
 	  else
 	    {
-	      if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
-		dirname = INTUSE(_nl_default_dirname);
+	      if (strcmp (dirname, _nl_default_dirname) == 0)
+		dirname = _nl_default_dirname;
 	      else
 		{
 		  char *result;
@@ -271,7 +269,7 @@ set_binding_values (domainname, dirnamep, codesetp)
 	}
       else
 	/* The default value.  */
-	new_binding->dirname = (char *) INTUSE(_nl_default_dirname);
+	new_binding->dirname = (char *) _nl_default_dirname;
 
       new_binding->codeset_cntr = 0;
 
@@ -327,7 +325,7 @@ set_binding_values (domainname, dirnamep, codesetp)
       if (0)
 	{
 	failed_codeset:
-	  if (new_binding->dirname != INTUSE(_nl_default_dirname))
+	  if (new_binding->dirname != _nl_default_dirname)
 	    free (new_binding->dirname);
 	failed_dirname:
 	  free (new_binding);
diff --git a/intl/dcigettext.c b/intl/dcigettext.c
index d7111729b9..75762ea18f 100644
--- a/intl/dcigettext.c
+++ b/intl/dcigettext.c
@@ -1,5 +1,5 @@
 /* Implementation of the internal dcigettext function.
-   Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-2002,2003,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -236,13 +236,6 @@ transcmp (p1, p2)
 }
 #endif
 
-#ifndef INTVARDEF
-# define INTVARDEF
-#endif
-#ifndef INTUSE
-# define INTUSE(name) name
-#endif
-
 /* Name of the default domain used for gettext(3) prior any call to
    textdomain(3).  The default value for this is "messages".  */
 const char _nl_default_default_domain[] attribute_hidden = "messages";
@@ -252,8 +245,15 @@ const char *_nl_current_default_domain attribute_hidden
      = _nl_default_default_domain;
 
 /* Contains the default location of the message catalogs.  */
+
+#ifdef _LIBC
+extern const char _nl_default_dirname[];
+libc_hidden_proto (_nl_default_dirname)
+#endif
 const char _nl_default_dirname[] = LOCALEDIR;
-INTVARDEF (_nl_default_dirname)
+#ifdef _LIBC
+libc_hidden_data_def (_nl_default_dirname)
+#endif
 
 /* List with bindings of specific domains created by bindtextdomain()
    calls.  */
@@ -485,7 +485,7 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
     }
 
   if (binding == NULL)
-    dirname = (char *) INTUSE(_nl_default_dirname);
+    dirname = (char *) _nl_default_dirname;
   else if (binding->dirname[0] == '/')
     dirname = binding->dirname;
   else
@@ -882,7 +882,7 @@ _nl_find_msg (domain_file, domainbinding, msgid, lengthp)
 		  goto converted;
 		}
 
-	      inbuf = result;
+	      inbuf = (const unsigned char *) result;
 # else
 #  if HAVE_ICONV
 	      const char *inptr = (const char *) inbuf;
@@ -950,7 +950,7 @@ _nl_find_msg (domain_file, domainbinding, msgid, lengthp)
 	      newmem->next = transmem_list;
 	      transmem_list = newmem;
 
-	      freemem = newmem->data;
+	      freemem = (unsigned char *) newmem->data;
 	      freemem_size -= offsetof (struct transmem_list, data);
 # else
 	      transmem_list = newmem;
@@ -1161,7 +1161,7 @@ libc_freeres_fn (free_mem)
     {
       struct binding *oldp = _nl_domain_bindings;
       _nl_domain_bindings = _nl_domain_bindings->next;
-      if (oldp->dirname != INTUSE(_nl_default_dirname))
+      if (oldp->dirname != _nl_default_dirname)
 	/* Yes, this is a pointer comparison.  */
 	free (oldp->dirname);
       free (oldp->codeset);
diff --git a/libidn/ChangeLog b/libidn/ChangeLog
index daeb4bdef0..df3a6269e8 100644
--- a/libidn/ChangeLog
+++ b/libidn/ChangeLog
@@ -1,3 +1,14 @@
+2005-02-12  Simon Josefsson  <jas@extundo.com >
+
+	* iconvme.h: New file, extracted from toutf8.c but improved.
+	* iconvme.c: New file.
+	* toutf8.c: Include stringprep.h first, to make the compiler check
+	that stringprep.h is standalone.  Improve comments.  Replace
+	#include of errno.h and sys/param.h with iconvme.h.  Don't define
+	ICONV_CONST.
+	(stringprep_convert): Rewrite to use iconvme.h.
+	* Makefile (libcidn-routines): Add iconvme.
+
 2004-10-05  Ulrich Drepper  <drepper@redhat.com>
 
 	* idn-stub.c (unload_libidn): Don't define outside libc.
diff --git a/libidn/Makefile b/libidn/Makefile
index 8e8759bdcc..3d2ef5ef9b 100644
--- a/libidn/Makefile
+++ b/libidn/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -20,14 +20,15 @@
 
 subdir	:= libidn
 
-distribute := punycode.h stringprep.h idna.h
+distribute := punycode.h stringprep.h idna.h iconvme.h
 
 routines = idn-stub
 
 extra-libs		= libcidn
 extra-libs-others	= $(extra-libs)
 
-libcidn-routines := punycode toutf8 nfkc stringprep rfc3454 profiles idna
+libcidn-routines := punycode toutf8 nfkc stringprep rfc3454 profiles idna \
+		    iconvme
 
 
 include ../Makeconfig
diff --git a/libidn/iconvme.c b/libidn/iconvme.c
new file mode 100644
index 0000000000..daf0c8e349
--- /dev/null
+++ b/libidn/iconvme.c
@@ -0,0 +1,159 @@
+/* Recode strings between character sets, using iconv.
+   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This program 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, or (at
+   your option) any later version.
+
+   This program 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 this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+/* Get prototype. */
+#include "iconvme.h"
+
+/* Get malloc. */
+#include <stdlib.h>
+
+/* Get strcmp. */
+#include <string.h>
+
+/* Get errno. */
+#include <errno.h>
+
+#ifdef _LIBC
+# define HAVE_ICONV 1
+#else
+/* Get strdup. */
+# include "strdup.h"
+#endif
+
+#if HAVE_ICONV
+/* Get iconv etc. */
+# include <iconv.h>
+/* Get MB_LEN_MAX. */
+# include <limits.h>
+#endif
+
+/* Convert a zero-terminated string STR from the FROM_CODSET code set
+   to the TO_CODESET code set.  The returned string is allocated using
+   malloc, and must be dellocated by the caller using free.  On
+   failure, NULL is returned and errno holds the error reason.  Note
+   that if TO_CODESET uses \0 for anything but to terminate the
+   string, the caller of this function may have difficulties finding
+   out the length of the output string.  */
+char *
+iconv_string (const char *str, const char *from_codeset,
+	      const char *to_codeset)
+{
+  char *dest = NULL;
+#if HAVE_ICONV
+  iconv_t cd;
+  char *outp;
+  char *p = (char *) str;
+  size_t inbytes_remaining = strlen (p);
+  /* Guess the maximum length the output string can have.  */
+  size_t outbuf_size = (inbytes_remaining + 1) * MB_LEN_MAX;
+  size_t outbytes_remaining = outbuf_size - 1; /* -1 for NUL */
+  size_t err;
+  int have_error = 0;
+#endif
+
+  if (strcmp (to_codeset, from_codeset) == 0)
+    return strdup (str);
+
+#if HAVE_ICONV
+  cd = iconv_open (to_codeset, from_codeset);
+  if (cd == (iconv_t) -1)
+    return NULL;
+
+  outp = dest = (char *) malloc (outbuf_size);
+  if (dest == NULL)
+    goto out;
+
+again:
+  err = iconv (cd, &p, &inbytes_remaining, &outp, &outbytes_remaining);
+
+  if (err == (size_t) - 1)
+    {
+      switch (errno)
+	{
+	case EINVAL:
+	  /* Incomplete text, do not report an error */
+	  break;
+
+	case E2BIG:
+	  {
+	    size_t used = outp - dest;
+	    size_t newsize = outbuf_size * 2;
+	    char *newdest;
+
+	    if (newsize <= outbuf_size)
+	      {
+		errno = ENOMEM;
+		have_error = 1;
+		goto out;
+	      }
+	    newdest = (char *) realloc (dest, newsize);
+	    if (newdest == NULL)
+	      {
+		have_error = 1;
+		goto out;
+	      }
+	    dest = newdest;
+	    outbuf_size = newsize;
+
+	    outp = dest + used;
+	    outbytes_remaining = outbuf_size - used - 1;	/* -1 for NUL */
+
+	    goto again;
+	  }
+	  break;
+
+	case EILSEQ:
+	  have_error = 1;
+	  break;
+
+	default:
+	  have_error = 1;
+	  break;
+	}
+    }
+
+  *outp = '\0';
+
+out:
+  {
+    int save_errno = errno;
+
+    if (iconv_close (cd) < 0 && !have_error)
+      {
+	/* If we didn't have a real error before, make sure we restore
+	   the iconv_close error below. */
+	save_errno = errno;
+	have_error = 1;
+      }
+
+    if (have_error && dest)
+      {
+	free (dest);
+	dest = NULL;
+	errno = save_errno;
+      }
+  }
+#else
+  errno = ENOSYS;
+#endif
+
+  return dest;
+}
diff --git a/libidn/iconvme.h b/libidn/iconvme.h
new file mode 100644
index 0000000000..3eb9b32b49
--- /dev/null
+++ b/libidn/iconvme.h
@@ -0,0 +1,25 @@
+/* Recode strings between character sets, using iconv.
+   Copyright (C) 2004 Free Software Foundation, Inc.
+   Written by Simon Josefsson.
+
+   This program 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, or (at your option)
+   any later version.
+
+   This program 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 this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#ifndef ICONVME_H
+# define ICONVME_H
+
+extern char *iconv_string (const char *string, const char *from_code,
+			   const char *to_code);
+
+#endif /* ICONVME_H */
diff --git a/libidn/toutf8.c b/libidn/toutf8.c
index 262f252d5f..dad47c9af0 100644
--- a/libidn/toutf8.c
+++ b/libidn/toutf8.c
@@ -1,5 +1,5 @@
-/* toutf8.c	Convert strings from system locale into UTF-8.
- * Copyright (C) 2002, 2003, 2004  Simon Josefsson
+/* toutf8.c --- Convert strings from system locale into UTF-8.
+ * Copyright (C) 2002, 2003, 2004, 2005  Simon Josefsson
  *
  * This file is part of GNU Libidn.
  *
@@ -23,33 +23,36 @@
 # include "config.h"
 #endif
 
+/* Get prototypes. */
+#include "stringprep.h"
+
+/* Get fprintf. */
 #include <stdio.h>
+
+/* Get getenv. */
 #include <stdlib.h>
+
+/* Get strlen. */
 #include <string.h>
-#include <errno.h>
-#include <sys/param.h>
 
-#include "stringprep.h"
+/* Get iconv_string. */
+#include "iconvme.h"
 
 #ifdef _LIBC
 # define HAVE_ICONV 1
 # define LOCALE_WORKS 1
-# define ICONV_CONST
 #endif
 
-#ifdef HAVE_ICONV
-# include <iconv.h>
-
-# if LOCALE_WORKS
-#  include <langinfo.h>
-#  include <locale.h>
-# endif
+#if LOCALE_WORKS
+# include <langinfo.h>
+# include <locale.h>
+#endif
 
-# ifdef _LIBC
-#  define stringprep_locale_charset() nl_langinfo (CODESET)
-# else
+#ifdef _LIBC
+# define stringprep_locale_charset() nl_langinfo (CODESET)
+#else
 /**
- * stringprep_locale_charset:
+ * stringprep_locale_charset - return charset used in current locale
  *
  * Find out current locale charset.  The function respect the CHARSET
  * environment variable, but typically uses nl_langinfo(CODESET) when
@@ -76,19 +79,19 @@ stringprep_locale_charset (void)
   if (charset && *charset)
     return charset;
 
-#  ifdef LOCALE_WORKS
+# ifdef LOCALE_WORKS
   charset = nl_langinfo (CODESET);
 
   if (charset && *charset)
     return charset;
-#  endif
+# endif
 
   return "ASCII";
 }
-# endif
+#endif
 
 /**
- * stringprep_convert:
+ * stringprep_convert - encode string using new character set
  * @str: input zero-terminated string.
  * @to_codeset: name of destination character set.
  * @from_codeset: name of origin character set, as used by @str.
@@ -103,132 +106,21 @@ char *
 stringprep_convert (const char *str,
 		    const char *to_codeset, const char *from_codeset)
 {
-  iconv_t cd;
-  char *dest;
-  char *outp;
-  ICONV_CONST char *p;
-  size_t inbytes_remaining;
-  size_t outbytes_remaining;
-  size_t err;
-  size_t outbuf_size;
-  int have_error = 0;
-
-  if (strcmp (to_codeset, from_codeset) == 0)
-    {
-#if defined HAVE_STRDUP || defined _LIBC
-      return strdup (str);
+#if HAVE_ICONV
+  return iconv_string (str, from_codeset, to_codeset);
 #else
-      char *p;
-      p = malloc (strlen (str) + 1);
-      if (!p)
-	return NULL;
-      return strcpy (p, str);
-#endif
-    }
-
-  cd = iconv_open (to_codeset, from_codeset);
-
-  if (cd == (iconv_t) - 1)
-    return NULL;
-
-  p = (ICONV_CONST char *) str;
-
-  inbytes_remaining = strlen (p);
-  /* Guess the maximum length the output string can have.  */
-  outbuf_size = (inbytes_remaining + 1) * MAX (7, MB_CUR_MAX);
-
-  outp = dest = malloc (outbuf_size);
-  if (dest == NULL)
-    goto out;
-  outbytes_remaining = outbuf_size - 1;	/* -1 for NUL */
-
-again:
-
-  err = iconv (cd, (ICONV_CONST char **) &p, &inbytes_remaining,
-	       &outp, &outbytes_remaining);
-
-  if (err == (size_t) - 1)
-    {
-      switch (errno)
-	{
-	case EINVAL:
-	  /* Incomplete text, do not report an error */
-	  break;
-
-	case E2BIG:
-	  {
-	    size_t used = outp - dest;
-	    char *newdest;
-
-	    outbuf_size *= 2;
-	    newdest = realloc (dest, outbuf_size);
-	    if (newdest == NULL)
-	      {
-		have_error = 1;
-		goto out;
-	      }
-	    dest = newdest;
-
-	    outp = dest + used;
-	    outbytes_remaining = outbuf_size - used - 1; /* -1 for NUL */
-
-	    goto again;
-	  }
-	  break;
-
-	case EILSEQ:
-	  have_error = 1;
-	  break;
-
-	default:
-	  have_error = 1;
-	  break;
-	}
-    }
-
-  *outp = '\0';
-
-  if (*p != '\0')
-    have_error = 1;
-
- out:
-  iconv_close (cd);
-
-  if (have_error)
-    {
-      free (dest);
-      dest = NULL;
-    }
-
-  return dest;
-}
-
-#else /* HAVE_ICONV */
-
-const char *
-stringprep_locale_charset ()
-{
-  return "ASCII";
-}
-
-char *
-stringprep_convert (const char *str,
-		    const char *to_codeset, const char *from_codeset)
-{
   char *p;
   fprintf (stderr, "libidn: warning: libiconv not installed, cannot "
 	   "convert data to UTF-8\n");
   p = malloc (strlen (str) + 1);
   if (!p)
     return NULL;
-  strcpy (p, str);
-  return p;
+  return strcpy (p, str);
+#endif
 }
 
-#endif /* HAVE_ICONV */
-
 /**
- * stringprep_locale_to_utf8:
+ * stringprep_locale_to_utf8 - convert locale encoded string to UTF-8
  * @str: input zero terminated string.
  *
  * Convert string encoded in the locale's character set into UTF-8 by
@@ -244,7 +136,7 @@ stringprep_locale_to_utf8 (const char *str)
 }
 
 /**
- * stringprep_utf8_to_locale:
+ * stringprep_utf8_to_locale - encode UTF-8 string to locale encoding
  * @str: input zero terminated string.
  *
  * Convert string encoded in UTF-8 into the locale's character set by
diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h
index 42a326c60a..e33cbb401a 100644
--- a/libio/bits/stdio2.h
+++ b/libio/bits/stdio2.h
@@ -1,5 +1,5 @@
 /* Checking macros for stdio functions.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -49,7 +49,7 @@ extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
   __builtin___vsnprintf_chk (str, len, __USE_FORTIFY_LEVEL - 1, __bos (str), \
 			     fmt, ap)
 
-#endif			     
+#endif
 
 #if __USE_FORTIFY_LEVEL > 1
 
@@ -85,5 +85,16 @@ extern int __vprintf_chk (int __flag, __const char *__restrict __format,
 
 extern char *__gets_chk (char *__str, size_t);
 #define gets(__str) \
-  ((__bos (__str) == (size_t) -1)				\
-   ? (gets) (__str) : __gets_chk (__str, __bos (__str)))
+  ((__bos (__str) == (size_t) -1)					      \
+   ? gets (__str) : __gets_chk (__str, __bos (__str)))
+
+extern char *__fgets_chk (char *s, size_t size, int n, FILE *stream);
+#define fgets(__str, __n, __fp) \
+  ((__bos (__str) == (size_t) -1)					      \
+   ? fgets (__str, __n, __fp) : __fgets_chk (__str, __bos (__str), __n, __fp))
+
+extern char *__fgets_unlocked_chk (char *s, size_t size, int n, FILE *stream);
+#define fgets_unlocked(__str, __n, __fp) \
+  ((__bos (__str) == (size_t) -1)					      \
+   ? fgets_unlocked (__str, __n, __fp)					      \
+   : __fgets_unlocked_chk (__str, __bos (__str), __n, __fp))
diff --git a/libio/libio.h b/libio/libio.h
index 3b6facdddb..21e70489cf 100644
--- a/libio/libio.h
+++ b/libio/libio.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1995, 1997-2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1995,1997-2003,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Per Bothner <bothner@cygnus.com>.
 
@@ -411,7 +411,7 @@ extern _IO_wint_t __wuflow (_IO_FILE *) __THROW;
 extern _IO_wint_t __woverflow (_IO_FILE *, _IO_wint_t) __THROW;
 
 #if  __GNUC__ >= 3
-# define _IO_BE(expr, res) __builtin_expect (expr, res)
+# define _IO_BE(expr, res) __builtin_expect ((expr), res)
 #else
 # define _IO_BE(expr, res) (expr)
 #endif
diff --git a/locale/SYS_libc.c b/locale/SYS_libc.c
index 4f9e946cf3..a879b68a25 100644
--- a/locale/SYS_libc.c
+++ b/locale/SYS_libc.c
@@ -1,5 +1,7 @@
 /* Define a constant for the dgettext domainname for libc internal messages,
    so the string constant is not repeated in dozens of object files.  */
 
+#include <libintl.h>
+
 const char _libc_intl_domainname[] = "libc";
-INTDEF(_libc_intl_domainname)
+libc_hidden_data_def (_libc_intl_domainname)
diff --git a/locale/lc-ctype.c b/locale/lc-ctype.c
index 21964b9130..a0a54fbd8d 100644
--- a/locale/lc-ctype.c
+++ b/locale/lc-ctype.c
@@ -1,5 +1,5 @@
 /* Define current locale data for LC_CTYPE category.
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2003
+   Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2003,2005
 	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -102,8 +102,8 @@ compat_symbol (libc, __ctype32_tolower, __ctype32_tolower, GLIBC_2_2);
 compat_symbol (libc, __ctype32_toupper, __ctype32_toupper, GLIBC_2_2);
 
   __ctype_b = current (uint16_t, CLASS, 128);
-  __ctype_toupper = current (uint32_t, TOUPPER, 128);
-  __ctype_tolower = current (uint32_t, TOLOWER, 128);
+  __ctype_toupper = current (int32_t, TOUPPER, 128);
+  __ctype_tolower = current (int32_t, TOLOWER, 128);
   __ctype32_b = current (uint32_t, CLASS32, 0);
   __ctype32_toupper = current (uint32_t, TOUPPER32, 0);
   __ctype32_tolower = current (uint32_t, TOLOWER32, 0);
diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c
index 8dbac6f5b9..b8aa1aafc4 100644
--- a/locale/programs/charmap.c
+++ b/locale/programs/charmap.c
@@ -49,8 +49,9 @@ static void new_width (struct linereader *cmfile, struct charmap_t *result,
 		       const char *from, const char *to,
 		       unsigned long int width);
 static void charmap_new_char (struct linereader *lr, struct charmap_t *cm,
-			      int nbytes, char *bytes, const char *from,
-			      const char *to, int decimal_ellipsis, int step);
+			      size_t nbytes, unsigned char *bytes,
+			      const char *from, const char *to,
+			      int decimal_ellipsis, int step);
 
 
 bool enc_not_ascii_compatible;
@@ -927,7 +928,8 @@ charmap_find_value (const struct charmap_t *cm, const char *name, size_t len)
 
 static void
 charmap_new_char (struct linereader *lr, struct charmap_t *cm,
-		  int nbytes, char *bytes, const char *from, const char *to,
+		  size_t nbytes, unsigned char *bytes,
+		  const char *from, const char *to,
 		  int decimal_ellipsis, int step)
 {
   hash_table *ht = &cm->char_table;
diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
index 233799a87d..5c8cf65012 100644
--- a/locale/programs/linereader.c
+++ b/locale/programs/linereader.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2001,2002,2003,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -347,8 +347,8 @@ get_toplvl_escape (struct linereader *lr)
   /* This is supposed to be a numeric value.  We return the
      numerical value and the number of bytes.  */
   size_t start_idx = lr->idx - 1;
-  char *bytes = lr->token.val.charcode.bytes;
-  int nbytes = 0;
+  unsigned char *bytes = lr->token.val.charcode.bytes;
+  size_t nbytes = 0;
   int ch;
 
   do
diff --git a/malloc/Makefile b/malloc/Makefile
index 0512c49839..45e8f59ab4 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -101,6 +101,8 @@ $(objpfx)memusagestat: $(memusagestat-modules:%=$(objpfx)%.o)
 
 include ../Rules
 
+CFLAGS-mcheck-init.c = $(PIC-ccflag)
+
 $(objpfx)libmcheck.a: $(objpfx)mcheck-init.o
 	-rm -f $@
 	$(patsubst %/,cd % &&,$(objpfx)) \
diff --git a/malloc/arena.c b/malloc/arena.c
index 026f2c7822..8202aaf01b 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -1,5 +1,5 @@
 /* Malloc implementation for multiple threads without lock contention.
-   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
 
@@ -20,6 +20,8 @@
 
 /* $Id$ */
 
+#include <stdbool.h>
+
 /* Compile-time constants.  */
 
 #define HEAP_MIN_SIZE (32*1024)
@@ -353,8 +355,6 @@ libc_hidden_proto (_dl_open_hook);
 # endif
 
 # if defined SHARED && defined USE_TLS && !USE___THREAD
-# include <stdbool.h>
-
 /* This is called by __pthread_initialize_minimal when it needs to use
    malloc to set up the TLS state.  We cannot do the full work of
    ptmalloc_init (below) until __pthread_initialize_minimal has finished,
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 4d2169bf78..5c9e77e9ec 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -5513,7 +5513,9 @@ extern char **__libc_argv attribute_hidden;
 static void
 malloc_printerr(int action, const char *str, void *ptr)
 {
-  if (action & 1)
+  if ((action & 5) == 5)
+    __libc_message (action & 2, "%s\n", str);
+  else if (action & 1)
     {
       char buf[2 * sizeof (uintptr_t) + 1];
 
@@ -5523,8 +5525,7 @@ malloc_printerr(int action, const char *str, void *ptr)
 	*--cp = '0';
 
       __libc_message (action & 2,
-		      action & 4
-		      ? "%s\n" : "*** glibc detected *** %s: %s: 0x%s ***\n",
+		      "*** glibc detected *** %s: %s: 0x%s ***\n",
 		      __libc_argv[0] ?: "<unknown>", str, cp);
     }
   else if (action & 2)
diff --git a/manual/filesys.texi b/manual/filesys.texi
index 70889c2f85..084d18cd8c 100644
--- a/manual/filesys.texi
+++ b/manual/filesys.texi
@@ -531,7 +531,7 @@ added or removed since you last called @code{opendir} or
 
 @comment dirent.h
 @comment BSD
-@deftypefun off_t telldir (DIR *@var{dirstream})
+@deftypefun long int telldir (DIR *@var{dirstream})
 The @code{telldir} function returns the file position of the directory
 stream @var{dirstream}.  You can use this value with @code{seekdir} to
 restore the directory stream to that position.
@@ -539,7 +539,7 @@ restore the directory stream to that position.
 
 @comment dirent.h
 @comment BSD
-@deftypefun void seekdir (DIR *@var{dirstream}, off_t @var{pos})
+@deftypefun void seekdir (DIR *@var{dirstream}, long int @var{pos})
 The @code{seekdir} function sets the file position of the directory
 stream @var{dirstream} to @var{pos}.  The value @var{pos} must be the
 result of a previous call to @code{telldir} on this particular stream;
@@ -1740,7 +1740,7 @@ is transparently replaced by @code{ino64_t}.
 @deftp {Data Type} ino64_t
 This is an arithmetic data type used to represent file serial numbers
 for the use in LFS.  In the GNU system, this type is equivalent to
-@code{unsigned long longint}.
+@code{unsigned long long int}.
 
 When compiling with @code{_FILE_OFFSET_BITS == 64} this type is
 available under the name @code{ino_t}.
diff --git a/manual/texinfo.tex b/manual/texinfo.tex
index e9293f3b9d..c93912a055 100644
--- a/manual/texinfo.tex
+++ b/manual/texinfo.tex
@@ -3,10 +3,11 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2003-05-04.08}
+\def\texinfoversion{2004-11-25.16}
 %
 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+% Foundation, Inc.
 %
 % This texinfo.tex file is free software; you can redistribute it and/or
 % modify it under the terms of the GNU General Public License as
@@ -23,21 +24,16 @@
 % to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 % Boston, MA 02111-1307, USA.
 %
-% In other words, you are welcome to use, share and improve this program.
-% You are forbidden to forbid anyone else to use, share and improve
-% what you give them.   Help stamp out software-hoarding!
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction.  (This has been our intent since Texinfo was invented.)
 %
 % Please try the latest version of texinfo.tex before submitting bug
 % reports; you can get the latest version from:
-%   ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex
-%     (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
 %   ftp://tug.org/tex/texinfo.tex
-%     (and all CTAN mirrors, see http://www.ctan.org),
-%   and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
-%
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-%
-% The texinfo.tex in any given Texinfo distribution could well be out
+%     (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
 % of date, so if that's what you're using, please check.
 %
 % Send bug reports to bug-texinfo@gnu.org.  Please include including a
@@ -59,6 +55,9 @@
 % It is possible to adapt texinfo.tex for other languages, to some
 % extent.  You can get the existing language-specific files from the
 % full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
 
 \message{Loading texinfo [version \texinfoversion]:}
 
@@ -85,12 +84,16 @@
 \let\ptexend=\end
 \let\ptexequiv=\equiv
 \let\ptexexclam=\!
+\let\ptexfootnote=\footnote
 \let\ptexgtr=>
 \let\ptexhat=^
 \let\ptexi=\i
 \let\ptexindent=\indent
+\let\ptexinsert=\insert
 \let\ptexlbrace=\{
 \let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
 \let\ptexplus=+
 \let\ptexrbrace=\}
 \let\ptexslash=\/
@@ -101,6 +104,15 @@
 % starts a new line in the output.
 \newlinechar = `^^J
 
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
 % Set up fixed words for English if not already set.
 \ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
 \ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
@@ -139,43 +151,81 @@
 \ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
 \ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
 \ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
 \ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
-\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
 
 % In some macros, we cannot use the `\? notation---the left quote is
 % in some cases the escape char.
 \chardef\colonChar = `\:
 \chardef\commaChar = `\,
 \chardef\dotChar   = `\.
-\chardef\equalChar = `\=
 \chardef\exclamChar= `\!
 \chardef\questChar = `\?
 \chardef\semiChar  = `\;
-\chardef\spaceChar = `\ %
 \chardef\underChar = `\_
 
+\chardef\spaceChar = `\ %
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode\spaceChar=\spacecat}
+
 % Ignore a token.
 %
 \def\gobble#1{}
 
-% True if #1 is the empty string, i.e., called like `\ifempty{}'.
-%
-\def\ifempty#1{\ifemptyx #1\emptymarkA\emptymarkB}%
-\def\ifemptyx#1#2\emptymarkB{\ifx #1\emptymarkA}%
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
 
 % Hyphenation fixes.
-\hyphenation{ap-pen-dix}
-\hyphenation{eshell}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{time-stamp}
-\hyphenation{white-space}
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
 
 % Margin to add to right of even pages, to left of odd pages.
 \newdimen\bindingoffset
 \newdimen\normaloffset
 \newdimen\pagewidth \newdimen\pageheight
 
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
 % Sometimes it is convenient to have everything in the transcript file
 % and nothing on the terminal.  We don't just call \tracingall here,
 % since that produces some useless output on the terminal.  We also make
@@ -200,7 +250,7 @@
     \tracingassigns1
   \fi
   \tracingcommands3  % 3 gives us more in etex
-  \errorcontextlines\maxdimen
+  \errorcontextlines16
 }%
 
 % add check for \lastpenalty to plain's definitions.  If the last thing
@@ -258,7 +308,7 @@
                    % the page break happens to be in the middle of an example.
     \shipout\vbox{%
       % Do this early so pdf references go to the beginning of the page.
-      \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
       %
       \ifcropmarks \vbox to \outervsize\bgroup
         \hsize = \outerhsize
@@ -339,132 +389,162 @@
 % the input line (except we remove a trailing comment).  #1 should be a
 % macro which expects an ordinary undelimited TeX argument.
 %
-\def\parsearg#1{%
-  \let\next = #1%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\next{#2}%
   \begingroup
     \obeylines
-    \futurelet\temp\parseargx
-}
-
-% If the next token is an obeyed space (from an @example environment or
-% the like), remove it and recurse.  Otherwise, we're done.
-\def\parseargx{%
-  % \obeyedspace is defined far below, after the definition of \sepspaces.
-  \ifx\obeyedspace\temp
-    \expandafter\parseargdiscardspace
-  \else
-    \expandafter\parseargline
-  \fi
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
 }
 
-% Remove a single space (as the delimiter token to the macro call).
-{\obeyspaces %
- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
 {\obeylines %
   \gdef\parseargline#1^^M{%
     \endgroup % End of the group started in \parsearg.
-    %
-    % First remove any @c comment, then any @comment.
-    % Result of each macro is put in \toks0.
-    \argremovec #1\c\relax %
-    \expandafter\argremovecomment \the\toks0 \comment\relax %
-    %
-    % Call the caller's macro, saved as \next in \parsearg.
-    \expandafter\next\expandafter{\the\toks0}%
+    \argremovecomment #1\comment\ArgTerm%
   }%
 }
 
-% Since all \c{,omment} does is throw away the argument, we can let TeX
-% do that for us.  The \relax here is matched by the \relax in the call
-% in \parseargline; it could be more or less anything, its purpose is
-% just to delimit the argument to the \c.
-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
 
-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
+% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
 %    @end itemize  @c foo
-% will have two active spaces as part of the argument with the
-% `itemize'.  Here we remove all active spaces from #1, and assign the
-% result to \toks0.
-%
-% This loses if there are any *other* active characters besides spaces
-% in the argument -- _ ^ +, for example -- since they get expanded.
-% Fortunately, Texinfo does not define any such commands.  (If it ever
-% does, the catcode of the characters in questionwill have to be changed
-% here.)  But this means we cannot call \removeactivespaces as part of
-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
-% that \parsearg gets might well have any character at all in it.
-%
-\def\removeactivespaces#1{%
-  \begingroup
-    \ignoreactivespaces
-    \edef\temp{#1}%
-    \global\toks0 = \expandafter{\temp}%
-  \endgroup
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % We cannot use \next here, as it holds the macro to run;
+    % thus we reuse \temp.
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
 }
 
-% Change the active space to expand to nothing.
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \next.
+% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
 %
-\begingroup
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%	is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
   \obeyspaces
-  \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
-\endgroup
+  \gdef\obeyedspace{ }
+
+  % Make each space character in the input produce a normal interword
+  % space in the output.  Don't allow a line break at this space, as this
+  % is used only in environments like @example, where each line of input
+  % should produce a line of output anyway.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % If an index command is used in an @example environment, any spaces
+  % therein should become regular spaces in the raw index file, not the
+  % expansion of \tie (\leavevmode \penalty \@M \ ).
+  \gdef\unsepspaces{\let =\space}
+}
 
 
 \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
 
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment; press RETURN to continue}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as enviroments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
 
-% @begin foo  is the same as @foo, for now.
-\newhelp\EMsimple{Press RETURN to continue.}
 
-\outer\def\begin{\parsearg\beginxxx}
+% At runtime, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
 
-\def\beginxxx #1{%
-\expandafter\ifx\csname #1\endcsname\relax
-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
-\csname #1\endcsname\fi}
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
 
-% @end foo executes the definition of \Efoo.
-%
-\def\end{\parsearg\endxxx}
-\def\endxxx #1{%
-  \removeactivespaces{#1}%
-  \edef\endthing{\the\toks0}%
-  %
-  \expandafter\ifx\csname E\endthing\endcsname\relax
-    \expandafter\ifx\csname \endthing\endcsname\relax
-      % There's no \foo, i.e., no ``environment'' foo.
-      \errhelp = \EMsimple
-      \errmessage{Undefined command `@end \endthing'}%
-    \else
-      \unmatchedenderror\endthing
-    \fi
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
   \else
-    % Everything's ok; the right environment has been started.
-    \csname E\endthing\endcsname
+    \badenverr
   \fi
 }
 
-% There is an environment #1, but it hasn't been started.  Give an error.
-%
-\def\unmatchedenderror#1{%
+% Evironment mismatch, #1 expected:
+\def\badenverr{%
   \errhelp = \EMsimple
-  \errmessage{This `@end #1' doesn't have a matching `@#1'}%
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    out of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
 }
 
-% Define the control sequence \E#1 to give an unmatched @end error.
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
 %
-\def\defineunmatchedend#1{%
-  \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
 }
 
+\newhelp\EMsimple{Press RETURN to continue.}
+
 
 %% Simple single-character @ commands
 
@@ -496,6 +576,9 @@
   !gdef!rbraceatcmd[@}]%
 !endgroup
 
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
 % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
 % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
 \let\, = \c
@@ -505,10 +588,12 @@
 \let\ubaraccent = \b
 \let\udotaccent = \d
 
-% Other special characters: @questiondown @exclamdown
+% Other special characters: @questiondown @exclamdown @ordf @ordm
 % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
 \def\questiondown{?`}
 \def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
 
 % Dotless i and dotless j, used for accents.
 \def\imacro{i}
@@ -521,6 +606,25 @@
   \fi\fi
 }
 
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+  \kern-.15em
+  \TeX
+}
+
 % Be sure we're in horizontal mode when doing a tie, since we make space
 % equivalent to this in @example-like environments. Otherwise, a space
 % at the beginning of a line will start with \penalty -- and
@@ -574,59 +678,14 @@
 \newbox\groupbox
 \def\vfilllimit{0.7}
 %
-\def\group{\begingroup
-  \ifnum\catcode13=\active \else
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
     \errhelp = \groupinvalidhelp
     \errmessage{@group invalid in context where filling is enabled}%
   \fi
-  %
-  % The \vtop we start below produces a box with normal height and large
-  % depth; thus, TeX puts \baselineskip glue before it, and (when the
-  % next line of text is done) \lineskip glue after it.  (See p.82 of
-  % the TeXbook.)  Thus, space below is not quite equal to space
-  % above.  But it's pretty close.
-  \def\Egroup{%
-    \egroup           % End the \vtop.
-    % \dimen0 is the vertical size of the group's box.
-    \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
-    % \dimen2 is how much space is left on the page (more or less).
-    \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
-    % if the group doesn't fit on the current page, and it's a big big
-    % group, force a page break.
-    \ifdim \dimen0 > \dimen2
-      \ifdim \pagetotal < \vfilllimit\pageheight
-        \page
-      \fi
-    \fi
-    \copy\groupbox
-    \endgroup         % End the \group.
-  }%
+  \startsavinginserts
   %
   \setbox\groupbox = \vtop\bgroup
-    % We have to put a strut on the last line in case the @group is in
-    % the midst of an example, rather than completely enclosing it.
-    % Otherwise, the interline space between the last line of the group
-    % and the first line afterwards is too small.  But we can't put the
-    % strut in \Egroup, since there it would be on a line by itself.
-    % Hence this just inserts a strut at the beginning of each line.
-    \everypar = {\strut}%
-    %
-    % Since we have a strut on every line, we don't need any of TeX's
-    % normal interline spacing.
-    \offinterlineskip
-    %
-    % OK, but now we have to do something about blank
-    % lines in the input in @example-like environments, which normally
-    % just turn into \lisppar, which will insert no space now that we've
-    % turned off the interline space.  Simplest is to make them be an
-    % empty paragraph.
-    \ifx\par\lisppar
-      \edef\par{\leavevmode \par}%
-      %
-      % Reset ^^M's definition to new definition of \par.
-      \obeylines
-    \fi
-    %
     % Do @comment since we are called inside an environment such as
     % @example, where each end-of-line in the input causes an
     % end-of-line in the output.  We don't want the end-of-line after
@@ -636,6 +695,32 @@
     \comment
 }
 %
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
 % TeX puts in an \escapechar (i.e., `@') at the beginning of the help
 % message, so this ends up printing `@group can only ...'.
 %
@@ -648,10 +733,8 @@ where each line of input produces a line of output.}
 
 \newdimen\mil  \mil=0.001in
 
-\def\need{\parsearg\needx}
-
 % Old definition--didn't work.
-%\def\needx #1{\par %
+%\parseargdef\need{\par %
 %% This method tries to make TeX break the page naturally
 %% if the depth of the box does not fit.
 %{\baselineskip=0pt%
@@ -659,7 +742,7 @@ where each line of input produces a line of output.}
 %\prevdepth=-1000pt
 %}}
 
-\def\needx#1{%
+\parseargdef\need{%
   % Ensure vertical mode, so we don't make a big box in the middle of a
   % paragraph.
   \par
@@ -698,35 +781,10 @@ where each line of input produces a line of output.}
   \fi
 }
 
-% @br   forces paragraph break
+% @br   forces paragraph break (and is undocumented).
 
 \let\br = \par
 
-% @dots{} output an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
-%
-\def\dots{%
-  \leavevmode
-  \hbox to 1.5em{%
-    \hskip 0pt plus 0.25fil minus 0.25fil
-    .\hss.\hss.%
-    \hskip 0pt plus 0.5fil minus 0.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \leavevmode
-  \hbox to 2em{%
-    \hskip 0pt plus 0.25fil minus 0.25fil
-    .\hss.\hss.\hss.%
-    \hskip 0pt plus 0.5fil minus 0.5fil
-  }%
-  \spacefactor=3000
-}
-
 % @page forces the start of a new page.
 %
 \def\page{\par\vfill\supereject}
@@ -739,13 +797,11 @@ where each line of input produces a line of output.}
 \newskip\exdentamount
 
 % This defn is used inside fill environments such as @defun.
-\def\exdent{\parsearg\exdentyyy}
-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
 
 % This defn is used inside nofill environments such as @example.
-\def\nofillexdent{\parsearg\nofillexdentyyy}
-\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
-\leftline{\hskip\leftskip{\rm#1}}}}
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
 
 % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
 % paragraph.  For more general purposes, use the \margin insertion
@@ -797,8 +853,19 @@ where each line of input produces a line of output.}
 }
 
 % @include file    insert text of that file as input.
-% Allow normal characters that  we make active in the argument (a file name).
-\def\include{\begingroup
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable
+    \def\temp{\input #1 }%
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
   \catcode`\\=\other
   \catcode`~=\other
   \catcode`^=\other
@@ -807,33 +874,50 @@ where each line of input produces a line of output.}
   \catcode`<=\other
   \catcode`>=\other
   \catcode`+=\other
-  \parsearg\includezzz}
-% Restore active chars for included file.
-\def\includezzz#1{\endgroup\begingroup
-  % Read the included file in a group so nested @include's work.
-  \def\thisfile{#1}%
-  \let\value=\expandablevalue
-  \input\thisfile
-\endgroup}
+  \catcode`-=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
 
 \def\thisfile{}
 
 % @center line
 % outputs that line, centered.
 %
-\def\center{\parsearg\docenter}
-\def\docenter#1{{%
-  \ifhmode \hfil\break \fi
-  \advance\hsize by -\leftskip
-  \advance\hsize by -\rightskip
-  \line{\hfil \ignorespaces#1\unskip \hfil}%
-  \ifhmode \break \fi
-}}
+\parseargdef\center{%
+  \ifhmode
+    \let\next\centerH
+  \else
+    \let\next\centerV
+  \fi
+  \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+  {%
+    \hfil\break
+    \advance\hsize by -\leftskip
+    \advance\hsize by -\rightskip
+    \line{#1}%
+    \break
+  }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
 
 % @sp n   outputs n lines of vertical space
 
-\def\sp{\parsearg\spxxx}
-\def\spxxx #1{\vskip #1\baselineskip}
+\parseargdef\sp{\vskip #1\baselineskip}
 
 % @comment ...line which is ignored...
 % @c is the same as @comment
@@ -854,8 +938,7 @@ where each line of input produces a line of output.}
 \def\asisword{asis} % no translation, these are keywords
 \def\noneword{none}
 %
-\def\paragraphindent{\parsearg\doparagraphindent}
-\def\doparagraphindent#1{%
+\parseargdef\paragraphindent{%
   \def\temp{#1}%
   \ifx\temp\asisword
   \else
@@ -872,8 +955,7 @@ where each line of input produces a line of output.}
 % We'll use ems for NCHARS like @paragraphindent.
 % It seems @exampleindent asis isn't necessary, but
 % I preserve it to make it similar to @paragraphindent.
-\def\exampleindent{\parsearg\doexampleindent}
-\def\doexampleindent#1{%
+\parseargdef\exampleindent{%
   \def\temp{#1}%
   \ifx\temp\asisword
   \else
@@ -887,21 +969,18 @@ where each line of input produces a line of output.}
 
 % @firstparagraphindent WORD
 % If WORD is `none', then suppress indentation of the first paragraph
-% after a section heading.  If WORD is `insert', then do indentat such
+% after a section heading.  If WORD is `insert', then do indent at such
 % paragraphs.
 %
 % The paragraph indentation is suppressed or not by calling
-% \suppressfirstparagraphindent, which the sectioning commands do.  We
-% switch the definition of this back and forth according to WORD.  By
-% default, we suppress indentation.
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
 %
 \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
-\newdimen\currentparindent
-%
 \def\insertword{insert}
 %
-\def\firstparagraphindent{\parsearg\dofirstparagraphindent}
-\def\dofirstparagraphindent#1{%
+\parseargdef\firstparagraphindent{%
   \def\temp{#1}%
   \ifx\temp\noneword
     \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
@@ -921,15 +1000,24 @@ where each line of input produces a line of output.}
 %
 \gdef\dosuppressfirstparagraphindent{%
   \gdef\indent{%
-    \global\let\indent=\ptexindent
-    \global\everypar = {}%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
   }%
   \global\everypar = {%
-    \kern-\parindent
-    \global\let\indent=\ptexindent
-    \global\everypar = {}%
+    \kern -\parindent
+    \restorefirstparagraphindent
   }%
-}%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
 
 
 % @asis just yields its argument.  Used with @table, for example.
@@ -937,23 +1025,18 @@ where each line of input produces a line of output.}
 \def\asis#1{#1}
 
 % @math outputs its argument in math mode.
-% We don't use $'s directly in the definition of \math because we need
-% to set catcodes according to plain TeX first, to allow for subscripts,
-% superscripts, special math chars, etc.
-%
-\let\implicitmath = $%$ font-lock fix
 %
 % One complication: _ usually means subscripts, but it could also mean
 % an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ within @math be active (mathcode "8000), and distinguish by seeing
-% if the current family is \slfam, which is what @var uses.
-%
-{\catcode\underChar = \active
-\gdef\mathunderscore{%
-  \catcode\underChar=\active
-  \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-}}
-%
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode\underChar = \active
+  \gdef\mathunderscore{%
+    \catcode\underChar=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
 % Another complication: we want \\ (and @\) to output a \ character.
 % FYI, plain.tex uses \\ as a temporary control sequence (why?), but
 % this is not advertised and we don't care.  Texinfo does not
@@ -964,15 +1047,16 @@ where each line of input produces a line of output.}
 %
 \def\math{%
   \tex
-  \mathcode`\_="8000 \mathunderscore
+  \mathunderscore
   \let\\ = \mathbackslash
   \mathactive
-  \implicitmath\finishmath}
-\def\finishmath#1{#1\implicitmath\Etex}
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
 
 % Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an
-% argument to a command which set the catcodes (such as @item or @section).
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
 %
 {
   \catcode`^ = \active
@@ -988,8 +1072,33 @@ where each line of input produces a line of output.}
 }
 
 % @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{\implicitmath\ptexbullet\implicitmath}
-\def\minus{\implicitmath-\implicitmath}
+\def\bullet{$\ptexbullet$}
+\def\minus{$-$}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in a typewriter
+% font as three actual period characters.
+%
+\def\dots{%
+  \leavevmode
+  \hbox to 1.5em{%
+    \hskip 0pt plus 0.25fil
+    .\hfil.\hfil.%
+    \hskip 0pt plus 0.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=3000
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
 
 % @refill is a no-op.
 \let\refill=\relax
@@ -1005,20 +1114,20 @@ where each line of input produces a line of output.}
 % So open here the files we need to have open while reading the input.
 % This makes it possible to make a .fmt file for texinfo.
 \def\setfilename{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
    \iflinks
-     \readauxfile
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
    \fi % \openindices needs to do some work in any case.
    \openindices
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
    %
    % If texinfo.cnf is present on the system, read it.
    % Useful for site-wide @afourpaper, etc.
-   % Just to be on the safe side, close the input stream before the \input.
    \openin 1 texinfo.cnf
-   \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi
-   \closein1
-   \temp
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
    %
    \comment % Ignore the actual filename.
 }
@@ -1054,17 +1163,23 @@ where each line of input produces a line of output.}
 \newif\ifpdf
 \newif\ifpdfmakepagedest
 
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
 \ifx\pdfoutput\undefined
-  \pdffalse
-  \let\pdfmkdest = \gobble
-  \let\pdfurl = \gobble
-  \let\endlink = \relax
-  \let\linkcolor = \relax
-  \let\pdfmakeoutlines = \relax
 \else
-  \pdftrue
-  \pdfoutput = 1
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+%
+\ifpdf
   \input pdfcolor
+  \pdfcatalog{/PageMode /UseOutlines}%
   \def\dopdfimage#1#2#3{%
     \def\imagewidth{#2}%
     \def\imageheight{#3}%
@@ -1085,7 +1200,13 @@ where each line of input produces a line of output.}
     \ifnum\pdftexversion < 14 \else
       \pdfrefximage \pdflastximage
     \fi}
-  \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code in a section title
+    % aren't expanded.
+    \atdummies
+    \normalturnoffactive
+    \pdfdest name{#1} xyz%
+  }}
   \def\pdfmkpgn#1{#1}
   \let\linkcolor = \Blue  % was Cyan, but that seems light?
   \def\endlink{\Black\pdfendlink}
@@ -1094,48 +1215,94 @@ where each line of input produces a line of output.}
   \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
     \else \csname#1\endcsname \fi}
   \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
-    \advance\tempnum by1
+    \advance\tempnum by 1
     \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
-  \def\pdfmakeoutlines{{%
-    \openin 1 \jobname.toc
-    \ifeof 1\else\begingroup
-      \closein 1
+  %
+  % #1 is the section text.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node
+  % text, which might be empty if this toc entry had no
+  % corresponding node.  #4 is the page number.
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worthwhile, since most documents are normally structured.
+    \def\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
       % Thanh's hack / proper braces in bookmarks
       \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
       \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
       %
-      \def\chapentry ##1##2##3{}
-      \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
-      \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
-      \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
-      \let\appendixentry = \chapentry
-      \let\unnumbchapentry = \chapentry
-      \let\unnumbsecentry = \secentry
-      \let\unnumbsubsecentry = \subsecentry
-      \let\unnumbsubsubsecentry = \subsubsecentry
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\numchapentry##1##2##3##4{%
+	\def\thischapnum{##2}%
+	\def\thissecnum{0}%
+	\def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+	\advancenumber{chap\thischapnum}%
+	\def\thissecnum{##2}%
+	\def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+	\advancenumber{sec\thissecnum}%
+	\def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+	\advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
       \input \jobname.toc
-      \def\chapentry ##1##2##3{%
-        \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
-      \def\secentry ##1##2##3##4{%
-        \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
-      \def\subsecentry ##1##2##3##4##5{%
-        \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
-      \def\subsubsecentry ##1##2##3##4##5##6{%
-        \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
-      \let\appendixentry = \chapentry
-      \let\unnumbchapentry = \chapentry
-      \let\unnumbsecentry = \secentry
-      \let\unnumbsubsecentry = \subsecentry
-      \let\unnumbsubsubsecentry = \subsubsecentry
       %
-      % Make special characters normal for writing to the pdf file.
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
       %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % xx to do this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Right
+      % now, I guess we'll just let the pdf reader have its way.
       \indexnofonts
-      \let\tt=\relax
       \turnoffactive
       \input \jobname.toc
-    \endgroup\fi
-  }}
+    \endgroup
+  }
+  %
   \def\makelinks #1,{%
     \def\params{#1}\def\E{END}%
     \ifx\params\E
@@ -1166,7 +1333,6 @@ where each line of input produces a line of output.}
   \def\ppn#1{\pgn=#1\gobble}
   \def\ppnn{\pgn=\first}
   \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
   \def\skipspaces#1{\def\PP{#1}\def\D{|}%
     \ifx\PP\D\let\nextsp\relax
     \else\let\nextsp\skipspaces
@@ -1184,18 +1350,17 @@ where each line of input produces a line of output.}
   \def\pdfurl#1{%
     \begingroup
       \normalturnoffactive\def\@{@}%
-      \let\value=\expandablevalue
+      \makevalueexpandable
       \leavevmode\Red
       \startlink attr{/Border [0 0 0]}%
         user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
-        % #1
     \endgroup}
   \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
   \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
   \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
   \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
   \def\maketoks{%
-    \expandafter\poptoks\the\toksA|ENDTOKS|
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
     \ifx\first0\adn0
     \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
     \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
@@ -1215,20 +1380,44 @@ where each line of input produces a line of output.}
     \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
     \linkcolor #1\endlink}
   \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % \ifx\pdfoutput
+\else
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\linkcolor = \relax
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
 
 
 \message{fonts,}
-% Font-change commands.
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
 
 % Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
+% So we set up a \sf.
 \newfam\sffam
-\def\sf{\fam=\sffam \tensf}
+\def\sf{\fam=\sffam \setfontstyle{sf}}
 \let\li = \sf % Sometimes we call it \li, not \sf.
 
-% We don't need math for this one.
-\def\ttsl{\tenttsl}
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
 
 % Default leading.
 \newdimen\textleading  \textleading = 13.2pt
@@ -1279,21 +1468,11 @@ where each line of input produces a line of output.}
 \def\scshape{csc}
 \def\scbshape{csc}
 
-\newcount\mainmagstep
-\ifx\bigger\relax
-  % not really supported.
-  \mainmagstep=\magstep1
-  \setfont\textrm\rmshape{12}{1000}
-  \setfont\texttt\ttshape{12}{1000}
-\else
-  \mainmagstep=\magstephalf
-  \setfont\textrm\rmshape{10}{\mainmagstep}
-  \setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
-% Instead of cmb10, you may want to use cmbx10.
-% cmbx10 is a prettier font on its own, but cmb10
-% looks better when embedded in a line with cmr10
-% (in Bob's opinion).
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
 \setfont\textbf\bfshape{10}{\mainmagstep}
 \setfont\textit\itshape{10}{\mainmagstep}
 \setfont\textsl\slshape{10}{\mainmagstep}
@@ -1303,12 +1482,14 @@ where each line of input produces a line of output.}
 \font\texti=cmmi10 scaled \mainmagstep
 \font\textsy=cmsy10 scaled \mainmagstep
 
-% A few fonts for @defun, etc.
-\setfont\defbf\bxshape{10}{\magstep1} %was 1314
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}
 \setfont\deftt\ttshape{10}{\magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
+\setfont\defttsl\ttslshape{10}{\magstep1}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
 
 % Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
 \setfont\smallrm\rmshape{9}{1000}
 \setfont\smalltt\ttshape{9}{1000}
 \setfont\smallbf\bfshape{10}{900}
@@ -1321,6 +1502,7 @@ where each line of input produces a line of output.}
 \font\smallsy=cmsy9
 
 % Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
 \setfont\smallerrm\rmshape{8}{1000}
 \setfont\smallertt\ttshape{8}{1000}
 \setfont\smallerbf\bfshape{10}{800}
@@ -1332,7 +1514,8 @@ where each line of input produces a line of output.}
 \font\smalleri=cmmi8
 \font\smallersy=cmsy8
 
-% Fonts for title page:
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
 \setfont\titlerm\rmbshape{12}{\magstep3}
 \setfont\titleit\itbshape{10}{\magstep4}
 \setfont\titlesl\slbshape{10}{\magstep4}
@@ -1347,6 +1530,7 @@ where each line of input produces a line of output.}
 \def\authortt{\sectt}
 
 % Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
 \setfont\chaprm\rmbshape{12}{\magstep2}
 \setfont\chapit\itbshape{10}{\magstep3}
 \setfont\chapsl\slbshape{10}{\magstep3}
@@ -1359,6 +1543,7 @@ where each line of input produces a line of output.}
 \font\chapsy=cmsy10 scaled \magstep3
 
 % Section fonts (14.4pt).
+\def\secnominalsize{14pt}
 \setfont\secrm\rmbshape{12}{\magstep1}
 \setfont\secit\itbshape{10}{\magstep2}
 \setfont\secsl\slbshape{10}{\magstep2}
@@ -1371,6 +1556,7 @@ where each line of input produces a line of output.}
 \font\secsy=cmsy10 scaled \magstep2
 
 % Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
 \setfont\ssecrm\rmbshape{12}{\magstephalf}
 \setfont\ssecit\itbshape{10}{1315}
 \setfont\ssecsl\slbshape{10}{1315}
@@ -1378,11 +1564,22 @@ where each line of input produces a line of output.}
 \setfont\ssecttsl\ttslshape{10}{1315}
 \setfont\ssecsf\sfbshape{12}{\magstephalf}
 \let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{\magstep1}
+\setfont\ssecsc\scbshape{10}{1315}
 \font\sseci=cmmi12 scaled \magstephalf
 \font\ssecsy=cmsy10 scaled 1315
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}
+\setfont\reducedtt\ttshape{10}{1000}
+\setfont\reducedbf\bfshape{10}{1000}
+\setfont\reducedit\itshape{10}{1000}
+\setfont\reducedsl\slshape{10}{1000}
+\setfont\reducedsf\sfshape{10}{1000}
+\setfont\reducedsc\scshape{10}{1000}
+\setfont\reducedttsl\ttslshape{10}{1000}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
 
 % In order for the font changes to affect most math symbols and letters,
 % we have to define the \textfont of the standard families.  Since
@@ -1397,50 +1594,81 @@ where each line of input produces a line of output.}
 }
 
 % The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE.  We do this so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current font.  Plain TeX does \def\bf{\fam=\bffam
-% \tenbf}, for example.  By redefining \tenbf, we obviate the need to
-% redefine \bf itself.
+% of just \STYLE.  We do this because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
 \def\textfonts{%
   \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
   \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
-  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
   \resetmathfonts \setleading{\textleading}}
 \def\titlefonts{%
   \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
   \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
   \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
   \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
   \resetmathfonts \setleading{25pt}}
 \def\titlefont#1{{\titlefonts\rm #1}}
 \def\chapfonts{%
   \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
   \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
-  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
   \resetmathfonts \setleading{19pt}}
 \def\secfonts{%
   \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
   \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
-  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
   \resetmathfonts \setleading{16pt}}
 \def\subsecfonts{%
   \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
   \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
-  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
   \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
 \def\smallfonts{%
   \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
   \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
   \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
   \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
   \resetmathfonts \setleading{10.5pt}}
 \def\smallerfonts{%
   \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
   \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
   \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
   \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
   \resetmathfonts \setleading{9.5pt}}
 
 % Set the fonts to use with the @small... environments.
@@ -1449,7 +1677,7 @@ where each line of input produces a line of output.}
 % About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
 % can fit this many characters:
 %   8.5x11=86   smallbook=72  a4=90  a5=69
-% If we use \smallerfonts (8pt), then we can fit this many characters:
+% If we use \scriptfonts (8pt), then we can fit this many characters:
 %   8.5x11=90+  smallbook=80  a4=90+  a5=77
 % For me, subjectively, the few extra characters that fit aren't worth
 % the additional smallness of 8pt.  So I'm making the default 9pt.
@@ -1457,14 +1685,13 @@ where each line of input produces a line of output.}
 % By the way, for comparison, here's what fits with @example (10pt):
 %   8.5x11=71  smallbook=60  a4=75  a5=58
 %
-% I wish we used A4 paper on this side of the Atlantic.
-%
+% I wish the USA used A4 paper.
 % --karl, 24jan03.
 
 
 % Set up the default fonts, so we can use them for creating boxes.
 %
-\textfonts
+\textfonts \rm
 
 % Define these so they can be easily changed for other fonts.
 \def\angleleft{$\langle$}
@@ -1475,7 +1702,7 @@ where each line of input produces a line of output.}
 
 % Fonts for short table of contents.
 \setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bxshape{12}{1000}
+\setfont\shortcontbf\bfshape{10}{\magstep1}  % no cmb12
 \setfont\shortcontsl\slshape{12}{1000}
 \setfont\shortconttt\ttshape{12}{1000}
 
@@ -1489,15 +1716,27 @@ where each line of input produces a line of output.}
 \def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
 \def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
 
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
 \let\i=\smartitalic
+\let\slanted=\smartslanted
 \let\var=\smartslanted
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
-\let\cite=\smartslanted
 
+% @b, explicit bold.
 \def\b#1{{\bf #1}}
 \let\strong=\b
 
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
 % We can't just use \exhyphenpenalty, because that only has effect at
 % the end of a paragraph.  Restore normal hyphenation at the end of the
 % group within which \nohyphenation is presumably called.
@@ -1520,7 +1759,6 @@ where each line of input produces a line of output.}
   {\tt \rawbackslash \frenchspacing #1}%
   \null
 }
-\let\ttfont=\t
 \def\samp#1{`\tclose{#1}'\null}
 \setfont\keyrm\rmshape{8}{1000}
 \font\keysy=cmsy9
@@ -1561,7 +1799,7 @@ where each line of input produces a line of output.}
   \null
 }
 
-% We *must* turn on hyphenation at `-' and `_' in \code.
+% We *must* turn on hyphenation at `-' and `_' in @code.
 % Otherwise, it is too hard to avoid overfull hboxes
 % in the Emacs manual, the Library manual, etc.
 
@@ -1579,10 +1817,6 @@ where each line of input produces a line of output.}
     \catcode`\_=\active \let_\codeunder
     \codex
   }
-  %
-  % If we end up with any active - characters when handling the index,
-  % just treat them as a normal -.
-  \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
 }
 
 \def\realdash{-}
@@ -1606,8 +1840,7 @@ where each line of input produces a line of output.}
 % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
 %   `example' (@kbd uses ttsl only inside of @example and friends),
 %   or `code' (@kbd uses normal tty font always).
-\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
-\def\kbdinputstylexxx#1{%
+\parseargdef\kbdinputstyle{%
   \def\arg{#1}%
   \ifx\arg\worddistinct
     \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
@@ -1633,8 +1866,8 @@ where each line of input produces a line of output.}
 \else{\tclose{\kbdfont\look}}\fi
 \else{\tclose{\kbdfont\look}}\fi}
 
-% For @url, @env, @command quotes seem unnecessary, so use \code.
-\let\url=\code
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
 \let\env=\code
 \let\command=\code
 
@@ -1666,6 +1899,10 @@ where each line of input produces a line of output.}
   \endlink
 \endgroup}
 
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
 % rms does not like angle brackets --karl, 17may97.
 % So now @email is just like @uref, unless we are pdf.
 %
@@ -1707,22 +1944,101 @@ where each line of input produces a line of output.}
 \def\sc#1{{\smallcaps#1}}       % smallcaps font
 \def\ii#1{{\it #1}}             % italic font
 
-% @acronym downcases the argument and prints in smallcaps.
-\def\acronym#1{{\smallcaps \lowercase{#1}}}
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+% 
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+% 
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\frenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
 
-% @pounds{} is a sterling sign.
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
 \def\pounds{{\it\$}}
 
-% @registeredsymbol - R in a circle.  For now, only works in text size;
-% we'd have to redo the font mechanism to change the \scriptstyle and
-% \scriptscriptstyle font sizes to make it look right in headings.
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+% 
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+% 
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+% 
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+% 
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+% 
+% 
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbold don't have to have the
+  % font installed.
+  % 
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  % 
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  % 
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename 
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else 
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
 % Adapted from the plain.tex definition of \copyright.
 %
 \def\registeredsymbol{%
-  $^{{\ooalign{\hfil\raise.07ex\hbox{$\scriptstyle\rm R$}\hfil\crcr\Orb}}%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
     }$%
 }
 
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+% 
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
 
 \message{page headings,}
 
@@ -1741,87 +2057,103 @@ where each line of input produces a line of output.}
 \newif\ifsetshortcontentsaftertitlepage
  \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
 
-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
         \endgroup\page\hbox{}\page}
 
-\def\titlepage{\begingroup \parindent=0pt \textfonts
-   \let\subtitlerm=\tenrm
-   \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
-   %
-   \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
-                   \let\tt=\authortt}%
-   %
-   % Leave some space at the very top of the page.
-   \vglue\titlepagetopglue
-   %
-   % Now you can print the title using @title.
-   \def\title{\parsearg\titlezzz}%
-   \def\titlezzz##1{\leftline{\titlefonts\rm ##1}
-                    % print a rule at the page bottom also.
-                    \finishedtitlepagefalse
-                    \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
-   % No rule at page bottom unless we print one at the top with @title.
-   \finishedtitlepagetrue
-   %
-   % Now you can put text using @subtitle.
-   \def\subtitle{\parsearg\subtitlezzz}%
-   \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
-   %
-   % @author should come last, but may come many times.
-   \def\author{\parsearg\authorzzz}%
-   \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
-      {\authorfont \leftline{##1}}}%
-   %
-   % Most title ``pages'' are actually two pages long, with space
-   % at the top of the second.  We don't want the ragged left on the second.
-   \let\oldpage = \page
-   \def\page{%
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % Most title ``pages'' are actually two pages long, with space
+    % at the top of the second.  We don't want the ragged left on the second.
+    \let\oldpage = \page
+    \def\page{%
       \iffinishedtitlepage\else
-         \finishtitlepage
+	 \finishtitlepage
       \fi
-      \oldpage
       \let\page = \oldpage
-      \hbox{}}%
-%   \def\page{\oldpage \hbox{}}
+      \page
+      \null
+    }%
 }
 
 \def\Etitlepage{%
-   \iffinishedtitlepage\else
-      \finishtitlepage
-   \fi
-   % It is important to do the page break before ending the group,
-   % because the headline and footline are only empty inside the group.
-   % If we use the new definition of \page, we always get a blank page
-   % after the title page, which we certainly don't want.
-   \oldpage
-   \endgroup
-   %
-   % Need this before the \...aftertitlepage checks so that if they are
-   % in effect the toc pages will come out with page numbers.
-   \HEADINGSon
-   %
-   % If they want short, they certainly want long too.
-   \ifsetshortcontentsaftertitlepage
-     \shortcontents
-     \contents
-     \global\let\shortcontents = \relax
-     \global\let\contents = \relax
-   \fi
-   %
-   \ifsetcontentsaftertitlepage
-     \contents
-     \global\let\contents = \relax
-     \global\let\shortcontents = \relax
-   \fi
+    \iffinishedtitlepage\else
+	\finishtitlepage
+    \fi
+    % It is important to do the page break before ending the group,
+    % because the headline and footline are only empty inside the group.
+    % If we use the new definition of \page, we always get a blank page
+    % after the title page, which we certainly don't want.
+    \oldpage
+  \endgroup
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
 }
 
 \def\finishtitlepage{%
-   \vskip4pt \hrule height 2pt width \hsize
-   \vskip\titlepagebottomglue
-   \finishedtitlepagetrue
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
+		\let\tt=\authortt}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \leftline{\titlefonts\rm #1}
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\authorfont \leftline{#1}}%
+  \fi
 }
 
+
 %%% Set up page headings and footings.
 
 \let\thispage=\folio
@@ -1831,7 +2163,7 @@ where each line of input produces a line of output.}
 \newtoks\evenfootline    % footline on even pages
 \newtoks\oddfootline     % footline on odd pages
 
-% Now make Tex use those variables
+% Now make TeX use those variables
 \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
                             \else \the\evenheadline \fi}}
 \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
@@ -1845,32 +2177,27 @@ where each line of input produces a line of output.}
 % @evenfooting @thisfile||
 % @oddfooting ||@thisfile
 
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\everyheading{\parsearg\everyheadingxxx}
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\everyfooting{\parsearg\everyfootingxxx}
 
-{\catcode`\@=0 %
-
-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
 \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
 
-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
 \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
 
-\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
 
-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
 \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
 
-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
-\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
   \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
   %
   % Leave some space for the footline.  Hopefully ok to assume
@@ -1879,9 +2206,8 @@ where each line of input produces a line of output.}
   \global\advance\vsize by -\baselineskip
 }
 
-\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-%
-}% unbind the catcode of @.
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
 
 % @headings double      turns headings on for double-sided printing.
 % @headings single      turns headings on for single-sided printing.
@@ -1895,7 +2221,7 @@ where each line of input produces a line of output.}
 
 \def\headings #1 {\csname HEADINGS#1\endcsname}
 
-\def\HEADINGSoff{
+\def\HEADINGSoff{%
 \global\evenheadline={\hfil} \global\evenfootline={\hfil}
 \global\oddheadline={\hfil} \global\oddfootline={\hfil}}
 \HEADINGSoff
@@ -1904,7 +2230,7 @@ where each line of input produces a line of output.}
 % chapter name on inside top of right hand pages, document
 % title on inside top of left hand pages, and page numbers on outside top
 % edge of all pages.
-\def\HEADINGSdouble{
+\def\HEADINGSdouble{%
 \global\pageno=1
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
@@ -1916,7 +2242,7 @@ where each line of input produces a line of output.}
 
 % For single-sided printing, chapter title goes across top left of page,
 % page number on top right.
-\def\HEADINGSsingle{
+\def\HEADINGSsingle{%
 \global\pageno=1
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
@@ -1963,12 +2289,11 @@ where each line of input produces a line of output.}
 % @settitle line...  specifies the title of the document, for headings.
 % It generates no output of its own.
 \def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg\settitlezzz}
-\def\settitlezzz #1{\gdef\thistitle{#1}}
+\def\settitle{\parsearg{\gdef\thistitle}}
 
 
 \message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
+% Tables -- @table, @ftable, @vtable, @item(x).
 
 % default indentation of table text
 \newdimen\tableindent \tableindent=.8in
@@ -1980,7 +2305,7 @@ where each line of input produces a line of output.}
 % used internally for \itemindent minus \itemmargin
 \newdimen\itemmax
 
-% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
 % these defs.
 % They also define \itemindex
 % to index the item name in whatever manner is desired (perhaps none).
@@ -1992,22 +2317,10 @@ where each line of input produces a line of output.}
 \def\internalBitem{\smallbreak \parsearg\itemzzz}
 \def\internalBitemx{\itemxpar \parsearg\itemzzz}
 
-\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
-
-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
-
-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
-                 \itemzzz {#1}}
-
-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
-                 \itemzzz {#1}}
-
 \def\itemzzz #1{\begingroup %
   \advance\hsize by -\rightskip
   \advance\hsize by -\tableindent
-  \setbox0=\hbox{\itemfont{#1}}%
+  \setbox0=\hbox{\itemindicate{#1}}%
   \itemindex{#1}%
   \nobreak % This prevents a break before @itemx.
   %
@@ -2031,17 +2344,13 @@ where each line of input produces a line of output.}
     % \parskip glue -- logically it's part of the @item we just started.
     \nobreak \vskip-\parskip
     %
-    % Stop a page break at the \parskip glue coming up.  (Unfortunately
-    % we can't prevent a possible page break at the following
-    % \baselineskip glue.)  However, if what follows is an environment
-    % such as @example, there will be no \parskip glue; then
-    % the negative vskip we just would cause the example and the item to
-    % crash together.  So we use this bizarre value of 10001 as a signal
-    % to \aboveenvbreak to insert \parskip glue after all.
-    % (Possibly there are other commands that could be followed by
-    % @example which need the same treatment, but not section titles; or
-    % maybe section titles are the only special case and they should be
-    % penalty 10001...)
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    % 
     \penalty 10001
     \endgroup
     \itemxneedsnegativevskipfalse
@@ -2061,81 +2370,72 @@ where each line of input produces a line of output.}
   \fi
 }
 
-\def\item{\errmessage{@item while not in a table}}
-\def\itemx{\errmessage{@itemx while not in a table}}
-\def\kitem{\errmessage{@kitem while not in a table}}
-\def\kitemx{\errmessage{@kitemx while not in a table}}
-\def\xitem{\errmessage{@xitem while not in a table}}
-\def\xitemx{\errmessage{@xitemx while not in a table}}
-
-% Contains a kludge to get @end[description] to work.
-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
 
 % @table, @ftable, @vtable.
-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
-{\obeylines\obeyspaces%
-\gdef\tablex #1^^M{%
-\tabley\dontindex#1        \endtabley}}
-
-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
-{\obeylines\obeyspaces%
-\gdef\ftablex #1^^M{%
-\tabley\fnitemindex#1        \endtabley
-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
-{\obeylines\obeyspaces%
-\gdef\vtablex #1^^M{%
-\tabley\vritemindex#1        \endtabley
-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\dontindex #1{}
-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
-
-{\obeyspaces %
-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
-
-\def\tablez #1#2#3#4#5#6{%
-\aboveenvbreak %
-\begingroup %
-\def\Edescription{\Etable}% Necessary kludge.
-\let\itemindex=#1%
-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
-\ifnum 0#4>0 \tableindent=#4\mil \fi %
-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
-\def\itemfont{#2}%
-\itemmax=\tableindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \tableindent %
-\exdentamount=\tableindent
-\parindent = 0pt
-\parskip = \smallskipamount
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def\Etable{\endgraf\afterenvbreak\endgroup}%
-\let\item = \internalBitem %
-\let\itemx = \internalBitemx %
-\let\kitem = \internalBkitem %
-\let\kitemx = \internalBkitemx %
-\let\xitem = \internalBxitem %
-\let\xitemx = \internalBxitemx %
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
 }
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
 
 % This is the counter used by @enumerate, which is really @itemize
 
 \newcount \itemno
 
-\def\itemize{\parsearg\itemizezzz}
-
-\def\itemizezzz #1{%
-  \begingroup % ended by the @end itemize
-  \itemizey {#1}{\Eitemize}
-}
+\envdef\itemize{\parsearg\doitemize}
 
-\def\itemizey#1#2{%
+\def\doitemize#1{%
   \aboveenvbreak
   \itemmax=\itemindent
   \advance\itemmax by -\itemmargin
@@ -2144,13 +2444,33 @@ where each line of input produces a line of output.}
   \parindent=0pt
   \parskip=\smallskipamount
   \ifdim\parskip=0pt \parskip=2pt \fi
-  \def#2{\endgraf\afterenvbreak\endgroup}%
   \def\itemcontents{#1}%
   % @itemize with no arg is equivalent to @itemize @bullet.
   \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
   \let\item=\itemizeitem
 }
 
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
 % \splitoff TOKENS\endmark defines \first to be the first token in
 % TOKENS, and \rest to be the remainder.
 %
@@ -2160,11 +2480,8 @@ where each line of input produces a line of output.}
 % or number, to specify the first label in the enumerated list.  No
 % argument is the same as `1'.
 %
-\def\enumerate{\parsearg\enumeratezzz}
-\def\enumeratezzz #1{\enumeratey #1  \endenumeratey}
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
 \def\enumeratey #1 #2\endenumeratey{%
-  \begingroup % ended by the @end enumerate
-  %
   % If we were given no argument, pretend we were given `1'.
   \def\thearg{#1}%
   \ifx\thearg\empty \def\thearg{1}\fi
@@ -2235,13 +2552,13 @@ where each line of input produces a line of output.}
   }%
 }
 
-% Call itemizey, adding a period to the first argument and supplying the
+% Call \doitemize, adding a period to the first argument and supplying the
 % common last two arguments.  Also subtract one from the initial value in
 % \itemno, since @item increments \itemno.
 %
 \def\startenumeration#1{%
   \advance\itemno by -1
-  \itemizey{#1.}\Eenumerate\flushcr
+  \doitemize{#1.}\flushcr
 }
 
 % @alphaenumerate and @capsenumerate are abbreviations for giving an arg
@@ -2252,16 +2569,6 @@ where each line of input produces a line of output.}
 \def\Ealphaenumerate{\Eenumerate}
 \def\Ecapsenumerate{\Eenumerate}
 
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{In hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
 
 % @multitable macros
 % Amy Hendrickson, 8/18/94, 3/6/96
@@ -2288,24 +2595,14 @@ where each line of input produces a line of output.}
 %   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
 %   @item ...
 %   using the widest term desired in each column.
-%
-% For those who want to use more than one line's worth of words in
-% the preamble, break the line within one argument and it
-% will parse correctly, i.e.,
-%
-%     @multitable {Column 1 template} {Column 2 template} {Column 3
-%      template}
-% Not:
-%     @multitable {Column 1 template} {Column 2 template}
-%      {Column 3 template}
 
 % Each new table line starts with @item, each subsequent new column
 % starts with @tab. Empty columns may be produced by supplying @tab's
 % with nothing between them for as many times as empty columns are needed,
 % ie, @tab@tab@tab will produce two empty columns.
 
-% @item, @tab, @multitable or @end multitable do not need to be on their
-% own lines, but it will not hurt if they are.
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
 
 % Sample multitable:
 
@@ -2349,13 +2646,12 @@ where each line of input produces a line of output.}
 \def\xcolumnfractions{\columnfractions}
 \newif\ifsetpercent
 
-% #1 is the part of the @columnfraction before the decimal point, which
-% is presumably either 0 or the empty string (but we don't check, we
-% just throw it away).  #2 is the decimal part, which we use as the
-% percent of \hsize for this column.
-\def\pickupwholefraction#1.#2 {%
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
   \global\advance\colcount by 1
-  \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}%
+  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
   \setuptable
 }
 
@@ -2388,18 +2684,33 @@ where each line of input produces a line of output.}
   \go
 }
 
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  Note that \everycr resets \everytab.
+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we encounter the problem it was intended to solve again.
+%					--karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
 % @multitable ... @end multitable definitions:
 %
-\def\multitable{\parsearg\dotable}
-\def\dotable#1{\bgroup
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
   \vskip\parskip
-  \let\item=\crcrwithfootnotes
-  % A \tab used to include \hskip1sp.  But then the space in a template
-  % line is not enough.  That is bad.  So let's go back to just & until
-  % we encounter the problem it was intended to solve again.  --karl,
-  % nathan@acm.org, 20apr99.
-  \let\tab=&%
-  \let\startfootins=\startsavedfootnote
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
   \tolerance=9500
   \hbadness=9500
   \setmultitablespacing
@@ -2407,85 +2718,93 @@ where each line of input produces a line of output.}
   \parindent=\multitableparindent
   \overfullrule=0pt
   \global\colcount=0
-  \def\Emultitable{%
-    \global\setpercentfalse
-    \crcrwithfootnotes\crcr
-    \egroup\egroup
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+	% Maybe so, but it also creates really weird page breaks when the
+	% table breaks over pages. Wouldn't \vfil be better?  Wait until the
+	% problem manifests itself, so it can be fixed for real --karl.
+    }%
   }%
   %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
   % To parse everything between @multitable and @item:
   \setuptable#1 \endsetuptable
   %
-  % \everycr will reset column counter, \colcount, at the end of
-  % each line. Every column entry will cause \colcount to advance by one.
-  % The table preamble
-  % looks at the current \colcount to find the correct column width.
-  \everycr{\noalign{%
-  %
-  % \filbreak%% keeps underfull box messages off when table breaks over pages.
-  % Maybe so, but it also creates really weird page breaks when the table
-  % breaks over pages. Wouldn't \vfil be better?  Wait until the problem
-  % manifests itself, so it can be fixed for real --karl.
-    \global\colcount=0\relax}}%
-  %
   % This preamble sets up a generic column definition, which will
   % be used as many times as user calls for columns.
   % \vtop will set a single line and will also let text wrap and
   % continue for many paragraphs if desired.
-  \halign\bgroup&\global\advance\colcount by 1\relax
-    \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
-  %
-  % In order to keep entries from bumping into each other
-  % we will add a \leftskip of \multitablecolspace to all columns after
-  % the first one.
-  %
-  % If a template has been used, we will add \multitablecolspace
-  % to the width of each template entry.
-  %
-  % If the user has set preamble in terms of percent of \hsize we will
-  % use that dimension as the width of the column, and the \leftskip
-  % will keep entries from bumping into each other.  Table will start at
-  % left margin and final column will justify at right margin.
-  %
-  % Make sure we don't inherit \rightskip from the outer environment.
-  \rightskip=0pt
-  \ifnum\colcount=1
-    % The first column will be indented with the surrounding text.
-    \advance\hsize by\leftskip
-  \else
-    \ifsetpercent \else
-      % If user has not set preamble in terms of percent of \hsize
-      % we will advance \hsize by \multitablecolspace.
-      \advance\hsize by \multitablecolspace
-    \fi
-   % In either case we will make \leftskip=\multitablecolspace:
-  \leftskip=\multitablecolspace
-  \fi
-  % Ignoring space at the beginning and end avoids an occasional spurious
-  % blank line, when TeX decides to break the line at the space before the
-  % box from the multistrut, so the strut ends up on a line by itself.
-  % For example:
-  % @multitable @columnfractions .11 .89
-  % @item @code{#}
-  % @tab Legal holiday which is valid in major parts of the whole country.
-  % Is automatically provided with highlighting sequences respectively marking
-  % characters.
-  \noindent\ignorespaces##\unskip\multistrut}\cr
-}
-
-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
+  \halign\bgroup &%
+    \global\advance\colcount by 1
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \hsize=\expandafter\csname col\the\colcount\endcsname
+      %
+      % In order to keep entries from bumping into each other
+      % we will add a \leftskip of \multitablecolspace to all columns after
+      % the first one.
+      %
+      % If a template has been used, we will add \multitablecolspace
+      % to the width of each template entry.
+      %
+      % If the user has set preamble in terms of percent of \hsize we will
+      % use that dimension as the width of the column, and the \leftskip
+      % will keep entries from bumping into each other.  Table will start at
+      % left margin and final column will justify at right margin.
+      %
+      % Make sure we don't inherit \rightskip from the outer environment.
+      \rightskip=0pt
+      \ifnum\colcount=1
+	% The first column will be indented with the surrounding text.
+	\advance\hsize by\leftskip
+      \else
+	\ifsetpercent \else
+	  % If user has not set preamble in terms of percent of \hsize
+	  % we will advance \hsize by \multitablecolspace.
+	  \advance\hsize by \multitablecolspace
+	\fi
+       % In either case we will make \leftskip=\multitablecolspace:
+      \leftskip=\multitablecolspace
+      \fi
+      % Ignoring space at the beginning and end avoids an occasional spurious
+      % blank line, when TeX decides to break the line at the space before the
+      % box from the multistrut, so the strut ends up on a line by itself.
+      % For example:
+      % @multitable @columnfractions .11 .89
+      % @item @code{#}
+      % @tab Legal holiday which is valid in major parts of the whole country.
+      % Is automatically provided with highlighting sequences respectively
+      % marking characters.
+      \noindent\ignorespaces##\unskip\multistrut
+    }\cr
+}
+\def\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
 \ifdim\multitablelinespace=0pt
 \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
 \global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \fi
+\fi
 %% Test to see if parskip is larger than space between lines of
 %% table. If not, do nothing.
 %%        If so, set to same dimension as multitablelinespace.
@@ -2500,163 +2819,33 @@ width0pt\relax} \fi
                                       %% than skip between lines in the table.
 \fi}
 
-% In case a @footnote appears inside an alignment, save the footnote
-% text to a box and make the \insert when a row of the table is
-% finished.  Otherwise, the insertion is lost, it never migrates to the
-% main vertical list.  --kasal, 22jan03.
-%
-\newbox\savedfootnotes
-%
-% \dotable \let's \startfootins to this, so that \dofootnote will call
-% it instead of starting the insertion right away.
-\def\startsavedfootnote{%
-  \global\setbox\savedfootnotes = \vbox\bgroup
-    \unvbox\savedfootnotes
-}
-\def\crcrwithfootnotes{%
-  \crcr
-  \ifvoid\savedfootnotes \else
-    \noalign{\insert\footins{\box\savedfootnotes}}%
-  \fi
-}
 
 \message{conditionals,}
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
-  \let\chapter=\relax
-  \let\unnumbered=\relax
-  \let\top=\relax
-  \let\unnumberedsec=\relax
-  \let\unnumberedsection=\relax
-  \let\unnumberedsubsec=\relax
-  \let\unnumberedsubsection=\relax
-  \let\unnumberedsubsubsec=\relax
-  \let\unnumberedsubsubsection=\relax
-  \let\section=\relax
-  \let\subsec=\relax
-  \let\subsubsec=\relax
-  \let\subsection=\relax
-  \let\subsubsection=\relax
-  \let\appendix=\relax
-  \let\appendixsec=\relax
-  \let\appendixsection=\relax
-  \let\appendixsubsec=\relax
-  \let\appendixsubsection=\relax
-  \let\appendixsubsubsec=\relax
-  \let\appendixsubsubsection=\relax
-  \let\contents=\relax
-  \let\smallbook=\relax
-  \let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-% We use \empty instead of \relax for the @def... commands, so that \end
-% doesn't throw an error.  For instance:
-% @ignore
-% @deffn ...
-% @end deffn
-% @end ignore
-%
-% The @end deffn is going to get expanded, because we're trying to allow
-% nested conditionals.  But we don't want to expand the actual @deffn,
-% since it might be syntactically correct and intended to be ignored.
-% Since \end checks for \relax, using \empty does not cause an error.
-%
-\def\ignoremorecommands{%
-  \let\defcodeindex = \relax
-  \let\defcv = \empty
-  \let\defcvx = \empty
-  \let\Edefcv = \empty
-  \let\deffn = \empty
-  \let\deffnx = \empty
-  \let\Edeffn = \empty
-  \let\defindex = \relax
-  \let\defivar = \empty
-  \let\defivarx = \empty
-  \let\Edefivar = \empty
-  \let\defmac = \empty
-  \let\defmacx = \empty
-  \let\Edefmac = \empty
-  \let\defmethod = \empty
-  \let\defmethodx = \empty
-  \let\Edefmethod = \empty
-  \let\defop = \empty
-  \let\defopx = \empty
-  \let\Edefop = \empty
-  \let\defopt = \empty
-  \let\defoptx = \empty
-  \let\Edefopt = \empty
-  \let\defspec = \empty
-  \let\defspecx = \empty
-  \let\Edefspec = \empty
-  \let\deftp = \empty
-  \let\deftpx = \empty
-  \let\Edeftp = \empty
-  \let\deftypefn = \empty
-  \let\deftypefnx = \empty
-  \let\Edeftypefn = \empty
-  \let\deftypefun = \empty
-  \let\deftypefunx = \empty
-  \let\Edeftypefun = \empty
-  \let\deftypeivar = \empty
-  \let\deftypeivarx = \empty
-  \let\Edeftypeivar = \empty
-  \let\deftypemethod = \empty
-  \let\deftypemethodx = \empty
-  \let\Edeftypemethod = \empty
-  \let\deftypeop = \empty
-  \let\deftypeopx = \empty
-  \let\Edeftypeop = \empty
-  \let\deftypevar = \empty
-  \let\deftypevarx = \empty
-  \let\Edeftypevar = \empty
-  \let\deftypevr = \empty
-  \let\deftypevrx = \empty
-  \let\Edeftypevr = \empty
-  \let\defun = \empty
-  \let\defunx = \empty
-  \let\Edefun = \empty
-  \let\defvar = \empty
-  \let\defvarx = \empty
-  \let\Edefvar = \empty
-  \let\defvr = \empty
-  \let\defvrx = \empty
-  \let\Edefvr = \empty
-  \let\clear = \relax
-  \let\down = \relax
-  \let\evenfooting = \relax
-  \let\evenheading = \relax
-  \let\everyfooting = \relax
-  \let\everyheading = \relax
-  \let\headings = \relax
-  \let\include = \relax
-  \let\item = \relax
-  \let\lowersections = \relax
-  \let\oddfooting = \relax
-  \let\oddheading = \relax
-  \let\printindex = \relax
-  \let\pxref = \relax
-  \let\raisesections = \relax
-  \let\ref = \relax
-  \let\set = \relax
-  \let\setchapternewpage = \relax
-  \let\setchapterstyle = \relax
-  \let\settitle = \relax
-  \let\up = \relax
-  \let\verbatiminclude = \relax
-  \let\xref = \relax
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
 }
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
 
 % Ignore @ignore, @ifhtml, @ifinfo, and the like.
 %
 \def\direntry{\doignore{direntry}}
-\def\documentdescriptionword{documentdescription}
 \def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
 \def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
 \def\ifhtml{\doignore{ifhtml}}
 \def\ifinfo{\doignore{ifinfo}}
 \def\ifnottex{\doignore{ifnottex}}
@@ -2666,198 +2855,133 @@ width0pt\relax} \fi
 \def\menu{\doignore{menu}}
 \def\xml{\doignore{xml}}
 
-% @dircategory CATEGORY  -- specify a category of the dir file
-% which this file should belong to.  Ignore this in TeX.
-\let\dircategory = \comment
-
-% Ignore text until a line `@end #1'.
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
 %
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
 \def\doignore#1{\begingroup
-  % Don't complain about control sequences we have declared \outer.
-  \ignoresections
-  %
-  % Define a command to swallow text until we reach `@end #1'.
-  % This @ is a catcode 12 token (that is the normal catcode of @ in
-  % this texinfo.tex file).  We change the catcode of @ below to match.
-  \long\def\doignoretext##1@end #1{\enddoignore}%
+  % Scan in ``verbatim'' mode:
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
   %
   % Make sure that spaces turn into tokens that match what \doignoretext wants.
-  \catcode\spaceChar = 10
+  \spaceisspace
   %
-  % Ignore braces, too, so mismatched braces don't cause trouble.
-  \catcode`\{ = 9
-  \catcode`\} = 9
-  %
-  % We must not have @c interpreted as a control sequence.
-  \catcode`\@ = 12
-  %
-  \def\ignoreword{#1}%
-  \ifx\ignoreword\documentdescriptionword
-    % The c kludge breaks documentdescription, since
-    % `documentdescription' contains a `c'.  Means not everything will
-    % be ignored inside @documentdescription, but oh well...
-  \else
-    % Make the letter c a comment character so that the rest of the line
-    % will be ignored. This way, the document can have (for example)
-    %   @c @end ifinfo
-    % and the @end ifinfo will be properly ignored.
-    % (We've just changed @ to catcode 12.)
-    \catcode`\c = 14
-  \fi
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
   %
-  % And now expand the command defined above.
-  \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
-  \ifwarnedobs\relax\else
-  % We need to warn folks that they may have trouble with TeX 3.0.
-  % This uses \immediate\write16 rather than \message to get newlines.
-    \immediate\write16{}
-    \immediate\write16{WARNING: for users of Unix TeX 3.0!}
-    \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
-    \immediate\write16{If you are running another version of TeX, relax.}
-    \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
-    \immediate\write16{  Then upgrade your TeX installation if you can.}
-    \immediate\write16{  (See ftp://ftp.gnu.org/non-gnu/TeX.README.)}
-    \immediate\write16{If you are stuck with version 3.0, run the}
-    \immediate\write16{  script ``tex3patch'' from the Texinfo distribution}
-    \immediate\write16{  to use a workaround.}
-    \immediate\write16{}
-    \global\warnedobstrue
-    \fi
+  % Swallow text until we reach the matching `@end #1'.
+  \dodoignore{#1}%
 }
 
-% **In TeX 3.0, setting text in \nullfont hangs tex.  For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
-  \obstexwarn
-  % We must actually expand the ignored text to look for the @end
-  % command, so that nested ignore constructs work.  Thus, we put the
-  % text into a \vbox and then do nothing with the result.  To minimize
-  % the chance of memory overflow, we follow the approach outlined on
-  % page 401 of the TeXbook.
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
   %
-  \setbox0 = \vbox\bgroup
-    % Don't complain about control sequences we have declared \outer.
-    \ignoresections
-    %
-    % Define `@end #1' to end the box, which will in turn undefine the
-    % @end command again.
-    \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
     %
-    % We are going to be parsing Texinfo commands.  Most cause no
-    % trouble when they are used incorrectly, but some commands do
-    % complicated argument parsing or otherwise get confused, so we
-    % undefine them.
+    % Define a command to find the next `@end #1', which must be on a line
+    % by itself.
+    \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line `@c @ifset', for
+    % example, to count as an @ifset for nesting.)
+    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
     %
-    % We can't do anything about stray @-signs, unfortunately;
-    % they'll produce `undefined control sequence' errors.
-    \ignoremorecommands
-    %
-    % Set the current font to be \nullfont, a TeX primitive, and define
-    % all the font commands to also use \nullfont.  We don't use
-    % dummy.tfm, as suggested in the TeXbook, because some sites
-    % might not have that installed.  Therefore, math mode will still
-    % produce output, but that should be an extremely small amount of
-    % stuff compared to the main input.
-    %
-    \nullfont
-    \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
-    \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
-    \let\tensf=\nullfont
-    % Similarly for index fonts.
-    \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
-    \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
-    \let\smallsf=\nullfont
-    % Similarly for smallexample fonts.
-    \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont
-    \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont
-    \let\smallersf=\nullfont
-    %
-    % Don't complain when characters are missing from the fonts.
-    \tracinglostchars = 0
-    %
-    % Don't bother to do space factor calculations.
-    \frenchspacing
-    %
-    % Don't report underfull hboxes.
-    \hbadness = 10000
-    %
-    % Do minimal line-breaking.
-    \pretolerance = 10000
-    %
-    % Do not execute instructions in @tex.
-    \def\tex{\doignore{tex}}%
-    % Do not execute macro definitions.
-    % `c' is a comment character, so the word `macro' will get cut off.
-    \def\macro{\doignore{ma}}%
+    % And now expand that command.
+    \obeylines %
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty			% Nothing found.
+    \let\next\doignoretextzzz
+  \else					% Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy		% ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0	% We have just found the outermost @end.
+    \let\next\enddoignore
+  \else				% Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
 }
 
+% Finish off ignored text.
+\def\enddoignore{\endgroup\ignorespaces}
+
+
 % @set VAR sets the variable VAR to an empty value.
 % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
 %
 % Since we want to separate VAR from REST-OF-LINE (which might be
 % empty), we can't just use \parsearg; we have to insert a space of our
 % own to delimit the rest of the line, and then take it out again if we
-% didn't need it.  Make sure the catcode of space is correct to avoid
-% losing inside @example, for instance.
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
 %
-\def\set{\begingroup\catcode` =10
-  \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
-  \parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
+\parseargdef\set{\setyyy#1 \endsetyyy}
 \def\setyyy#1 #2\endsetyyy{%
-  \def\temp{#2}%
-  \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
-  \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
-  \fi
-  \endgroup
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
 }
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
 
 % @clear VAR clears (i.e., unsets) the variable VAR.
 %
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
 
 % @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
 {
-  \catcode`\_ = \active
+  \catcode`\- = \active \catcode`\_ = \active
   %
-  % We might end up with active _ or - characters in the argument if
-  % we're called from @code, as @code{@value{foo-bar_}}.  So \let any
-  % such active characters to their normal equivalents.
-  \gdef\value{\begingroup
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
     \catcode`\-=\other \catcode`\_=\other
-    \indexbreaks \let_\normalunderscore
-    \valuexxx}
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @code{@value{foo-bar_}}, though.
+    % So \let them to their normal equivalents.
+    \let-\realdash \let_\normalunderscore
+  }
 }
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
 
 % We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we \let\value to this in \indexdummies).  Ones
-% whose names contain - or _ still won't work, but we can't do anything
-% about that.  The command has to be fully expandable (if the variable
-% is set), since the result winds up in the index file.  This means that
-% if the variable's value contains other Texinfo commands, it's almost
-% certain it will fail (although perhaps we could fix that with
-% sufficient work to do a one-level expansion on the result, instead of
-% complete).
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
 %
 \def\expandablevalue#1{%
   \expandafter\ifx\csname SET#1\endcsname\relax
@@ -2871,55 +2995,36 @@ width0pt\relax} \fi
 % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
 % with @set.
 %
-\def\ifset{\parsearg\doifset}
-\def\doifset#1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    \let\next=\ifsetfail
-  \else
-    \let\next=\ifsetsucceed
-  \fi
-  \next
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
 }
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
+\def\ifsetfail{\doignore{ifset}}
 
 % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
 % defined with @set, or has been undefined with @clear.
 %
-\def\ifclear{\parsearg\doifclear}
-\def\doifclear#1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    \let\next=\ifclearsucceed
-  \else
-    \let\next=\ifclearfail
-  \fi
-  \next
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
-% read the text following, through the first @end iftex (etc.).  Make
-% `@end iftex' (etc.) valid only after an @iftex.
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
 %
-\def\iftex{\conditionalsucceed{iftex}}
-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
-\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
-\defineunmatchedend{iftex}
-\defineunmatchedend{ifnothtml}
-\defineunmatchedend{ifnotinfo}
-\defineunmatchedend{ifnotplaintext}
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
 
-% True conditional.  Since \set globally defines its variables, we can
-% just start and end a group (to keep the @end definition undefined at
-% the outer level).
-%
-\def\conditionalsucceed#1{\begingroup
-  \expandafter\def\csname E#1\endcsname{\endgroup}%
-}
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
 
 % @defininfoenclose.
 \let\definfoenclose=\comment
@@ -2929,9 +3034,8 @@ width0pt\relax} \fi
 % Index generation facilities
 
 % Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
 
 % \newindex {foo} defines an index named foo.
 % It automatically defines \fooindex such that
@@ -3044,6 +3148,7 @@ width0pt\relax} \fi
   \def\definedummyletter##1{%
     \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
   }%
+  \let\definedummyaccent\definedummyletter
   %
   % Do the redefinitions.
   \commondummies
@@ -3066,6 +3171,7 @@ width0pt\relax} \fi
   \def\definedummyletter##1{%
     \expandafter\def\csname ##1\endcsname{@##1}%
   }%
+  \let\definedummyaccent\definedummyletter
   %
   % Do the redefinitions.
   \commondummies
@@ -3078,26 +3184,11 @@ width0pt\relax} \fi
   %
   \normalturnoffactive
   %
-  % Control letters and accents.
+  \commondummiesnofonts
+  %
   \definedummyletter{_}%
-  \definedummyletter{,}%
-  \definedummyletter{"}%
-  \definedummyletter{`}%
-  \definedummyletter{'}%
-  \definedummyletter{^}%
-  \definedummyletter{~}%
-  \definedummyletter{=}%
-  \definedummyword{u}%
-  \definedummyword{v}%
-  \definedummyword{H}%
-  \definedummyword{dotaccent}%
-  \definedummyword{ringaccent}%
-  \definedummyword{tieaccent}%
-  \definedummyword{ubaraccent}%
-  \definedummyword{udotaccent}%
-  \definedummyword{dotless}%
-  %
-  % Other non-English letters.
+  %
+  % Non-English letters.
   \definedummyword{AA}%
   \definedummyword{AE}%
   \definedummyword{L}%
@@ -3109,6 +3200,10 @@ width0pt\relax} \fi
   \definedummyword{oe}%
   \definedummyword{o}%
   \definedummyword{ss}%
+  \definedummyword{exclamdown}%
+  \definedummyword{questiondown}%
+  \definedummyword{ordf}%
+  \definedummyword{ordm}%
   %
   % Although these internal commands shouldn't show up, sometimes they do.
   \definedummyword{bf}%
@@ -3120,41 +3215,19 @@ width0pt\relax} \fi
   \definedummyword{tclose}%
   \definedummyword{tt}%
   %
-  % Texinfo font commands.
-  \definedummyword{b}%
-  \definedummyword{i}%
-  \definedummyword{r}%
-  \definedummyword{sc}%
-  \definedummyword{t}%
-  %
+  \definedummyword{LaTeX}%
   \definedummyword{TeX}%
-  \definedummyword{acronym}%
-  \definedummyword{cite}%
-  \definedummyword{code}%
-  \definedummyword{command}%
-  \definedummyword{dfn}%
-  \definedummyword{dots}%
-  \definedummyword{emph}%
-  \definedummyword{env}%
-  \definedummyword{file}%
-  \definedummyword{kbd}%
-  \definedummyword{key}%
-  \definedummyword{math}%
-  \definedummyword{option}%
-  \definedummyword{samp}%
-  \definedummyword{strong}%
-  \definedummyword{uref}%
-  \definedummyword{url}%
-  \definedummyword{var}%
-  \definedummyword{w}%
   %
   % Assorted special characters.
   \definedummyword{bullet}%
+  \definedummyword{comma}%
   \definedummyword{copyright}%
+  \definedummyword{registeredsymbol}%
   \definedummyword{dots}%
   \definedummyword{enddots}%
   \definedummyword{equiv}%
   \definedummyword{error}%
+  \definedummyword{euro}%
   \definedummyword{expansion}%
   \definedummyword{minus}%
   \definedummyword{pounds}%
@@ -3162,10 +3235,9 @@ width0pt\relax} \fi
   \definedummyword{print}%
   \definedummyword{result}%
   %
-  % Handle some cases of @value -- where the variable name does not
-  % contain - or _, and the value does not contain any
+  % Handle some cases of @value -- where it does not contain any
   % (non-fully-expandable) commands.
-  \let\value = \expandablevalue
+  \makevalueexpandable
   %
   % Normal spaces, not active ones.
   \unsepspaces
@@ -3174,45 +3246,97 @@ width0pt\relax} \fi
   \turnoffmacros
 }
 
-% If an index command is used in an @example environment, any spaces
-% therein should become regular spaces in the raw index file, not the
-% expansion of \tie (\leavevmode \penalty \@M \ ).
-{\obeyspaces
- \gdef\unsepspaces{\obeyspaces\let =\space}}
-
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+% Better have this without active chars.
+{
+  \catcode`\~=\other
+  \gdef\commondummiesnofonts{%
+    % Control letters and accents.
+    \definedummyletter{!}%
+    \definedummyaccent{"}%
+    \definedummyaccent{'}%
+    \definedummyletter{*}%
+    \definedummyaccent{,}%
+    \definedummyletter{.}%
+    \definedummyletter{/}%
+    \definedummyletter{:}%
+    \definedummyaccent{=}%
+    \definedummyletter{?}%
+    \definedummyaccent{^}%
+    \definedummyaccent{`}%
+    \definedummyaccent{~}%
+    \definedummyword{u}%
+    \definedummyword{v}%
+    \definedummyword{H}%
+    \definedummyword{dotaccent}%
+    \definedummyword{ringaccent}%
+    \definedummyword{tieaccent}%
+    \definedummyword{ubaraccent}%
+    \definedummyword{udotaccent}%
+    \definedummyword{dotless}%
+    %
+    % Texinfo font commands.
+    \definedummyword{b}%
+    \definedummyword{i}%
+    \definedummyword{r}%
+    \definedummyword{sc}%
+    \definedummyword{t}%
+    %
+    % Commands that take arguments.
+    \definedummyword{acronym}%
+    \definedummyword{cite}%
+    \definedummyword{code}%
+    \definedummyword{command}%
+    \definedummyword{dfn}%
+    \definedummyword{emph}%
+    \definedummyword{env}%
+    \definedummyword{file}%
+    \definedummyword{kbd}%
+    \definedummyword{key}%
+    \definedummyword{math}%
+    \definedummyword{option}%
+    \definedummyword{samp}%
+    \definedummyword{strong}%
+    \definedummyword{tie}%
+    \definedummyword{uref}%
+    \definedummyword{url}%
+    \definedummyword{var}%
+    \definedummyword{verb}%
+    \definedummyword{w}%
+  }
+}
 
 % \indexnofonts is used when outputting the strings to sort the index
 % by, and when constructing control sequence names.  It eliminates all
 % control sequences and just writes whatever the best ASCII sort string
 % would be for a given command (usually its argument).
 %
-\def\indexdummytex{TeX}
-\def\indexdummydots{...}
-%
 \def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{%
+    \expandafter\let\csname ##1\endcsname\asis
+  }%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{%
+    \expandafter\def\csname ##1\endcsname{}%
+  }%
+  % Hopefully, all control words can become @asis.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
   \def\ { }%
   \def\@{@}%
   % how to handle braces?
   \def\_{\normalunderscore}%
   %
-  \let\,=\asis
-  \let\"=\asis
-  \let\`=\asis
-  \let\'=\asis
-  \let\^=\asis
-  \let\~=\asis
-  \let\==\asis
-  \let\u=\asis
-  \let\v=\asis
-  \let\H=\asis
-  \let\dotaccent=\asis
-  \let\ringaccent=\asis
-  \let\tieaccent=\asis
-  \let\ubaraccent=\asis
-  \let\udotaccent=\asis
-  \let\dotless=\asis
-  %
-  % Other non-English letters.
+  % Non-English letters.
   \def\AA{AA}%
   \def\AE{AE}%
   \def\L{L}%
@@ -3226,130 +3350,170 @@ width0pt\relax} \fi
   \def\ss{ss}%
   \def\exclamdown{!}%
   \def\questiondown{?}%
+  \def\ordf{a}%
+  \def\ordm{o}%
   %
-  % Don't no-op \tt, since it isn't a user-level command
-  % and is used in the definitions of the active chars like <, >, |, etc.
-  % Likewise with the other plain tex font commands.
-  %\let\tt=\asis
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
   %
-  % Texinfo font commands.
-  \let\b=\asis
-  \let\i=\asis
-  \let\r=\asis
-  \let\sc=\asis
-  \let\t=\asis
-  %
-  \let\TeX=\indexdummytex
-  \let\acronym=\asis
-  \let\cite=\asis
-  \let\code=\asis
-  \let\command=\asis
-  \let\dfn=\asis
-  \let\dots=\indexdummydots
-  \let\emph=\asis
-  \let\env=\asis
-  \let\file=\asis
-  \let\kbd=\asis
-  \let\key=\asis
-  \let\math=\asis
-  \let\option=\asis
-  \let\samp=\asis
-  \let\strong=\asis
-  \let\uref=\asis
-  \let\url=\asis
-  \let\var=\asis
-  \let\w=\asis
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\registeredsymbol{R}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\expansion{==>}%
+  \def\minus{-}%
+  \def\pounds{pounds}%
+  \def\point{.}%
+  \def\print{-|}%
+  \def\result{=>}%
+  %
+  % Don't write macro names.
+  \emptyusermacros
 }
 
 \let\indexbackslash=0  %overridden during \printindex.
 \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
 
-% For \ifx comparisons.
-\def\emptymacro{\empty}
-
 % Most index entries go through here, but \dosubind is the general case.
-%
-\def\doind#1#2{\dosubind{#1}{#2}\empty}
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
 
 % Workhorse for all \fooindexes.
 % #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% \empty if called from \doind, as we usually are.  The main exception
-% is with defuns, which call us directly.
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
 %
 \def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \ifvmode
+      \dosubindsanitize
+    \else
+      \dosubindwrite
+    \fi
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
   % Put the index entry in the margin if desired.
   \ifx\SETmarginindex\relax\else
-    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
   \fi
-  {%
-    \count255=\lastpenalty
-    {%
-      \indexdummies % Must do this here, since \bf, etc expand at this stage
-      \escapechar=`\\
-      {%
-        \let\folio = 0% We will expand all macros now EXCEPT \folio.
-        \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
-        % so it will be output as is; and it will print as backslash.
-        %
-        % The main index entry text.
-        \toks0 = {#2}%
-        %
-        % If third arg is present, precede it with space in sort key.
-        \def\thirdarg{#3}%
-        \ifx\thirdarg\emptymacro \else
-           % If the third (subentry) arg is present, add it to the index
-           % line to write.
-          \toks0 = \expandafter{\the\toks0 \space #3}%
-        \fi
-        %
-        % Process the index entry with all font commands turned off, to
-        % get the string to sort by.
-        {\indexnofonts
-         \edef\temp{\the\toks0}% need full expansion
-         \xdef\indexsorttmp{\temp}%
-        }%
-        %
-        % Set up the complete index entry, with both the sort key and
-        % the original text, including any font commands.  We write
-        % three arguments to \entry to the .?? file (four in the
-        % subentry case), texindex reduces to two when writing the .??s
-        % sorted result.
-        \edef\temp{%
-          \write\csname#1indfile\endcsname{%
-            \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
-        }%
-        %
-        % If a skip is the last thing on the list now, preserve it
-        % by backing up by \lastskip, doing the \write, then inserting
-        % the skip again.  Otherwise, the whatsit generated by the
-        % \write will make \lastskip zero.  The result is that sequences
-        % like this:
-        % @end defun
-        % @tindex whatever
-        % @defun ...
-        % will have extra space inserted, because the \medbreak in the
-        % start of the @defun won't see the skip inserted by the @end of
-        % the previous defun.
-        %
-        % But don't do any of this if we're not in vertical mode.  We
-        % don't want to do a \vskip and prematurely end a paragraph.
-        %
-        % Avoid page breaks due to these extra skips, too.
-        %
-        \iflinks
-          \ifvmode
-            \skip0 = \lastskip
-            \ifdim\lastskip = 0pt \else \nobreak\vskip-\skip0 \fi
-          \fi
-          %
-          \temp % do the write
-          %
-          \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
-        \fi
-      }%
-    }%
-    \penalty\count255
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \escapechar=`\\
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
   }%
+  \temp
+}
+
+% Take care of unwanted page breaks:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write will make \lastskip zero.  The result is that sequences
+% like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+% ..., ready, GO:
+%
+\def\dosubindsanitize{%
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \skip0 = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \count255 = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\skip0 glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\skip0
+  \fi
+  %
+  \dosubindwrite
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    % 
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\count255>9999 \penalty\count255 \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\skip0
+  \fi
 }
 
 % The index entry written in the file actually looks like
@@ -3387,14 +3551,12 @@ width0pt\relax} \fi
 % @printindex causes a particular index (the ??s file) to get printed.
 % It does not print any chapter heading (usually an @unnumbered).
 %
-\def\printindex{\parsearg\doprintindex}
-\def\doprintindex#1{\begingroup
+\parseargdef\printindex{\begingroup
   \dobreak \chapheadingskip{10000}%
   %
   \smallfonts \rm
   \tolerance = 9500
   \everypar = {}% don't want the \kern\-parindent from indentation suppression.
-  \indexbreaks
   %
   % See if the index file exists and is nonempty.
   % Change catcode of @ here so that if the index file contains
@@ -3421,7 +3583,7 @@ width0pt\relax} \fi
       % Index files are almost Texinfo source, but we use \ as the escape
       % character.  It would be better to use @, but that's too big a change
       % to make right now.
-      \def\indexbackslash{\rawbackslashxx}%
+      \def\indexbackslash{\backslashcurfont}%
       \catcode`\\ = 0
       \escapechar = `\\
       \begindoublecolumns
@@ -3443,7 +3605,10 @@ width0pt\relax} \fi
   \removelastskip
   %
   % We like breaks before the index initials, so insert a bonus.
-  \penalty -300
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
   %
   % Typeset the initial.  Making this add up to a whole number of
   % baselineskips increases the chance of the dots lining up from column
@@ -3453,80 +3618,100 @@ width0pt\relax} \fi
   % No shrink because it confuses \balancecolumns.
   \vskip 1.67\baselineskip plus .5\baselineskip
   \leftline{\secbf #1}%
-  \vskip .33\baselineskip plus .1\baselineskip
-  %
   % Do our best not to break after the initial.
   \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
 }}
 
-% This typesets a paragraph consisting of #1, dot leaders, and then #2
-% flush to the right margin.  It is used for index and table of contents
-% entries.  The paragraph is indented by \leftskip.
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
 %
-\def\entry#1#2{\begingroup
-  %
-  % Start a new paragraph if necessary, so our assignments below can't
-  % affect previous text.
-  \par
-  %
-  % Do not fill out the last line with white space.
-  \parfillskip = 0in
-  %
-  % No extra space above this paragraph.
-  \parskip = 0in
-  %
-  % Do not prefer a separate line ending with a hyphen to fewer lines.
-  \finalhyphendemerits = 0
-  %
-  % \hangindent is only relevant when the entry text and page number
-  % don't both fit on one line.  In that case, bob suggests starting the
-  % dots pretty far over on the line.  Unfortunately, a large
-  % indentation looks wrong when the entry text itself is broken across
-  % lines.  So we use a small indentation and put up with long leaders.
-  %
-  % \hangafter is reset to 1 (which is the value we want) at the start
-  % of each paragraph, so we need not do anything with that.
-  \hangindent = 2em
-  %
-  % When the entry text needs to be broken, just fill out the first line
-  % with blank space.
-  \rightskip = 0pt plus1fil
-  %
-  % A bit of stretch before each entry for the benefit of balancing columns.
-  \vskip 0pt plus1pt
-  %
-  % Start a ``paragraph'' for the index entry so the line breaking
-  % parameters we've set above will have an effect.
-  \noindent
-  %
-  % Insert the text of the index entry.  TeX will do line-breaking on it.
-  #1%
-  % The following is kludged to not output a line of dots in the index if
-  % there are no page numbers.  The next person who breaks this will be
-  % cursed by a Unix daemon.
-  \def\tempa{{\rm }}%
-  \def\tempb{#2}%
-  \edef\tempc{\tempa}%
-  \edef\tempd{\tempb}%
-  \ifx\tempc\tempd\ \else%
+% A straightforward implementation would start like this:
+%	\def\entry#1#2{...
+% But this frozes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \begingroup
+    %
+    % Start a new paragraph if necessary, so our assignments below can't
+    % affect previous text.
+    \par
+    %
+    % Do not fill out the last line with white space.
+    \parfillskip = 0in
+    %
+    % No extra space above this paragraph.
+    \parskip = 0in
+    %
+    % Do not prefer a separate line ending with a hyphen to fewer lines.
+    \finalhyphendemerits = 0
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    % \hangafter is reset to 1 (which is the value we want) at the start
+    % of each paragraph, so we need not do anything with that.
+    \hangindent = 2em
     %
-    % If we must, put the page number on a line of its own, and fill out
-    % this line with blank space.  (The \hfil is overwhelmed with the
-    % fill leaders glue in \indexdotfill if the page number does fit.)
-    \hfil\penalty50
-    \null\nobreak\indexdotfill % Have leaders before the page number.
+    % When the entry text needs to be broken, just fill out the first line
+    % with blank space.
+    \rightskip = 0pt plus1fil
     %
-    % The `\ ' here is removed by the implicit \unskip that TeX does as
-    % part of (the primitive) \par.  Without it, a spurious underfull
-    % \hbox ensues.
-    \ifpdf
-      \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % The following is kludged to not output a line of dots in the index if
+    % there are no page numbers.  The next person who breaks this will be
+    % cursed by a Unix daemon.
+    \def\tempa{{\rm }}%
+    \def\tempb{#1}%
+    \edef\tempc{\tempa}%
+    \edef\tempd{\tempb}%
+    \ifx\tempc\tempd
+      \ %
     \else
-      \ #2% The page number ends the paragraph.
+      %
+      % If we must, put the page number on a line of its own, and fill out
+      % this line with blank space.  (The \hfil is overwhelmed with the
+      % fill leaders glue in \indexdotfill if the page number does fit.)
+      \hfil\penalty50
+      \null\nobreak\indexdotfill % Have leaders before the page number.
+      %
+      % The `\ ' here is removed by the implicit \unskip that TeX does as
+      % part of (the primitive) \par.  Without it, a spurious underfull
+      % \hbox ensues.
+      \ifpdf
+	\pdfgettoks#1.%
+	\ \the\toksA
+      \else
+	\ #1%
+      \fi
     \fi
-  \fi%
-  \par
-\endgroup}
+    \par
+  \endgroup
+}
 
 % Like \dotfill except takes at least 1 em.
 \def\indexdotfill{\cleaders
@@ -3695,6 +3880,12 @@ width0pt\relax} \fi
 \message{sectioning,}
 % Chapters, sections, etc.
 
+% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
 \newcount\chapno
 \newcount\secno        \secno=0
 \newcount\subsecno     \subsecno=0
@@ -3702,9 +3893,12 @@ width0pt\relax} \fi
 
 % This counter is funny since it counts through charcodes of letters A, B, ...
 \newcount\appendixno  \appendixno = `\@
+%
 % \def\appendixletter{\char\the\appendixno}
-% We do the following for the sake of pdftex, which needs the actual
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
 % letter in the expansion, not just typeset.
+%
 \def\appendixletter{%
   \ifnum\appendixno=`A A%
   \else\ifnum\appendixno=`B B%
@@ -3742,11 +3936,12 @@ width0pt\relax} \fi
 
 % Each @chapter defines this as the name of the chapter.
 % page headings and footings can use it.  @section does likewise.
+% However, they are not reliable, because we don't use marks.
 \def\thischapter{}
 \def\thissection{}
 
 \newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raise/lowersections modify this count
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
 
 % @raisesections: treat @section as chapter, @subsection as section, etc.
 \def\raisesections{\global\advance\secbase by -1}
@@ -3756,121 +3951,142 @@ width0pt\relax} \fi
 \def\lowersections{\global\advance\secbase by 1}
 \let\down=\lowersections % original BFox name
 
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \chapterzzz{#2}
-\or
-  \seczzz{#2}
-\or
-  \numberedsubseczzz{#2}
-\or
-  \numberedsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \chapterzzz{#2}
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
   \else
-    \numberedsubsubseczzz{#2}
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
   \fi
-\fi
-\suppressfirstparagraphindent
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \appendixzzz{#2}
-\or
-  \appendixsectionzzz{#2}
-\or
-  \appendixsubseczzz{#2}
-\or
-  \appendixsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \appendixzzz{#2}
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unmlevel
+      \chardef\unmlevel = \absseclevel
+    \fi
   \else
-    \appendixsubsubseczzz{#2}
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+	\errmessage{@appendix... within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unmlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unmlevel = 3
+    \fi
   \fi
-\fi
-\suppressfirstparagraphindent
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \unnumberedzzz{#2}
-\or
-  \unnumberedseczzz{#2}
-\or
-  \unnumberedsubseczzz{#2}
-\or
-  \unnumberedsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \unnumberedzzz{#2}
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+	\unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
   \else
-    \unnumberedsubsubseczzz{#2}
+    \if \headtype A%
+      \ifcase\absseclevel
+	  \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+	  \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
   \fi
-\fi
-\suppressfirstparagraphindent
-}
-
-% @chapter, @appendix, @unnumbered.
-\def\thischaptername{No Chapter Title}
-\outer\def\chapter{\parsearg\chapteryyy}
-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz #1{%
-  \secno=0 \subsecno=0 \subsubsecno=0
-  \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}%
-  \chapmacro {#1}{\the\chapno}%
-  \gdef\thissection{#1}%
-  \gdef\thischaptername{#1}%
-  % We don't substitute the actual chapter name into \thischapter
-  % because we don't want its macros evaluated now.
-  \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
-  \writetocentry{chap}{#1}{{\the\chapno}}
-  \donoderef
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  \message{\putwordChapter\space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
   \global\let\section = \numberedsec
   \global\let\subsection = \numberedsubsec
   \global\let\subsubsection = \numberedsubsubsec
 }
 
-% we use \chapno to avoid indenting back
-\def\appendixbox#1{%
-  \setbox0 = \hbox{\putwordAppendix{} \the\chapno}%
-  \hbox to \wd0{#1\hss}}
-
-\outer\def\appendix{\parsearg\appendixyyy}
-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz #1{%
-  \secno=0 \subsecno=0 \subsubsecno=0
-  \global\advance \appendixno by 1
-  \message{\putwordAppendix\space \appendixletter}%
-  \chapmacro {#1}{\appendixbox{\putwordAppendix{} \appendixletter}}%
-  \gdef\thissection{#1}%
-  \gdef\thischaptername{#1}%
-  \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
-  \writetocentry{appendix}{#1}{{\appendixletter}}
-  \appendixnoderef
+\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  \def\appendixnum{\putwordAppendix\space \appendixletter}%
+  \message{\appendixnum}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
   \global\let\section = \appendixsec
   \global\let\subsection = \appendixsubsec
   \global\let\subsubsection = \appendixsubsubsec
 }
 
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\def\centerchap{\parsearg\centerchapyyy}
-\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
-
-% @top is like @unnumbered.
-\outer\def\top{\parsearg\unnumberedyyy}
-
-\outer\def\unnumbered{\parsearg\unnumberedyyy}
-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz #1{%
-  \secno=0 \subsecno=0 \subsubsecno=0
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
   %
   % This used to be simply \message{#1}, but TeX fully expands the
   % argument to \message.  Therefore, if #1 contained @-commands, TeX
@@ -3883,134 +4099,98 @@ width0pt\relax} \fi
   % \the<toks register> to achieve this: TeX expands \the<toks> only once,
   % simply yielding the contents of <toks register>.  (We also do this for
   % the toc entries.)
-  \toks0 = {#1}\message{(\the\toks0)}%
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
   %
-  \unnumbchapmacro {#1}%
-  \gdef\thischapter{#1}\gdef\thissection{#1}%
-  \writetocentry{unnumbchap}{#1}{{\the\chapno}}
-  \unnumbnoderef
   \global\let\section = \unnumberedsec
   \global\let\subsection = \unnumberedsubsec
   \global\let\subsubsection = \unnumberedsubsubsec
 }
 
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:		--kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
 % Sections.
-\outer\def\numberedsec{\parsearg\secyyy}
-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
-\def\seczzz #1{%
-  \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-  \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
-  \writetocentry{sec}{#1}{{\the\chapno}{\the\secno}}
-  \donoderef
-  \nobreak
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
 }
 
-\outer\def\appendixsection{\parsearg\appendixsecyyy}
-\outer\def\appendixsec{\parsearg\appendixsecyyy}
-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz #1{%
-  \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-  \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
-  \writetocentry{sec}{#1}{{\appendixletter}{\the\secno}}
-  \appendixnoderef
-  \nobreak
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
 }
+\let\appendixsec\appendixsection
 
-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz #1{%
-  \plainsecheading {#1}\gdef\thissection{#1}%
-  \writetocentry{unnumbsec}{#1}{{\the\chapno}{\the\secno}}
-  \unnumbnoderef
-  \nobreak
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
 }
 
 % Subsections.
-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz #1{%
-  \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-  \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
-  \writetocentry{subsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}}
-  \donoderef
-  \nobreak
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
 }
 
-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz #1{%
-  \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-  \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
-  \writetocentry{subsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}}
-  \appendixnoderef
-  \nobreak
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
 }
 
-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz #1{%
-  \plainsubsecheading {#1}\gdef\thissection{#1}%
-  \writetocentry{unnumbsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}}
-  \unnumbnoderef
-  \nobreak
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
 }
 
 % Subsubsections.
-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz #1{%
-  \gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-  \subsubsecheading {#1}
-    {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-  \writetocentry{subsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
-  \donoderef
-  \nobreak
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
 }
 
-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz #1{%
-  \gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-  \subsubsecheading {#1}
-    {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-  \writetocentry{subsubsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
-  \appendixnoderef
-  \nobreak
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
 }
 
-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz #1{%
-  \plainsubsubsecheading {#1}\gdef\thissection{#1}%
-  \writetocentry{unnumbsubsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
-  \unnumbnoderef
-  \nobreak
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
 }
 
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they should now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
 % These macros control what the section commands do, according
 % to what kind of chapter we are in (ordinary, appendix, or unnumbered).
 % Define them by default for a numbered chapter.
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
 
 % Define @majorheading, @heading and @subheading
 
@@ -4023,23 +4203,27 @@ width0pt\relax} \fi
 %          if justification is not attempted.  Hence \raggedright.
 
 
-\def\majorheading{\parsearg\majorheadingzzz}
-\def\majorheadingzzz #1{%
+\def\majorheading{%
   {\advance\chapheadingskip by 10pt \chapbreak }%
-  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\raggedright
-                    \rm #1\hfill}}\bigskip \par\penalty 200}
+  \parsearg\chapheadingzzz
+}
 
-\def\chapheading{\parsearg\chapheadingzzz}
-\def\chapheadingzzz #1{\chapbreak %
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
   {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
                     \parindent=0pt\raggedright
-                    \rm #1\hfill}}\bigskip \par\penalty 200}
+                    \rm #1\hfill}}%
+  \bigskip \par\penalty 200\relax
+  \suppressfirstparagraphindent
+}
 
 % @heading, @subheading, @subsubheading.
-\def\heading{\parsearg\plainsecheading}
-\def\subheading{\parsearg\plainsubsecheading}
-\def\subsubheading{\parsearg\plainsubsubsecheading}
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
 
 % These macros generate a chapter, section, etc. heading only
 % (including whitespace, linebreaking, etc. around it),
@@ -4048,8 +4232,6 @@ width0pt\relax} \fi
 %%% Args are the skip and penalty (usually negative)
 \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
 
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
 %%% Define plain chapter starts, and page on/off switching for it
 % Parameter controlling skip before chapter headings (if needed)
 
@@ -4072,7 +4254,7 @@ width0pt\relax} \fi
 \global\let\pagealignmacro=\chappager
 \global\def\HEADINGSon{\HEADINGSsingle}}
 
-\def\CHAPPAGodd{
+\def\CHAPPAGodd{%
 \global\let\contentsalignmacro = \chapoddpage
 \global\let\pchapsepmacro=\chapoddpage
 \global\let\pagealignmacro=\chapoddpage
@@ -4080,116 +4262,193 @@ width0pt\relax} \fi
 
 \CHAPPAGon
 
-\def\CHAPFplain{
-\global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain
-\global\let\centerchapmacro=\centerchfplain}
-
-% Plain chapter opening.
-% #1 is the text, #2 the chapter number or empty if unnumbered.
-\def\chfplain#1#2{%
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
   \pchapsepmacro
   {%
     \chapfonts \rm
-    \def\chapnum{#2}%
-    \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
+    %
+    % Have to define \thissection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\thissection{#1}%
+    \gdef\thischaptername{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \def\temptype{#2}%
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+      \def\thischapter{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+      \xdef\thischapter{}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+      % We don't substitute the actual chapter name into \thischapter
+      % because we don't want its macros evaluated now.  And we don't
+      % use \thissection because that changes with each section.
+      %
+      \xdef\thischapter{\putwordAppendix{} \appendixletter:
+                        \noexpand\thischaptername}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+      \xdef\thischapter{\putwordChapter{} \the\chapno:
+                        \noexpand\thischaptername}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
     \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
-          \hangindent = \wd0 \centerparametersmaybe
+          \hangindent=\wd0 \centerparametersmaybe
           \unhbox0 #1\par}%
   }%
   \nobreak\bigskip % no page break after a chapter title
   \nobreak
 }
 
-% Plain opening for unnumbered.
-\def\unnchfplain#1{\chfplain{#1}{}}
-
 % @centerchap -- centered and unnumbered.
 \let\centerparametersmaybe = \relax
-\def\centerchfplain#1{{%
-  \def\centerparametersmaybe{%
-    \advance\rightskip by 3\rightskip
-    \leftskip = \rightskip
-    \parfillskip = 0pt
-  }%
-  \chfplain{#1}{}%
-}}
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
 
-\CHAPFplain % The default
 
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
 \def\unnchfopen #1{%
 \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
                        \parindent=0pt\raggedright
                        \rm #1\hfill}}\bigskip \par\nobreak
 }
-
 \def\chfopen #1#2{\chapoddpage {\chapfonts
 \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
 \par\penalty 5000 %
 }
-
 \def\centerchfopen #1{%
 \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
                        \parindent=0pt
                        \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
 }
-
-\def\CHAPFopen{
-\global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen
-\global\let\centerchapmacro=\centerchfopen}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
 
 
-% Section titles.
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
 \newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
-\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
-\def\plainsecheading#1{\sectionheading{sec}{}{#1}}
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
 
 % Subsection titles.
-\newskip \subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
-\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
-\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
 
 % Subsubsection titles.
-\let\subsubsecheadingskip = \subsecheadingskip
-\let\subsubsecheadingbreak = \subsecheadingbreak
-\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
-\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
 
 
-% Print any size section title.
+% Print any size, any type, section title.
 %
-% #1 is the section type (sec/subsec/subsubsec), #2 is the section
-% number (maybe empty), #3 the text.
-\def\sectionheading#1#2#3{%
-  {%
-    \expandafter\advance\csname #1headingskip\endcsname by \parskip
-    \csname #1headingbreak\endcsname
-  }%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\sectionheading#1#2#3#4{%
   {%
     % Switch to the right set of fonts.
-    \csname #1fonts\endcsname \rm
+    \csname #2fonts\endcsname \rm
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Only insert the space after the number if we have a section number.
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\thissection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \thissection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\thissection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\thissection{#1}%
+    \fi\fi\fi
     %
-    % Only insert the separating space if we have a section number.
-    \def\secnum{#2}%
-    \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
+    % Write the toc entry (before \donoderef).  See comments in \chfplain.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
     %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chfplain.
+    \donoderef{#3}%
+    %
+    % Output the actual section heading.
     \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
-          \hangindent = \wd0 % zero if no section number
-          \unhbox0 #3}%
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
   }%
-  % Add extra space after the heading -- either a line space or a
-  % paragraph space, whichever is more.  (Some people like to set
-  % \parskip to large values for some reason.)  Don't allow stretch, though.
-  \nobreak
-  \ifdim\parskip>\normalbaselineskip
-    \kern\parskip
-  \else
-    \kern\normalbaselineskip
-  \fi
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
   \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)
+  \vskip-\parskip
+  % 
+  % This is purely so the last item on the list is a known \penalty >
+  % 10000.  This is so \startdefun can avoid allowing breakpoints after
+  % section headings.  Otherwise, it would insert a valid breakpoint between:
+  % 
+  %   @section sec-whatever
+  %   @deffn def-whatever
+  \penalty 10001
 }
 
 
@@ -4198,119 +4457,152 @@ width0pt\relax} \fi
 \newwrite\tocfile
 
 % Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc.  We supply {\folio} at the end of the
-% argument, which will end up as the last argument to the \...entry macro.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
 %
-% Usage: \writetocentry{chap}{The Name of The Game}{{\the\chapno}}
 % We open the .toc file for writing here instead of at @setfilename (or
 % any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
 %
 \newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
 \def\writetocentry#1#2#3{%
-  \iftocfileopened\else
-    \immediate\openout\tocfile = \jobname.toc
-    \global\tocfileopenedtrue
-  \fi
-  %
-  \iflinks
-    \toks0 = {#2}%
-    \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}#3{\folio}}}%
-    \temp
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      \toks0 = {#2}%
+      \toks2 = \expandafter{\lastnode}%
+      \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
+                               {\the\toks2}{\noexpand\folio}}}%
+      \temp
+    \fi
   \fi
   %
-  % Tell \shipout to create a page destination if we're doing pdf, which
-  % will be the target of the links in the table of contents.  We can't
-  % just do it on every page because the title pages are numbered 1 and
-  % 2 (the page numbers aren't printed), and so are the first two pages
-  % of the document.  Thus, we'd have two destinations named `1', and
-  % two named `2'.
-  \ifpdf \pdfmakepagedesttrue \fi
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
 }
 
 \newskip\contentsrightmargin \contentsrightmargin=1in
 \newcount\savepageno
 \newcount\lastnegativepageno \lastnegativepageno = -1
 
-% Finish up the main text and prepare to read what we've written
-% to \tocfile.
+% Prepare to read what we've written to \tocfile.
 %
 \def\startcontents#1{%
-   % If @setchapternewpage on, and @headings double, the contents should
-   % start on an odd page, unlike chapters.  Thus, we maintain
-   % \contentsalignmacro in parallel with \pagealignmacro.
-   % From: Torbjorn Granlund <tege@matematik.su.se>
-   \contentsalignmacro
-   \immediate\closeout\tocfile
-   %
-   % Don't need to put `Contents' or `Short Contents' in the headline.
-   % It is abundantly clear what they are.
-   \unnumbchapmacro{#1}\def\thischapter{}%
-   \savepageno = \pageno
-   \begingroup                  % Set up to handle contents files properly.
-      \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
-      % We can't do this, because then an actual ^ in a section
-      % title fails, e.g., @chapter ^ -- exponentiation.  --karl, 9jul97.
-      %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
-      \raggedbottom             % Worry more about breakpoints than the bottom.
-      \advance\hsize by -\contentsrightmargin % Don't use the full line length.
-      %
-      % Roman numerals for page numbers.
-      \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+  % If @setchapternewpage on, and @headings double, the contents should
+  % start on an odd page, unlike chapters.  Thus, we maintain
+  % \contentsalignmacro in parallel with \pagealignmacro.
+  % From: Torbjorn Granlund <tege@matematik.su.se>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \def\thischapter{}%
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
+    % We can't do this, because then an actual ^ in a section
+    % title fails, e.g., @chapter ^ -- exponentiation.  --karl, 9jul97.
+    %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
+    \raggedbottom             % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
 }
 
 
 % Normal (long) toc.
 \def\contents{%
-   \startcontents{\putwordTOC}%
-     \openin 1 \jobname.toc
-     \ifeof 1 \else
-       \closein 1
-       \input \jobname.toc
-     \fi
-     \vfill \eject
-     \contentsalignmacro % in case @setchapternewpage odd is in effect
-     \pdfmakeoutlines
-   \endgroup
-   \lastnegativepageno = \pageno
-   \global\pageno = \savepageno
+  \startcontents{\putwordTOC}%
+    \openin 1 \jobname.toc
+    \ifeof 1 \else
+      \input \jobname.toc
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
 }
 
 % And just the chapters.
 \def\summarycontents{%
-   \startcontents{\putwordShortTOC}%
-      %
-      \let\chapentry = \shortchapentry
-      \let\appendixentry = \shortappendixentry
-      \let\unnumbchapentry = \shortunnumberedentry
-      % We want a true roman here for the page numbers.
-      \secfonts
-      \let\rm=\shortcontrm \let\bf=\shortcontbf
-      \let\sl=\shortcontsl \let\tt=\shortconttt
-      \rm
-      \hyphenpenalty = 10000
-      \advance\baselineskip by 1pt % Open it up a little.
-      \def\secentry ##1##2##3##4{}
-      \def\subsecentry ##1##2##3##4##5{}
-      \def\subsubsecentry ##1##2##3##4##5##6{}
-      \let\unnumbsecentry = \secentry
-      \let\unnumbsubsecentry = \subsecentry
-      \let\unnumbsubsubsecentry = \subsubsecentry
-      \openin 1 \jobname.toc
-      \ifeof 1 \else
-        \closein 1
-        \input \jobname.toc
-      \fi
-     \vfill \eject
-     \contentsalignmacro % in case @setchapternewpage odd is in effect
-   \endgroup
-   \lastnegativepageno = \pageno
-   \global\pageno = \savepageno
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \jobname.toc
+    \ifeof 1 \else
+      \input \jobname.toc
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
 }
 \let\shortcontents = \summarycontents
 
-\ifpdf
-  \pdfcatalog{/PageMode /UseOutlines}%
-\fi
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
 
 % These macros generate individual entries in the table of contents.
 % The first argument is the chapter or section name.
@@ -4318,58 +4610,46 @@ width0pt\relax} \fi
 % The arguments in between are the chapter number, section number, ...
 
 % Chapters, in the main contents.
-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
 %
 % Chapters, in the short toc.
 % See comments in \dochapentry re vbox and related settings.
-\def\shortchapentry#1#2#3{%
-  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
 }
 
 % Appendices, in the main contents.
-\def\appendixentry#1#2#3{%
-  \dochapentry{\appendixbox{\putwordAppendix{} #2}\labelspace#1}{#3}}
-%
-% Appendices, in the short toc.
-\let\shortappendixentry = \shortchapentry
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter.
-% We could simplify the code here by writing out an \appendixentry
-% command in the toc file for appendices, instead of using \chapentry
-% for both, but it doesn't seem worth it.
+% Need the word Appendix, and a fixed-size box.
 %
-\newdimen\shortappendixwidth
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
 %
-\def\shortchaplabel#1{%
-  % This space should be enough, since a single number is .5em, and the
-  % widest letter (M) is 1em, at least in the Computer Modern fonts.
-  % But use \hss just in case.
-  % (This space doesn't include the extra space that gets added after
-  % the label; that gets put in by \shortchapentry above.)
-  \dimen0 = 1em
-  \hbox to \dimen0{#1\hss}%
-}
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
 
 % Unnumbered chapters.
-\def\unnumbchapentry#1#2#3{\dochapentry{#1}{#3}}
-\def\shortunnumberedentry#1#2#3{\tocentry{#1}{\doshortpageno\bgroup#3\egroup}}
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
 
 % Sections.
-\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
 
 % Subsections.
-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2#3#4#5{\dosubsecentry{#1}{#5}}
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
 
 % And subsubsections.
-\def\subsubsecentry#1#2#3#4#5#6{%
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2#3#4#5#6{\dosubsubsecentry{#1}{#6}}
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
 
 % This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 3pc
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
 
 % Now for the actual typesetting. In all these, #1 is the text and #2 is the
 % page number.
@@ -4400,17 +4680,8 @@ width0pt\relax} \fi
   \tocentry{#1}{\dopageno\bgroup#2\egroup}%
 \endgroup}
 
-% Final typesetting of a toc entry; we use the same \entry macro as for
-% the index entries, but we want to suppress hyphenation here.  (We
-% can't do that in the \entry macro, since index entries might consist
-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-\def\tocentry#1#2{\begingroup
-  \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
-  % Do not use \turnoffactive in these arguments.  Since the toc is
-  % typeset in cmr, characters such as _ would come out wrong; we
-  % have to do the usual translation tricks.
-  \entry{#1}{#2}%
-\endgroup}
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
 
 % Space between chapter (or whatever) number and the title.
 \def\labelspace{\hskip1em \relax}
@@ -4420,8 +4691,8 @@ width0pt\relax} \fi
 
 \def\chapentryfonts{\secfonts \rm}
 \def\secentryfonts{\textfonts}
-\let\subsecentryfonts = \textfonts
-\let\subsubsecentryfonts = \textfonts
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
 
 
 \message{environments,}
@@ -4448,10 +4719,10 @@ width0pt\relax} \fi
 % The text. (`r' is open on the right, `e' somewhat less so on the left.)
 \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
 %
-\global\setbox\errorbox=\hbox to \dimen0{\hfil
+\setbox\errorbox=\hbox to \dimen0{\hfil
    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
    \advance\hsize by -2\dimen2 % Rules.
-   \vbox{
+   \vbox{%
       \hrule height\dimen2
       \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
          \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
@@ -4465,14 +4736,13 @@ width0pt\relax} \fi
 % One exception: @ is still an escape character, so that @end tex works.
 % But \@ or @@ will get a plain tex @ character.
 
-\def\tex{\begingroup
+\envdef\tex{%
   \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
   \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
   \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
   \catcode `\%=14
   \catcode `\+=\other
   \catcode `\"=\other
-  \catcode `\==\other
   \catcode `\|=\other
   \catcode `\<=\other
   \catcode `\>=\other
@@ -4488,6 +4758,7 @@ width0pt\relax} \fi
   \let\!=\ptexexclam
   \let\i=\ptexi
   \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
   \let\{=\ptexlbrace
   \let\+=\tabalign
   \let\}=\ptexrbrace
@@ -4498,10 +4769,11 @@ width0pt\relax} \fi
   \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
   \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
   \def\@{@}%
-\let\Etex=\endgroup}
+}
+% There is no need to define \Etex.
 
 % Define @lisp ... @end lisp.
-% @lisp does a \begingroup so it can rebind things,
+% @lisp environment forms a group so it can rebind things,
 % including the definition of @end lisp (which normally is erroneous).
 
 % Amount to narrow the margins by for @lisp.
@@ -4512,19 +4784,6 @@ width0pt\relax} \fi
 % have any width.
 \def\lisppar{\null\endgraf}
 
-% Make each space character in the input produce a normal interword
-% space in the output.  Don't allow a line break at this space, as this
-% is used only in environments like @example, where each line of input
-% should produce a line of output anyway.
-%
-{\obeyspaces %
-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
-% Define \obeyedspace to be our active space, whatever it is.  This is
-% for use in \parsearg.
-{\sepspaces%
-\global\let\obeyedspace= }
-
 % This space is always present above and below environments.
 \newskip\envskipamount \envskipamount = 0pt
 
@@ -4534,7 +4793,8 @@ width0pt\relax} \fi
 % start of the next paragraph will insert \parskip.
 %
 \def\aboveenvbreak{{%
-  % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
   \ifnum \lastpenalty=10000 \else
     \advance\envskipamount by \parskip
     \endgraf
@@ -4542,7 +4802,7 @@ width0pt\relax} \fi
       \removelastskip
       % it's not a good place to break if the last penalty was \nobreak
       % or better ...
-      \ifnum\lastpenalty>10000 \else \penalty-50 \fi
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
       \vskip\envskipamount
     \fi
   \fi
@@ -4574,52 +4834,52 @@ width0pt\relax} \fi
 %
 \newskip\lskip\newskip\rskip
 
-\def\cartouche{%
-\par  % can't be in the midst of a paragraph.
-\begingroup
-        \lskip=\leftskip \rskip=\rightskip
-        \leftskip=0pt\rightskip=0pt %we want these *outside*.
-        \cartinner=\hsize \advance\cartinner by-\lskip
-                          \advance\cartinner by-\rskip
-        \cartouter=\hsize
-        \advance\cartouter by 18.4pt % allow for 3pt kerns on either
-%                                    side, and for 6pt waste from
-%                                    each corner char, and rule thickness
-        \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
-        % Flag to tell @lisp, etc., not to narrow margin.
-        \let\nonarrowing=\comment
-        \vbox\bgroup
-                \baselineskip=0pt\parskip=0pt\lineskip=0pt
-                \carttop
-                \hbox\bgroup
-                        \hskip\lskip
-                        \vrule\kern3pt
-                        \vbox\bgroup
-                                \hsize=\cartinner
-                                \kern3pt
-                                \begingroup
-                                        \baselineskip=\normbskip
-                                        \lineskip=\normlskip
-                                        \parskip=\normpskip
-                                        \vskip -\parskip
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \lskip=\leftskip \rskip=\rightskip
+  \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  \cartinner=\hsize \advance\cartinner by-\lskip
+  \advance\cartinner by-\rskip
+  \cartouter=\hsize
+  \advance\cartouter by 18.4pt	% allow for 3pt kerns on either
+				% side, and for 6pt waste from
+				% each corner char, and rule thickness
+  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+  % Flag to tell @lisp, etc., not to narrow margin.
+  \let\nonarrowing=\comment
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+	  \hskip\lskip
+	  \vrule\kern3pt
+	  \vbox\bgroup
+	      \kern3pt
+	      \hsize=\cartinner
+	      \baselineskip=\normbskip
+	      \lineskip=\normlskip
+	      \parskip=\normpskip
+	      \vskip -\parskip
+	      \comment % For explanation, see the end of \def\group.
+}
 \def\Ecartouche{%
-                                \endgroup
-                                \kern3pt
-                        \egroup
-                        \kern3pt\vrule
-                        \hskip\rskip
-                \egroup
-                \cartbot
-        \egroup
-\endgroup
-}}
+              \ifhmode\par\fi
+	      \kern3pt
+	  \egroup
+	  \kern3pt\vrule
+	  \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
 
 
 % This macro is called at the beginning of all the @example variants,
 % inside a group.
 \def\nonfillstart{%
   \aboveenvbreak
-  \inENV % This group ends at the end of the body
   \hfuzz = 12pt % Don't be fussy
   \sepspaces % Make spaces be word-separators rather than space tokens.
   \let\par = \lisppar % don't ignore blank lines
@@ -4632,103 +4892,99 @@ width0pt\relax} \fi
   \ifx\nonarrowing\relax
     \advance \leftskip by \lispnarrowing
     \exdentamount=\lispnarrowing
-    \let\exdent=\nofillexdent
-    \let\nonarrowing=\relax
   \fi
+  \let\exdent=\nofillexdent
 }
 
-% Define the \E... control sequence only if we are inside the particular
-% environment, so the error checking in \end will work.
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
 %
-% To end an @example-like environment, we first end the paragraph (via
-% \afterenvbreak's vertical glue), and then the group.  That way we keep
-% the zero \parskip that the environments set -- \parskip glue will be
-% inserted at the beginning of the next paragraph in the document, after
-% the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \smallexamplefonts \rm
+  \fi
+}
 
-% @lisp: indented, narrowed, typewriter font.
-\def\lisp{\begingroup
-  \nonfillstart
-  \let\Elisp = \nonfillfinish
-  \tt
-  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble       % eat return
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
 }
 
-% @example: Same as @lisp.
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+  \makedispenv{#1}{#3}
+  \makedispenv{#2}{#3}
+}
 
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
 % @smallexample and @smalllisp: use smaller fonts.
 % Originally contributed by Pavel@xerox.
-\def\smalllisp{\begingroup
-  \def\Esmalllisp{\nonfillfinish\endgroup}%
-  \def\Esmallexample{\nonfillfinish\endgroup}%
-  \smallexamplefonts
-  \lisp
+%
+\maketwodispenvs {lisp}{example}{%
+  \nonfillstart
+  \tt
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble       % eat return
 }
-\let\smallexample = \smalllisp
 
-
-% @display: same as @lisp except keep current font.
+% @display/@smalldisplay: same as @lisp except keep current font.
 %
-\def\display{\begingroup
+\makedispenv {display}{%
   \nonfillstart
-  \let\Edisplay = \nonfillfinish
   \gobble
 }
-%
-% @smalldisplay: @display plus smaller fonts.
-%
-\def\smalldisplay{\begingroup
-  \def\Esmalldisplay{\nonfillfinish\endgroup}%
-  \smallexamplefonts \rm
-  \display
-}
 
-% @format: same as @display except don't narrow margins.
+% @format/@smallformat: same as @display except don't narrow margins.
 %
-\def\format{\begingroup
-  \let\nonarrowing = t
+\makedispenv{format}{%
+  \let\nonarrowing = t%
   \nonfillstart
-  \let\Eformat = \nonfillfinish
   \gobble
 }
-%
-% @smallformat: @format plus smaller fonts.
-%
-\def\smallformat{\begingroup
-  \def\Esmallformat{\nonfillfinish\endgroup}%
-  \smallexamplefonts \rm
-  \format
-}
 
-% @flushleft (same as @format).
-%
-\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
 
 % @flushright.
 %
-\def\flushright{\begingroup
-  \let\nonarrowing = t
+\envdef\flushright{%
+  \let\nonarrowing = t%
   \nonfillstart
-  \let\Eflushright = \nonfillfinish
   \advance\leftskip by 0pt plus 1fill
   \gobble
 }
+\let\Eflushright = \afterenvbreak
 
 
 % @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
 %
-\def\quotation{%
-  \begingroup\inENV %This group ends at the end of the @quotation body
+\envdef\quotation{%
   {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
   \parindent=0pt
-  % We have retained a nonzero parskip for the environment, since we're
-  % doing normal filling. So to avoid extra space below the environment...
-  \def\Equotation{\parskip = 0pt \nonfillfinish}%
   %
   % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
   \ifx\nonarrowing\relax
@@ -4737,6 +4993,27 @@ width0pt\relax} \fi
     \exdentamount = \lispnarrowing
     \let\nonarrowing = \relax
   \fi
+  \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\undefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
 }
 
 
@@ -4758,7 +5035,7 @@ width0pt\relax} \fi
 %
 % [Knuth] p. 380
 \def\uncatcodespecials{%
-  \def\do##1{\catcode`##1=12}\dospecials}
+  \def\do##1{\catcode`##1=\other}\dospecials}
 %
 % [Knuth] pp. 380,381,391
 % Disable Spanish ligatures ?` and !` of \tt font
@@ -4806,6 +5083,8 @@ width0pt\relax} \fi
   }
 \endgroup
 \def\setupverbatim{%
+  \nonfillstart
+  \advance\leftskip by -\defbodyindent
   % Easiest (and conventionally used) font for verbatim
   \tt
   \def\par{\leavevmode\egroup\box0\endgraf}%
@@ -4827,7 +5106,7 @@ width0pt\relax} \fi
 %
 % [Knuth] p. 382; only eat outer {}
 \begingroup
-  \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
   \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
 \endgroup
 %
@@ -4844,13 +5123,6 @@ width0pt\relax} \fi
 % we need not redefine '\', '{' and '}'.
 %
 % Inspired by LaTeX's verbatim command set [latex.ltx]
-%% Include LaTeX hack for completeness -- never know
-%% \begingroup
-%% \catcode`|=0 \catcode`[=1
-%% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active
-%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
-%% #1|endgroup|def|Everbatim[]|end[verbatim]]
-%% |endgroup
 %
 \begingroup
   \catcode`\ =\active
@@ -4858,54 +5130,32 @@ width0pt\relax} \fi
   % ignore everything up to the first ^^M, that's the newline at the end
   % of the @verbatim input line itself.  Otherwise we get an extra blank
   % line in the output.
-  \gdef\doverbatim#1^^M#2@end verbatim{#2\end{verbatim}}%
+  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
 \endgroup
 %
-\def\verbatim{%
-  \def\Everbatim{\nonfillfinish\endgroup}%
-  \begingroup
-    \nonfillstart
-    \advance\leftskip by -\defbodyindent
-    \begingroup\setupverbatim\doverbatim
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
 }
+\let\Everbatim = \afterenvbreak
+
 
 % @verbatiminclude FILE - insert text of file in verbatim environment.
 %
-% Allow normal characters that we make active in the argument (a file name).
-\def\verbatiminclude{%
-  \begingroup
-    \catcode`\\=\other
-    \catcode`~=\other
-    \catcode`^=\other
-    \catcode`_=\other
-    \catcode`|=\other
-    \catcode`<=\other
-    \catcode`>=\other
-    \catcode`+=\other
-    \parsearg\doverbatiminclude
-}
-\def\setupverbatiminclude{%
-  \begingroup
-    \nonfillstart
-    \advance\leftskip by -\defbodyindent
-    \begingroup\setupverbatim
-}
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
 %
 \def\doverbatiminclude#1{%
-     % Restore active chars for included file.
-  \endgroup
-  \begingroup
-    \let\value=\expandablevalue
-    \def\thisfile{#1}%
-    \expandafter\expandafter\setupverbatiminclude\input\thisfile
-  \endgroup
-  \nonfillfinish
-  \endgroup
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \input #1
+    \afterenvbreak
+  }%
 }
 
 % @copying ... @end copying.
-% Save the text away for @insertcopying later.  Many commands won't be
-% allowed in this context, but that's ok.
+% Save the text away for @insertcopying later.
 %
 % We save the uninterpreted tokens, rather than creating a box.
 % Saving the text in a box would be much easier, but then all the
@@ -4914,641 +5164,349 @@ width0pt\relax} \fi
 % file; b) letting users define the frontmatter in as flexible order as
 % possible is very desirable.
 %
-\def\copying{\begingroup
-  % Define a command to swallow text until we reach `@end copying'.
-  % \ is the escape char in this texinfo.tex file, so it is the
-  % delimiter for the command; @ will be the escape char when we read
-  % it, but that doesn't matter.
-  \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}%
-  %
-  % We must preserve ^^M's in the input file; see \insertcopying below.
-  \catcode`\^^M = \active
-  \docopying
-}
-
-% What we do to finish off the copying text.
-%
-\def\enddocopying{\endgroup\ignorespaces}
-
-% @insertcopying.  Here we must play games with ^^M's.  On the one hand,
-% we need them to delimit commands such as `@end quotation', so they
-% must be active.  On the other hand, we certainly don't want every
-% end-of-line to be a \par, as would happen with the normal active
-% definition of ^^M.  On the third hand, two ^^M's in a row should still
-% generate a \par.
-%
-% Our approach is to make ^^M insert a space and a penalty1 normally;
-% then it can also check if \lastpenalty=1.  If it does, then manually
-% do \par.
-%
-% This messes up the normal definitions of @c[omment], so we redefine
-% it.  Similarly for @ignore.  (These commands are used in the gcc
-% manual for man page generation.)
-%
-% Seems pretty fragile, most line-oriented commands will presumably
-% fail, but for the limited use of getting the copying text (which
-% should be quite simple) inserted, we can hope it's ok.
-%
-{\catcode`\^^M=\active %
-\gdef\insertcopying{\begingroup %
-  \parindent = 0pt  % looks wrong on title page
-  \def^^M{%
-    \ifnum \lastpenalty=1 %
-      \par %
-    \else %
-      \space \penalty 1 %
-    \fi %
-  }%
-  %
-  % Fix @c[omment] for catcode 13 ^^M's.
-  \def\c##1^^M{\ignorespaces}%
-  \let\comment = \c %
-  %
-  % Don't bother jumping through all the hoops that \doignore does, it
-  % would be very hard since the catcodes are already set.
-  \long\def\ignore##1\end ignore{\ignorespaces}%
-  %
-  \copyingtext %
-\endgroup}%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
 }
 
 \message{defuns,}
 % @defun etc.
 
-% Allow user to change definition object font (\df) internally
-\def\setdeffont#1 {\csname DEF#1\endcsname}
-
 \newskip\defbodyindent \defbodyindent=.4in
 \newskip\defargsindent \defargsindent=50pt
 \newskip\deflastargmargin \deflastargmargin=18pt
 
-\newcount\parencount
-
-% We want ()&[] to print specially on the defun line.
-%
-\def\activeparens{%
-  \catcode`\(=\active \catcode`\)=\active
-  \catcode`\&=\active
-  \catcode`\[=\active \catcode`\]=\active
-}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
-
-% Be sure that we always have a definition for `(', etc.  For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-\global\let(=\lparen \global\let)=\rparen
-\global\let[=\lbrack \global\let]=\rbrack
-
-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-% This is used to turn on special parens
-% but make & act ordinary (given that it's active).
-\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
-
-% Definitions of (, ) and & used in args for functions.
-% This is the definition of ( outside of all parentheses.
-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested
-  \global\advance\parencount by 1
-}
-%
-% This is the definition of ( when already inside a level of parens.
-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-%
-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
-  % also in that case restore the outer-level definition of (.
-  \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
-  \global\advance \parencount by -1 }
-% If we encounter &foo, then turn on ()-hacking afterwards
-\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
-%
-\gdef\normalparens{\boldbrax\let&=\ampnr}
-} % End of definition inside \activeparens
-%% These parens (in \boldbrax) actually are a little bolder than the
-%% contained text.  This is especially needed for [ and ]
-\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
-\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
-\let\ampnr = \&
-\def\lbrb{{\bf\char`\[}}
-\def\rbrb{{\bf\char`\]}}
-
-% Active &'s sneak into the index arguments, so make sure it's defined.
-{
-  \catcode`& = \active
-  \global\let& = \ampnr
-}
-
-% \defname, which formats the name of the @def (not the args).
-% #1 is the function name.
-% #2 is the type of definition, such as "Function".
-%
-\def\defname#1#2{%
-  % How we'll output the type name.  Putting it in brackets helps
-  % distinguish it from the body text that may end up on the next line
-  % just below it.
-  \ifempty{#2}%
-    \def\defnametype{}%
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
   \else
-    \def\defnametype{[\rm #2]}%
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \defargscommonending, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    % 
+    \ifnum\lastpenalty=10002 \penalty2000 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
   \fi
   %
-  % Get the values of \leftskip and \rightskip as they were outside the @def...
-  \dimen2=\leftskip
-  \advance\dimen2 by -\defbodyindent
-  %
-  % Figure out values for the paragraph shape.
-  \setbox0=\hbox{\hskip \deflastargmargin{\defnametype}}%
-  \dimen0=\hsize \advance \dimen0 by -\wd0  % compute size for first line
-  \dimen1=\hsize \advance \dimen1 by -\defargsindent  % size for continuations
-  \parshape 2 0in \dimen0 \defargsindent \dimen1
-  %
-  % Output arg 2 ("Function" or some such) but stuck inside a box of
-  % width 0 so it does not interfere with linebreaking.
-  \noindent
-  %
-  {% Adjust \hsize to exclude the ambient margins,
-   % so that \rightline will obey them.
-   \advance \hsize by -\dimen2
-   \dimen3 = 0pt  % was -1.25pc
-   \rlap{\rightline{\defnametype\kern\dimen3}}%
-  }%
-  %
-  % Allow all lines to be underfull without complaint:
-  \tolerance=10000 \hbadness=10000
-  \advance\leftskip by -\defbodyindent
-  \exdentamount=\defbodyindent
-  {\df #1}\enskip        % output function name
-  % \defunargs will be called next to output the arguments, if any.
-}
-
-% Common pieces to start any @def...
-% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence (which our caller defines).
-% #3 is the control sequence to process the header, such as \defunheader.
-%
-\def\parsebodycommon#1#2#3{%
-  \begingroup\inENV
-  % If there are two @def commands in a row, we'll have a \nobreak,
-  % which is there to keep the function description together with its
-  % header.  But if there's nothing but headers, we want to allow a
-  % break after all.  Check for penalty 10002 (inserted by
-  % \defargscommonending) instead of 10000, since the sectioning
-  % commands insert a \penalty10000, and we don't want to allow a break
-  % between a section heading and a defun.
-  \ifnum\lastpenalty=10002 \penalty0 \fi
-  \medbreak
-  %
-  % Define the \E... end token that this defining construct specifies
-  % so that it will exit this group.
-  \def#1{\endgraf\endgroup\medbreak}%
-  %
   \parindent=0in
   \advance\leftskip by \defbodyindent
   \exdentamount=\defbodyindent
 }
 
-% Common part of the \...x definitions.
-%
-\def\defxbodycommon{%
-  % As with \parsebodycommon above, allow line break if we have multiple
-  % x headers in a row.  It's not a great place, though.
-  \ifnum\lastpenalty=10000 \penalty1000 \fi
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
   %
-  \begingroup\obeylines
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
 }
+\def\gobbledefun#1\startdefun{}
 
-% Process body of @defun, @deffn, @defmac, etc.
+% \printdefunline \deffnheader{text}
 %
-\def\defparsebody#1#2#3{%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2{\defxbodycommon \activeparens \spacesplit#3}%
-  \catcode\equalChar=\active
-  \begingroup\obeylines\activeparens
-  \spacesplit#3%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty 10002  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
 }
 
-% #1, #2, #3 are the common arguments (see \parsebodycommon above).
-% #4, delimited by the space, is the class name.
-%
-\def\defmethparsebody#1#2#3#4 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}%
-  \begingroup\obeylines\activeparens
-  % The \empty here prevents misinterpretation of a construct such as
-  %   @deffn {whatever} {Enharmonic comma}
-  % See comments at \deftpparsebody, although in our case we don't have
-  % to remove the \empty afterwards, since it is empty.
-  \spacesplit{#3{#4}}\empty
-}
+\def\Edefun{\endgraf\medbreak}
 
-% Used for @deftypemethod and @deftypeivar.
-% #1, #2, #3 are the common arguments (see \defparsebody).
-% #4, delimited by a space, is the class name.
-% #5 is the method's return type.
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remainnig is to define \deffnheader.
 %
-\def\deftypemethparsebody#1#2#3#4 #5 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}%
-  \begingroup\obeylines\activeparens
-  \spacesplit{#3{#4}{#5}}%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
 }
 
-% Used for @deftypeop.  The change from \deftypemethparsebody is an
-% extra argument at the beginning which is the `category', instead of it
-% being the hardwired string `Method' or `Instance Variable'.  We have
-% to account for this both in the \...x definition and in parsing the
-% input at hand.  Thus also need a control sequence (passed as #5) for
-% the \E... definition to assign the category name to.
+% \domakedefun \deffn \deffnx \deffnheader
 %
-\def\deftypeopparsebody#1#2#3#4#5 #6 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 ##2 ##3 {\def#4{##1}%
-    \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}%
-  \begingroup\obeylines\activeparens
-  \spacesplit{#3{#5}{#6}}%
-}
-
-% For @defop.
-\def\defopparsebody #1#2#3#4#5 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 ##2 {\def#4{##1}%
-    \defxbodycommon \activeparens \spacesplit{#3{##2}}}%
-  \begingroup\obeylines\activeparens
-  \spacesplit{#3{#5}}%
-}
-
-% These parsing functions are similar to the preceding ones
-% except that they do not make parens into active characters.
-% These are used for "variables" since they have no arguments.
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
 %
-\def\defvarparsebody #1#2#3{%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2{\defxbodycommon \spacesplit#3}%
-  \catcode\equalChar=\active
-  \begingroup\obeylines
-  \spacesplit#3%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
 }
 
-% @defopvar.
-\def\defopvarparsebody #1#2#3#4#5 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 ##2 {\def#4{##1}%
-    \defxbodycommon \spacesplit{#3{##2}}}%
-  \begingroup\obeylines
-  \spacesplit{#3{#5}}%
-}
+%%% Untyped functions:
 
-\def\defvrparsebody#1#2#3#4 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
-  \begingroup\obeylines
-  \spacesplit{#3{#4}}%
-}
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
 
-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
-% type is just `struct', because we lose the braces in `{struct
-% termios}' when \spacesplit reads its undelimited argument.  Sigh.
-% \let\deftpparsebody=\defvrparsebody
-%
-% So, to get around this, we put \empty in with the type name.  That
-% way, TeX won't find exactly `{...}' as an undelimited argument, and
-% won't strip off the braces.
-%
-\def\deftpparsebody #1#2#3#4 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
-  \begingroup\obeylines
-  \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-}
-
-% Fine, but then we have to eventually remove the \empty *and* the
-% braces (if any).  That's what this does.
-%
-\def\removeemptybraces\empty#1\relax{#1}
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
 
-% After \spacesplit has done its work, this is called -- #1 is the final
-% thing to call, #2 the type name (which starts with \empty), and #3
-% (which might be empty) the arguments.
-%
-\def\parsetpheaderline#1#2#3{%
-  #1{\removeemptybraces#2\relax}{#3}%
-}%
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
 
-% Split up #2 (the rest of the input line) at the first space token.
-% call #1 with two arguments:
-%  the first is all of #2 before the space token,
-%  the second is all of #2 after that space token.
-% If #2 contains no space token, all of it is passed as the first arg
-% and the second is passed as empty.
+% \deffngeneral {subind}category name args
 %
-{\obeylines %
- \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}%
- \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{%
-   \ifx\relax #3%
-     #1{#2}{}%
-   \else %
-     #1{#2}{#3#4}%
-   \fi}%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
 }
 
-% Define @defun.
+%%% Typed functions:
 
-% This is called to end the arguments processing for all the @def... commands.
-%
-\def\defargscommonending{%
-  \interlinepenalty = 10000
-  \advance\rightskip by 0pt plus 1fil
-  \endgraf
-  \nobreak\vskip -\parskip
-  \penalty 10002  % signal to \parsebodycommon.
-}
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
 
-% This expands the args and terminates the paragraph they comprise.
-%
-\def\defunargs#1{\functionparens \sl
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Set the font temporarily and use \font in case \setfont made \tensl a macro.
-{\tensl\hyphenchar\font=0}%
-#1%
-{\tensl\hyphenchar\font=45}%
-\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
-  \defargscommonending
-}
-
-\def\deftypefunargs #1{%
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Use \boldbraxnoamp, not \functionparens, so that & is not special.
-\boldbraxnoamp
-\tclose{#1}% avoid \code because of side effects on active chars
-  \defargscommonending
-}
-
-% Do complete processing of one @defun or @defunx line already parsed.
-
-% @deffn Command forward-char nchars
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
 
-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
 
-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
 }
 
-% @defun == @deffn Function
-
-\def\defun{\defparsebody\Edefun\defunx\defunheader}
+%%% Typed variables:
 
-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDeffunc}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
 
-% @deftypefun int foobar (int @var{foo}, float @var{bar})
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
 
-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
 
-% #1 is the data type.  #2 is the name and args.
-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
-% #1 is the data type, #2 the name, #3 the args.
-\def\deftypefunheaderx #1#2 #3\relax{%
-\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
-\deftypefunargs {#3}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
 }
 
-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
+%%% Untyped variables:
 
-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
 
-% \defheaderxcond#1\relax$.$
-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
-\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi}
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
 
-% #1 is the classification.  #2 is the data type.  #3 is the name and args.
-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
-\def\deftypefnheaderx #1#2#3 #4\relax{%
-\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup
-\normalparens % notably, turn off `&' magic, which prevents
-%               at least some C++ text from working
-\defname {\defheaderxcond#2\relax$.$#3}{#1}%
-\deftypefunargs {#4}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defmac == @deffn Macro
-
-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
 
-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefmac}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
 }
 
-% @defspec == @deffn Special Form
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
 
-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
-
-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefspec}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defop CATEGORY CLASS OPERATION ARG...
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
 %
-\def\defop #1 {\def\defoptype{#1}%
-\defopparsebody\Edefop\defopx\defopheader\defoptype}
+% We are followed by (but not passed) the arguments, if any.
 %
-\def\defopheader#1#2#3{%
-  \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% function index entry
-  \begingroup
-    \defname{#2}{\defoptype\ \putwordon\ #1}%
-    \defunargs{#3}%
-  \endgroup
+\def\defname#1#2#3{%
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % How we'll format the type name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  % (plain.tex says that \dimen1 should be used only as global.)
+  \parshape 2 0in \dimen0 \defargsindent \dimen2
+  %
+  % Put the type name to the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% return value type
+    \ifx\temp\empty\else \tclose{\temp} \fi
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
 }
 
-% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
 %
-\def\deftypeop #1 {\def\deftypeopcategory{#1}%
-  \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
-                       \deftypeopcategory}
-%
-% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
-\def\deftypeopheader#1#2#3#4{%
-  \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
-  \begingroup
-    \defname{\defheaderxcond#2\relax$.$#3}
-            {\deftypeopcategory\ \putwordon\ \code{#1}}%
-    \deftypefunargs{#4}%
-  \endgroup
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  Let's try @var for that.
+  \let\var=\ttslanted
+  #1%
+  \sl\hyphenchar\font=45
 }
 
-% @deftypemethod CLASS TYPE METHOD ARG...
-%
-\def\deftypemethod{%
-  \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
+% We want ()&[] to print specially on the defun line.
 %
-% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
-\def\deftypemethodheader#1#2#3#4{%
-  \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
-  \begingroup
-    \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
-    \deftypefunargs{#4}%
-  \endgroup
+\def\activeparens{%
+  \catcode`\(=\active \catcode`\)=\active
+  \catcode`\[=\active \catcode`\]=\active
+  \catcode`\&=\active
 }
 
-% @deftypeivar CLASS TYPE VARNAME
-%
-\def\deftypeivar{%
-  \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
-%
-% #1 is the class name, #2 the data type, #3 the variable name.
-\def\deftypeivarheader#1#2#3{%
-  \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
-  \begingroup
-    \defname{\defheaderxcond#2\relax$.$#3}
-            {\putwordInstanceVariableof\ \code{#1}}%
-    \defvarargs{#3}%
-  \endgroup
-}
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
 
-% @defmethod == @defop Method
-%
-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-%
-% #1 is the class name, #2 the method name, #3 the args.
-\def\defmethodheader#1#2#3{%
-  \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index
-  \begingroup
-    \defname{#2}{\putwordMethodon\ \code{#1}}%
-    \defunargs{#3}%
-  \endgroup
-}
+% Be sure that we always have a definition for `(', etc.  For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
 
-% @defcv {Class Option} foo-class foo-flag
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
 
-\def\defcv #1 {\def\defcvtype{#1}%
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
+\newcount\parencount
 
-\def\defcvarheader #1#2#3{%
-  \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% variable index entry
-  \begingroup
-    \defname{#2}{\defcvtype\ \putwordof\ #1}%
-    \defvarargs{#3}%
-  \endgroup
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
 }
-
-% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
-%
-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-%
-\def\defivarheader#1#2#3{%
-  \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% entry in var index
-  \begingroup
-    \defname{#2}{\putwordInstanceVariableof\ #1}%
-    \defvarargs{#3}%
-  \endgroup
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
 }
+\def\bfafterword#1 {#1 \bf}
 
-% @defvar
-% First, define the processing that is wanted for arguments of @defvar.
-% This is actually simple: just print them in roman.
-% This must expand the args and terminate the paragraph they make up
-\def\defvarargs #1{\normalparens #1%
-  \defargscommonending
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
 }
-
-% @defvr Counter foo-count
-
-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
-
-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
-
-% @defvar == @defvr Variable
-
-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
-
-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefvar}%
-\defvarargs {#2}\endgroup %
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
 }
 
-% @defopt == @defvr {User Option}
-
-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
-
-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefopt}%
-\defvarargs {#2}\endgroup %
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
 }
 
-% @deftypevar int foobar
-
-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
-
-% #1 is the data type.  #2 is the name, perhaps followed by text that
-% is actually part of the data type, which should not be put into the index.
-\def\deftypevarheader #1#2{%
-\dovarind#2 \relax% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
-  \defargscommonending
-\endgroup}
-\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
-
-% @deftypevr {Global Flag} int enable
-
-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
-
-\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
-\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
-  \defargscommonending
-\endgroup}
-
-% Now define @deftp
-% Args are printed in bold, a slight difference from @defvar.
-
-\def\deftpargs #1{\bf \defvarargs{#1}}
-
-% @deftp Class window height width ...
-
-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
-
-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-
-% These definitions are used if you use @defunx (etc.)
-% anywhere other than immediately after a @defun or @defunx.
-%
-\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
-\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
-\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
-\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
-\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\defopx#1 {\errmessage{@defopx in invalid context}}
-\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
-\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
-\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
-\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
-\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
-\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
-\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
-\def\defunx#1 {\errmessage{@defunx in invalid context}}
-\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
-\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+\def\badparencount{%
+  \errmessage{Unbalanced parentheses in @def}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \errmessage{Unbalanced square braces in @def}%
+  \global\brackcount=0
+}
 
 
 \message{macros,}
@@ -5557,28 +5515,42 @@ width0pt\relax} \fi
 % To do this right we need a feature of e-TeX, \scantokens,
 % which we arrange to emulate with a temporary file in ordinary TeX.
 \ifx\eTeXversion\undefined
- \newwrite\macscribble
- \def\scanmacro#1{%
-   \begingroup \newlinechar`\^^M
-   % Undo catcode changes of \startcontents and \doprintindex
-   \catcode`\@=0 \catcode`\\=\other \escapechar=`\@
-   % Append \endinput to make sure that TeX does not see the ending newline.
-   \toks0={#1\endinput}%
-   \immediate\openout\macscribble=\jobname.tmp
-   \immediate\write\macscribble{\the\toks0}%
-   \immediate\closeout\macscribble
-   \let\xeatspaces\eatspaces
-   \input \jobname.tmp
-   \endgroup
-}
-\else
-\def\scanmacro#1{%
-\begingroup \newlinechar`\^^M
-% Undo catcode changes of \startcontents and \doprintindex
-\catcode`\@=0 \catcode`\\=\other \escapechar=`\@
-\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
 \fi
 
+\def\scanmacro#1{%
+  \begingroup
+    \newlinechar`\^^M
+    \let\xeatspaces\eatspaces
+    % Undo catcode changes of \startcontents and \doprintindex
+    % When called from @insertcopying or (short)caption, we need active
+    % backslash to get it printed correctly.  Previously, we had
+    % \catcode`\\=\other instead.  We'll see whether a problem appears
+    % with macro expansion.				--kasal, 19aug04
+    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+    % ... and \example
+    \spaceisspace
+    %
+    % Append \endinput to make sure that TeX does not see the ending newline.
+    %
+    % I've verified that it is necessary both for e-TeX and for ordinary TeX
+    %							--kasal, 29nov03
+    \scantokens{#1\endinput}%
+  \endgroup
+}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
 \newcount\paramno   % Count of parameters
 \newtoks\macname    % Macro name
 \newif\ifrecursive  % Is it recursive?
@@ -5586,13 +5558,15 @@ width0pt\relax} \fi
                     % \do\macro1\do\macro2...
 
 % Utility routines.
-% Thisdoes \let #1 = #2, except with \csnames.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+% 
 \def\cslet#1#2{%
-\expandafter\expandafter
-\expandafter\let
-\expandafter\expandafter
-\csname#1\endcsname
-\csname#2\endcsname}
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
 
 % Trim leading and trailing spaces off a string.
 % Concepts from aro-bend problem 15 (see CTAN).
@@ -5619,30 +5593,36 @@ width0pt\relax} \fi
 % done by  making ^^M (\endlinechar) catcode 12 when reading the macro
 % body, and then making it the \newlinechar in \scanmacro.
 
-\def\macrobodyctxt{%
-  \catcode`\~=\other
+\def\scanctxt{%
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
   \catcode`\^=\other
   \catcode`\_=\other
   \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\+=\other
+  \catcode`\~=\other
+}
+
+\def\scanargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+  \scanctxt
   \catcode`\{=\other
   \catcode`\}=\other
-  \catcode`\@=\other
   \catcode`\^^M=\other
-  \usembodybackslash}
+  \usembodybackslash
+}
 
 \def\macroargctxt{%
-  \catcode`\~=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\+=\other
-  \catcode`\@=\other
-  \catcode`\\=\other}
+  \scanctxt
+  \catcode`\\=\other
+}
 
 % \mbodybackslash is the definition of \ in @macro bodies.
 % It maps \foo\ => \csname macarg.foo\endcsname => #N
@@ -5683,8 +5663,7 @@ width0pt\relax} \fi
   \else \expandafter\parsemacbody
   \fi}
 
-\def\unmacro{\parsearg\dounmacro}
-\def\dounmacro#1{%
+\parseargdef\unmacro{%
   \if1\csname ismacro.#1\endcsname
     \global\cslet{#1}{macsave.#1}%
     \global\expandafter\let \csname ismacro.#1\endcsname=0%
@@ -5825,25 +5804,41 @@ width0pt\relax} \fi
     \expandafter\parsearg
   \fi \next}
 
-% We mant to disable all macros during \shipout so that they are not
+% We want to disable all macros during \shipout so that they are not
 % expanded by \write.
 \def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
   \edef\next{\macrolist}\expandafter\endgroup\next}
 
+% For \indexnofonts, we need to get rid of all macros, leaving only the
+% arguments (if present).  Of course this is not nearly correct, but it
+% is the best we can do for now.  makeinfo does not expand macros in the
+% argument to @deffn, which ends up writing an index entry, and texindex
+% isn't prepared for an index sort entry that starts with \.
+% 
+% Since macro invocations are followed by braces, we can just redefine them
+% to take a single TeX argument.  The case of a macro invocation that
+% goes to end-of-line is not handled.
+% 
+\def\emptyusermacros{\begingroup
+  \def\do##1{\let\noexpand##1=\noexpand\asis}%
+  \edef\next{\macrolist}\expandafter\endgroup\next}
+
 
 % @alias.
 % We need some trickery to remove the optional spaces around the equal
 % sign.  Just make them active and then expand them all to nothing.
-\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
 \def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{\ignoreactivespaces
-\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
-           \expandafter\noexpand\csname#2\endcsname}%
-\expandafter\endgroup\next}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
 
 
 \message{cross references,}
-% @xref etc.
 
 \newwrite\auxfile
 
@@ -5855,64 +5850,70 @@ width0pt\relax} \fi
 \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
   node \samp{\ignorespaces#1{}}}
 
-% @node's job is to define \lastnode.
-\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx #1,\finishnodeparse}
-\def\nodexxx#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
 \let\nwnode=\node
-\let\lastnode=\relax
-
-% The sectioning commands (@chapter, etc.) call these.
-\def\donoderef{%
-  \ifx\lastnode\relax\else
-    \expandafter\expandafter\expandafter\setref{\lastnode}%
-      {Ysectionnumberandtype}%
-    \global\let\lastnode=\relax
-  \fi
-}
-\def\unnumbnoderef{%
-  \ifx\lastnode\relax\else
-    \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}%
-    \global\let\lastnode=\relax
-  \fi
-}
-\def\appendixnoderef{%
-  \ifx\lastnode\relax\else
-    \expandafter\expandafter\expandafter\setref{\lastnode}%
-      {Yappendixletterandtype}%
-    \global\let\lastnode=\relax
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
   \fi
 }
 
-
 % @anchor{NAME} -- define xref target at arbitrary point.
 %
 \newcount\savesfregister
-\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
 
 % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
-% anchor), namely NAME-title (the corresponding @chapter/etc. name),
-% NAME-pg (the page number), and NAME-snt (section number and type).
-% Called from \foonoderef.
-%
-% We have to set \indexdummies so commands such as @code in a section
-% title aren't expanded.  It would be nicer not to expand the titles in
-% the first place, but there's so many layers that that is hard to do.
-%
-% Likewise, use \turnoffactive so that punctuation chars such as underscore
-% and backslash work in node names.
-%
-\def\setref#1#2{{%
-  \atdummies
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \thissection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
   \pdfmkdest{#1}%
-  %
-  \turnoffactive
-  \dosetq{#1-title}{Ytitle}%
-  \dosetq{#1-pg}{Ypagenumber}%
-  \dosetq{#1-snt}{#2}%
-}}
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \turnoffactive
+      \otherbackslash
+      \edef\writexrdef##1##2{%
+	\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+	  ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\thissection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \writexrdef{pg}{\folio}% will be written later, during \shipout
+    }%
+  \fi
+}
 
 % @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
 % the node name, #2 the name of the Info cross-reference, #3 the printed
@@ -5925,38 +5926,33 @@ width0pt\relax} \fi
 \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
   \unsepspaces
   \def\printedmanual{\ignorespaces #5}%
-  \def\printednodename{\ignorespaces #3}%
-  \setbox1=\hbox{\printedmanual}%
-  \setbox0=\hbox{\printednodename}%
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox1=\hbox{\printedmanual\unskip}%
+  \setbox0=\hbox{\printedrefname\unskip}%
   \ifdim \wd0 = 0pt
     % No printed node name was explicitly given.
     \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
       % Use the node name inside the square brackets.
-      \def\printednodename{\ignorespaces #1}%
+      \def\printedrefname{\ignorespaces #1}%
     \else
       % Use the actual chapter/section title appear inside
       % the square brackets.  Use the real section title if we have it.
       \ifdim \wd1 > 0pt
         % It is in another manual, so we don't have it.
-        \def\printednodename{\ignorespaces #1}%
+        \def\printedrefname{\ignorespaces #1}%
       \else
         \ifhavexrefs
           % We know the real title if we have the xref values.
-          \def\printednodename{\refx{#1-title}{}}%
+          \def\printedrefname{\refx{#1-title}{}}%
         \else
           % Otherwise just copy the Info node name.
-          \def\printednodename{\ignorespaces #1}%
+          \def\printedrefname{\ignorespaces #1}%
         \fi%
       \fi
     \fi
   \fi
   %
-  % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
-  % insert empty discretionaries after hyphens, which means that it will
-  % not find a line break at a hyphen in a node names.  Since some manuals
-  % are best written with fairly long node names, containing hyphens, this
-  % is a loss.  Therefore, we give the text of the node name again, so it
-  % is as if TeX is seeing it for the first time.
+  % Make link in pdf output.
   \ifpdf
     \leavevmode
     \getfilename{#4}%
@@ -5966,64 +5962,86 @@ width0pt\relax} \fi
          goto file{\the\filename.pdf} name{#1}%
      \else
        \startlink attr{/Border [0 0 0]}%
-         goto name{#1}%
+         goto name{\pdfmkpgn{#1}}%
      \fi
     }%
     \linkcolor
   \fi
   %
-  \ifdim \wd1 > 0pt
-    \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
-  \else
-    % _ (for example) has to be the character _ for the purposes of the
-    % control sequence corresponding to the node, but it has to expand
-    % into the usual \leavevmode...\vrule stuff for purposes of
-    % printing. So we \turnoffactive for the \refx-snt, back on for the
-    % printing, back off for the \refx-pg.
-    {\turnoffactive \otherbackslash
-     % Only output a following space if the -snt ref is nonempty; for
-     % @unnumbered and @anchor, it won't be.
-     \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
-     \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
-    }%
-    % output the `[mynode]' via a macro.
-    \xrefprintnodename\printednodename
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd0 = 0pt
+      \refx{#1-snt}%
+    \else
+      \printedrefname
+    \fi
     %
-    % But we always want a comma and a space:
-    ,\space
+    % if the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd1 > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
     %
-    % output the `page 3'.
-    \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
+    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+    % insert empty discretionaries after hyphens, which means that it will
+    % not find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens, this
+    % is a loss.  Therefore, we give the text of the node name again, so it
+    % is as if TeX is seeing it for the first time.
+    \ifdim \wd1 > 0pt
+      \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+    \else
+      % _ (for example) has to be the character _ for the purposes of the
+      % control sequence corresponding to the node, but it has to expand
+      % into the usual \leavevmode...\vrule stuff for purposes of
+      % printing. So we \turnoffactive for the \refx-snt, back on for the
+      % printing, back off for the \refx-pg.
+      {\turnoffactive \otherbackslash
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via a macro so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
+    \fi
   \fi
   \endlink
 \endgroup}
 
 % This macro is called from \xrefX for the `[nodename]' part of xref
 % output.  It's a separate macro only so it can be changed more easily,
-% since not square brackets don't work in some documents.  Particularly
+% since square brackets don't work well in some documents.  Particularly
 % one that Bob is working on :).
 %
 \def\xrefprintnodename#1{[#1]}
 
-% \dosetq is called from \setref to do the actual \write (\iflinks).
-%
-\def\dosetq#1#2{%
-  {\let\folio=0%
-   \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
-   \iflinks \next \fi
-  }%
-}
-
-% \internalsetq{foo}{page} expands into
-%   CHARACTERS @xrdef{foo}{...expansion of \page...}
-\def\internalsetq#1#2{@xrdef{#1}{\csname #2\endcsname}}
-
-% Things to be expanded by \internalsetq.
+% Things referred to by \setref.
 %
-\def\Ypagenumber{\folio}
-\def\Ytitle{\thissection}
 \def\Ynothing{}
-\def\Ysectionnumberandtype{%
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
   \ifnum\secno=0
     \putwordChapter@tie \the\chapno
   \else \ifnum\subsecno=0
@@ -6034,8 +6052,7 @@ width0pt\relax} \fi
     \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
   \fi\fi\fi
 }
-
-\def\Yappendixletterandtype{%
+\def\Yappendix{%
   \ifnum\secno=0
      \putwordAppendix@tie @char\the\appendixno{}%
   \else \ifnum\subsecno=0
@@ -6048,15 +6065,6 @@ width0pt\relax} \fi
   \fi\fi\fi
 }
 
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
-  \let\linenumber = \empty % Pre-3.0.
-\else
-  \def\linenumber{\the\inputlineno:\space}
-\fi
-
 % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
 % If its value is nonempty, SUFFIX is output afterward.
 %
@@ -6065,7 +6073,7 @@ width0pt\relax} \fi
     \indexnofonts
     \otherbackslash
     \expandafter\global\expandafter\let\expandafter\thisrefX
-      \csname X#1\endcsname
+      \csname XR#1\endcsname
   }%
   \ifx\thisrefX\relax
     % If not defined, say something at least.
@@ -6087,11 +6095,44 @@ width0pt\relax} \fi
   #2% Output the suffix in any case.
 }
 
-% This is the macro invoked by entries in the aux file.
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
 %
-\def\xrdef#1{\expandafter\gdef\csname X#1\endcsname}
+\def\xrdef#1#2{%
+  \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR#1\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+  \fi
+}
 
 % Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readauxfile
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
 \def\readauxfile{\begingroup
   \catcode`\^^@=\other
   \catcode`\^^A=\other
@@ -6150,7 +6191,16 @@ width0pt\relax} \fi
   \catcode`\%=\other
   \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
   %
-  % Make the characters 128-255 be printing characters
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
   {%
     \count 1=128
     \def\loop{%
@@ -6160,31 +6210,17 @@ width0pt\relax} \fi
     }%
   }%
   %
-  % Turn off \ as an escape so we do not lose on
-  % entries which were dumped with control sequences in their names.
-  % For example, @xrdef{$\leq $-fun}{page ...} made by @defun ^^
-  % Reference to such entries still does not work the way one would wish,
-  % but at least they do not bomb out when the aux file is read in.
-  \catcode`\\=\other
-  %
-  % @ is our escape character in .aux files.
+  % @ is our escape character in .aux files, and we need braces.
   \catcode`\{=1
   \catcode`\}=2
   \catcode`\@=0
   %
-  \openin 1 \jobname.aux
-  \ifeof 1 \else
-    \closein 1
-    \input \jobname.aux
-    \global\havexrefstrue
-    \global\warnedobstrue
-  \fi
-  % Open the new aux file.  TeX will close it automatically at exit.
-  \openout\auxfile=\jobname.aux
+  \input \jobname.aux
 \endgroup}
 
 
-% Footnotes.
+\message{insertions,}
+% including footnotes.
 
 \newcount \footnoteno
 
@@ -6198,13 +6234,12 @@ width0pt\relax} \fi
 % @footnotestyle is meaningful for info output only.
 \let\footnotestyle=\comment
 
-\let\ptexfootnote=\footnote
-
 {\catcode `\@=11
 %
 % Auto-number footnotes.  Otherwise like plain.
 \gdef\footnote{%
   \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
   \global\advance\footnoteno by \@ne
   \edef\thisfootno{$^{\the\footnoteno}$}%
   %
@@ -6222,17 +6257,12 @@ width0pt\relax} \fi
 % Don't bother with the trickery in plain.tex to not require the
 % footnote text as a parameter.  Our footnotes don't need to be so general.
 %
-% Oh yes, they do; otherwise, @ifset and anything else that uses
-% \parseargline fail inside footnotes because the tokens are fixed when
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
 % the footnote is read.  --karl, 16nov96.
 %
-% The start of the footnote looks usually like this:
-\gdef\startfootins{\insert\footins\bgroup}
-%
-% ... but this macro is redefined inside @multitable.
-%
 \gdef\dofootnote{%
-  \startfootins
+  \insert\footins\bgroup
   % We want to typeset this text as a normal paragraph, even if the
   % footnote reference occurs in (for example) a display environment.
   % So reset some parameters.
@@ -6268,40 +6298,66 @@ width0pt\relax} \fi
 }
 }%end \catcode `\@=11
 
-% @| inserts a changebar to the left of the current line.  It should
-% surround any changed text.  This approach does *not* work if the
-% change spans more than two lines of output.  To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarily, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
 %
-\def\|{%
-  % \vadjust can only be used in horizontal mode.
-  \leavevmode
-  %
-  % Append this vertical mode material after the current line in the output.
-  \vadjust{%
-    % We want to insert a rule with the height and depth of the current
-    % leading; that is exactly what \strutbox is supposed to record.
-    \vskip-\baselineskip
-    %
-    % \vadjust-items are inserted at the left edge of the type.  So
-    % the \llap here moves out into the left-hand margin.
-    \llap{%
-      %
-      % For a thicker or thinner bar, change the `1pt'.
-      \vrule height\baselineskip width1pt
-      %
-      % This is the space between the bar and the text.
-      \hskip 12pt
-    }%
-  }%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
 }
 
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
 %
-\def\finalout{\overfullrule=0pt}
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
 
 % @image.  We use the macros from epsf.tex to support this.
 % If epsf.tex is not installed and @image is used, we complain.
@@ -6311,12 +6367,12 @@ width0pt\relax} \fi
 % undone and the next image would fail.
 \openin 1 = epsf.tex
 \ifeof 1 \else
-  \closein 1
   % Do not bother showing banner with epsf.tex v2.7k (available in
   % doc/epsf.tex and on ctan).
   \def\epsfannounce{\toks0 = }%
   \input epsf.tex
 \fi
+\closein 1
 %
 % We will only complain once about lack of epsf.tex.
 \newif\ifwarnednoepsf
@@ -6372,6 +6428,269 @@ width0pt\relax} \fi
 \endgroup}
 
 
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \thissection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\thissection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+	\appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies \turnoffactive \otherbackslash
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+	\scanexp{%
+	  \xdef\noexpand\gtemp{%
+	    \ifx\thisshortcaption\empty
+	      \thiscaption
+	    \else
+	      \thisshortcaption
+	    \fi
+	  }%
+	}%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+	  \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \thissection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
 \message{localization,}
 % and i18n.
 
@@ -6380,19 +6699,17 @@ width0pt\relax} \fi
 % properly.  Single argument is the language abbreviation.
 % It would be nice if we could set up a hyphenation file here.
 %
-\def\documentlanguage{\parsearg\dodocumentlanguage}
-\def\dodocumentlanguage#1{%
+\parseargdef\documentlanguage{%
   \tex % read txi-??.tex file in plain TeX.
-  % Read the file if it exists.
-  \openin 1 txi-#1.tex
-  \ifeof1
-    \errhelp = \nolanghelp
-    \errmessage{Cannot read language file txi-#1.tex}%
-    \let\temp = \relax
-  \else
-    \def\temp{\input txi-#1.tex }%
-  \fi
-  \temp
+    % Read the file if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \errhelp = \nolanghelp
+      \errmessage{Cannot read language file txi-#1.tex}%
+    \else
+      \input txi-#1.tex
+    \fi
+    \closein 1
   \endgroup
 }
 \newhelp\nolanghelp{The given language definition file cannot be found or
@@ -6575,8 +6892,7 @@ should work if nowhere else does.}
 % Perhaps we should allow setting the margins, \topskip, \parskip,
 % and/or leading, also. Or perhaps we should compute them somehow.
 %
-\def\pagesizes{\parsearg\pagesizesxxx}
-\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
 \def\pagesizesyyy#1,#2,#3\finish{{%
   \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
   \globaldefs = 1
@@ -6623,8 +6939,8 @@ should work if nowhere else does.}
 \def\normalplus{+}
 \def\normaldollar{$}%$ font-lock fix
 
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, and another way in other fonts,
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
 % where something hairier probably needs to be done.
 %
 % #1 is what to print if we are indeed using \tt; #2 is what to print
@@ -6672,13 +6988,6 @@ should work if nowhere else does.}
 \catcode`\$=\active
 \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
 
-% Set up an active definition for =, but don't enable it most of the time.
-{\catcode`\==\active
-\global\def={{\tt \char 61}}}
-
-\catcode`+=\active
-\catcode`\_=\active
-
 % If a .fmt file is being used, characters that might appear in a file
 % name cannot be active until we have parsed the command line.
 % So turn them off again, and have \everyjob (or @setfilename) turn them on.
@@ -6687,15 +6996,16 @@ should work if nowhere else does.}
 
 \catcode`\@=0
 
-% \rawbackslashxx outputs one backslash character in current font,
+% \backslashcurfont outputs one backslash character in current font,
 % as in \char`\\.
-\global\chardef\rawbackslashxx=`\\
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
 
-% \rawbackslash defines an active \ to do \rawbackslashxx.
+% \rawbackslash defines an active \ to do \backslashcurfont.
 % \otherbackslash defines an active \ to be a literal `\' character with
 % catcode other.
 {\catcode`\\=\active
- @gdef@rawbackslash{@let\=@rawbackslashxx}
+ @gdef@rawbackslash{@let\=@backslashcurfont}
  @gdef@otherbackslash{@let\=@realbackslash}
 }
 
@@ -6703,7 +7013,7 @@ should work if nowhere else does.}
 {\catcode`\\=\other @gdef@realbackslash{\}}
 
 % \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
+\def\normalbackslash{{\tt\backslashcurfont}}
 
 \catcode`\\=\active
 
@@ -6720,6 +7030,7 @@ should work if nowhere else does.}
   @let>=@normalgreater
   @let+=@normalplus
   @let$=@normaldollar %$ font-lock fix
+  @unsepspaces
 }
 
 % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
@@ -6759,10 +7070,6 @@ should work if nowhere else does.}
 @catcode`@# = @other
 @catcode`@% = @other
 
-@c Set initial fonts.
-@textfonts
-@rm
-
 
 @c Local variables:
 @c eval: (add-hook 'write-file-hooks 'time-stamp)
@@ -6771,3 +7078,9 @@ should work if nowhere else does.}
 @c time-stamp-format: "%:y-%02m-%02d.%02H"
 @c time-stamp-end: "}"
 @c End:
+
+@c vim:sw=2:
+
+@ignore
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 8d529bfadc..6f562e56d0 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -130,6 +130,7 @@
 /* Fortify support.  */
 #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
 #define __bos0(ptr) __builtin_object_size (ptr, 0)
+#define __warndecl(name, msg) extern void name (void)
 
 
 /* Support for flexible arrays.  */
diff --git a/misc/sys/syslog.h b/misc/sys/syslog.h
index ace88a0979..5007525d85 100644
--- a/misc/sys/syslog.h
+++ b/misc/sys/syslog.h
@@ -168,7 +168,7 @@ CODE facilitynames[] =
 
 __BEGIN_DECLS
 
-/* Close desriptor used to write to system logger.
+/* Close descriptor used to write to system logger.
 
    This function is a possible cancellation point and therefore not
    marked with __THROW.  */
diff --git a/nis/nis_callback.c b/nis/nis_callback.c
index b867b39ab7..7d1b9f8e53 100644
--- a/nis/nis_callback.c
+++ b/nis/nis_callback.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -274,7 +274,7 @@ __nis_create_callback (int (*callback) (const_nis_name, const nis_object *,
   struct nis_cb *cb;
   int sock = RPC_ANYSOCK;
   struct sockaddr_in sin;
-  int len = sizeof (struct sockaddr_in);
+  socklen_t len = sizeof (struct sockaddr_in);
   char addr[NIS_MAXNAMELEN + 1];
   unsigned short port;
 
diff --git a/nis/nis_clone_dir.c b/nis/nis_clone_dir.c
index 0271db1790..92e883fde9 100644
--- a/nis/nis_clone_dir.c
+++ b/nis/nis_clone_dir.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (c) 1997, 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -26,7 +26,7 @@
 directory_obj *
 nis_clone_directory (const directory_obj *src, directory_obj *dest)
 {
-  unsigned char *addr;
+  char *addr;
   unsigned int size;
   XDR xdrs;
   directory_obj *res;
diff --git a/nis/nis_clone_obj.c b/nis/nis_clone_obj.c
index 0b163fe662..4d88200284 100644
--- a/nis/nis_clone_obj.c
+++ b/nis/nis_clone_obj.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1997, 1998, 2004 Free Software Foundation, Inc.
+/* Copyright (c) 1997, 1998, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -26,8 +26,8 @@
 nis_object *
 nis_clone_object (const nis_object *src, nis_object *dest)
 {
-  unsigned char *addr;
-  unsigned long size;
+  char *addr;
+  unsigned int size;
   XDR xdrs;
   nis_object *res = NULL;
 
diff --git a/nis/nis_clone_res.c b/nis/nis_clone_res.c
index 135f397911..a0e098c1ed 100644
--- a/nis/nis_clone_res.c
+++ b/nis/nis_clone_res.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (c) 1997, 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -26,7 +26,7 @@
 nis_result *
 nis_clone_result (const nis_result *src, nis_result *dest)
 {
-  unsigned char *addr;
+  char *addr;
   unsigned int size;
   XDR xdrs;
   nis_result *res;
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index f372bde30e..df2979e5a4 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,24 @@
+2005-02-25  Roland McGrath  <roland@redhat.com>
+
+	* alloca_cutoff.c: Correct license text.
+	* tst-unload.c: Likewise.
+	* sysdeps/pthread/allocalim.h: Likewise.
+	* sysdeps/pthread/pt-initfini.c: Likewise.
+	* sysdeps/pthread/bits/libc-lock.h: Likewise.
+	* sysdeps/pthread/bits/sigthread.h: Likewise.
+	* sysdeps/unix/sysv/linux/bits/local_lim.h: Likewise.
+	* sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
+
+2005-02-16  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/pthread/pthread-functions.h (struct pthread_functions):
+	Use unsigned int * for ptr_nthreads.
+
+2005-02-14  Alan Modra  <amodra@bigpond.net.au>
+
+	* sysdeps/powerpc/tcb-offsets.sym (thread_offsetof): Redefine to suit
+	gcc4.
+
 2005-02-07  Richard Henderson  <rth@redhat.com>
 
 	* sysdeps/pthread/pthread.h (__sigsetjmp): Use pointer as first
@@ -10,6 +31,7 @@
 
 2005-01-26  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #737]
 	* sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S (__new_sem_trywait):
 	Use direct %gs segment access or, if NO_TLS_DIRECT_SEG_REFS,
 	at least gotntpoff relocation and addition.
diff --git a/nptl/sysdeps/powerpc/tcb-offsets.sym b/nptl/sysdeps/powerpc/tcb-offsets.sym
index a9701fb5b7..3962edbd54 100644
--- a/nptl/sysdeps/powerpc/tcb-offsets.sym
+++ b/nptl/sysdeps/powerpc/tcb-offsets.sym
@@ -6,7 +6,8 @@
 -- Abuse tls.h macros to derive offsets relative to the thread register.
 # undef __thread_register
 # define __thread_register	((void *) 0)
-# define thread_offsetof(mem)	((void *) &THREAD_SELF->mem - (void *) 0)
+# define thread_offsetof(mem)	((ptrdiff_t) THREAD_SELF + offsetof (struct pthread, mem))
+
 
 #if TLS_MULTIPLE_THREADS_IN_TCB
 MULTIPLE_THREADS_OFFSET		thread_offsetof (header.multiple_threads)
diff --git a/nptl/sysdeps/pthread/pthread-functions.h b/nptl/sysdeps/pthread/pthread-functions.h
index 2845346128..d75bbbb11e 100644
--- a/nptl/sysdeps/pthread/pthread-functions.h
+++ b/nptl/sysdeps/pthread/pthread-functions.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
 
@@ -90,7 +90,7 @@ struct pthread_functions
   void (*ptr__pthread_cleanup_pop_restore) (struct _pthread_cleanup_buffer *,
 					    int);
 #define HAVE_PTR_NTHREADS
-  int *ptr_nthreads;
+  unsigned int *ptr_nthreads;
   void (*ptr___pthread_unwind) (__pthread_unwind_buf_t *)
        __attribute ((noreturn)) __cleanup_fct_attribute;
   void (*ptr__nptl_deallocate_tsd) (void);
diff --git a/nscd/aicache.c b/nscd/aicache.c
index 4e0496ff44..bdd2a9b371 100644
--- a/nscd/aicache.c
+++ b/nscd/aicache.c
@@ -1,5 +1,5 @@
 /* Cache handling for host lookup.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
@@ -365,7 +365,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
 		     wait.  */
 		  assert (fd != -1);
 
-		  TEMP_FAILURE_RETRY (write (fd, &dataset->resp, total));
+		  writeall (fd, &dataset->resp, total);
 		}
 
 	      goto out;
diff --git a/nscd/connections.c b/nscd/connections.c
index fe4989d6ef..1f61ee1044 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -183,13 +183,28 @@ static int sock;
 unsigned long int client_queued;
 
 
+ssize_t
+writeall (int fd, const void *buf, size_t len)
+{
+  size_t n = len;
+  ssize_t ret;
+  do
+    {
+      ret = TEMP_FAILURE_RETRY (write (fd, buf, n));
+      if (ret <= 0)
+	break;
+      buf = (const char *) buf + ret;
+      n -= ret;
+    }
+  while (n > 0);
+  return ret < 0 ? ret : len - n;
+}
+
+
 /* Initialize database information structures.  */
 void
 nscd_init (void)
 {
-  struct sockaddr_un sock_addr;
-  size_t cnt;
-
   /* Secure mode and unprivileged mode are incompatible */
   if (server_user != NULL && secure_in_use)
     {
@@ -206,7 +221,7 @@ nscd_init (void)
     /* No configuration for this value, assume a default.  */
     nthreads = 2 * lastdb;
 
-  for (cnt = 0; cnt < lastdb; ++cnt)
+  for (size_t cnt = 0; cnt < lastdb; ++cnt)
     if (dbs[cnt].enabled)
       {
 	pthread_rwlock_init (&dbs[cnt].lock, NULL);
@@ -502,6 +517,7 @@ cannot set socket to close on exec: %s; disabling paranoia mode"),
       exit (1);
     }
   /* Bind a name to the socket.  */
+  struct sockaddr_un sock_addr;
   sock_addr.sun_family = AF_UNIX;
   strcpy (sock_addr.sun_path, _PATH_NSCDSOCKET);
   if (bind (sock, (struct sockaddr *) &sock_addr, sizeof (sock_addr)) < 0)
@@ -693,7 +709,7 @@ cannot handle old request version %d; current version is %d"),
       if (cached != NULL)
 	{
 	  /* Hurray it's in the cache.  */
-	  if (TEMP_FAILURE_RETRY (write (fd, cached->data, cached->recsize))
+	  if (writeall (fd, cached->data, cached->recsize)
 	      != cached->recsize
 	      && __builtin_expect (debug_level, 0) > 0)
 	    {
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
index c565f5a682..5d327f360c 100644
--- a/nscd/grpcache.c
+++ b/nscd/grpcache.c
@@ -1,5 +1,5 @@
 /* Cache handling for group lookup.
-   Copyright (C) 1998-2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1998-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -292,7 +292,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
 	     unnecessarily let the receiver wait.  */
 	  assert (fd != -1);
 
-	  written = TEMP_FAILURE_RETRY (write (fd, &dataset->resp, total));
+	  written = writeall (fd, &dataset->resp, total);
 	}
 
       /* Add the record to the database.  But only if it has not been
@@ -429,11 +429,10 @@ addgrbyX (struct database_dyn *db, int fd, request_header *req,
     {
       char *old_buffer = buffer;
       errno = 0;
-#define INCR 1024
 
       if (__builtin_expect (buflen > 32768, 0))
 	{
-	  buflen += INCR;
+	  buflen *= 2;
 	  buffer = (char *) realloc (use_malloc ? buffer : NULL, buflen);
 	  if (buffer == NULL)
 	    {
@@ -454,7 +453,7 @@ addgrbyX (struct database_dyn *db, int fd, request_header *req,
       else
 	/* Allocate a new buffer on the stack.  If possible combine it
 	   with the previously allocated buffer.  */
-	buffer = (char *) extend_alloca (buffer, buflen, buflen + INCR);
+	buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen);
     }
 
 #if 0
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
index 99d2998f49..377f02387d 100644
--- a/nscd/hstcache.c
+++ b/nscd/hstcache.c
@@ -1,5 +1,5 @@
 /* Cache handling for host lookup.
-   Copyright (C) 1998-2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1998-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -327,7 +327,7 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
 	     unnecessarily keep the receiver waiting.  */
 	  assert (fd != -1);
 
-	  written = TEMP_FAILURE_RETRY (write (fd, &dataset->resp, total));
+	  written = writeall (fd, &dataset->resp, total);
 	}
 
       /* Add the record to the database.  But only if it has not been
@@ -453,11 +453,10 @@ addhstbyX (struct database_dyn *db, int fd, request_header *req,
     {
       char *old_buffer = buffer;
       errno = 0;
-#define INCR 1024
 
       if (__builtin_expect (buflen > 32768, 0))
 	{
-	  buflen += INCR;
+	  buflen *= 2;
 	  buffer = (char *) realloc (use_malloc ? buffer : NULL, buflen);
 	  if (buffer == NULL)
 	    {
@@ -478,7 +477,7 @@ addhstbyX (struct database_dyn *db, int fd, request_header *req,
       else
 	/* Allocate a new buffer on the stack.  If possible combine it
 	   with the previously allocated buffer.  */
-	buffer = (char *) extend_alloca (buffer, buflen, buflen + INCR);
+	buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen);
     }
 
 #if 0
diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c
index b46433716b..db01f1bc28 100644
--- a/nscd/initgrcache.c
+++ b/nscd/initgrcache.c
@@ -1,5 +1,5 @@
 /* Cache handling for host lookup.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
@@ -343,7 +343,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
 	     unnecessarily let the receiver wait.  */
 	  assert (fd != -1);
 
-	  written = TEMP_FAILURE_RETRY (write (fd, &dataset->resp, total));
+	  written = writeall (fd, &dataset->resp, total);
 	}
 
 
diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h
index d49cb8136c..1389f2da19 100644
--- a/nscd/nscd-client.h
+++ b/nscd/nscd-client.h
@@ -1,4 +1,5 @@
-/* Copyright (c) 1998, 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 1999, 2000, 2003, 2004, 2005
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
 
@@ -28,6 +29,7 @@
 #include <sys/types.h>
 #include <atomic.h>
 #include <nscd-types.h>
+#include <sys/uio.h>
 
 
 /* Version number of the daemon interface */
@@ -309,4 +311,13 @@ extern const struct datahead *__nscd_cache_search (request_type type,
 						   size_t keylen,
 						   const struct mapped_database *mapped);
 
+/* Wrappers around read, readv and write that only read/write less than LEN
+   bytes on error or EOF.  */
+extern ssize_t __readall (int fd, void *buf, size_t len)
+  attribute_hidden;
+extern ssize_t __readvall (int fd, const struct iovec *iov, int iovcnt)
+  attribute_hidden;
+extern ssize_t writeall (int fd, const void *buf, size_t len)
+  attribute_hidden;
+
 #endif /* nscd.h */
diff --git a/nscd/nscd_getai.c b/nscd/nscd_getai.c
index 866f7b2a5f..4e3dfad1ea 100644
--- a/nscd/nscd_getai.c
+++ b/nscd/nscd_getai.c
@@ -119,8 +119,7 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
       if (respdata == NULL)
 	{
 	  /* Read the data from the socket.  */
-	  if ((size_t) TEMP_FAILURE_RETRY (__read (sock, resultbuf + 1,
-						   datalen)) == datalen)
+	  if ((size_t) __readall (sock, resultbuf + 1, datalen) == datalen)
 	    {
 	      retval = 0;
 	      *result = resultbuf;
diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c
index 282912db3e..dae1c0da54 100644
--- a/nscd/nscd_getgr_r.c
+++ b/nscd/nscd_getgr_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
+/* Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1998.
@@ -202,7 +202,7 @@ nscd_getgr_r (const char *key, size_t keylen, request_type type,
 	  total_len = vec[0].iov_len + vec[1].iov_len;
 
 	  /* Get this data.  */
-	  size_t n = TEMP_FAILURE_RETRY (__readv (sock, vec, 2));
+	  size_t n = __readvall (sock, vec, 2);
 	  if (__builtin_expect (n != total_len, 0))
 	    goto out_close;
 	}
@@ -232,8 +232,7 @@ nscd_getgr_r (const char *key, size_t keylen, request_type type,
       retval = 0;
       if (gr_name == NULL)
 	{
-	  size_t n = TEMP_FAILURE_RETRY (__read (sock, resultbuf->gr_mem[0],
-						 total_len));
+	  size_t n = __readall (sock, resultbuf->gr_mem[0], total_len);
 	  if (__builtin_expect (n != total_len, 0))
 	    {
 	      /* The `errno' to some value != ERANGE.  */
diff --git a/nscd/nscd_gethst_r.c b/nscd/nscd_gethst_r.c
index 5d9d569107..70ee38b71f 100644
--- a/nscd/nscd_gethst_r.c
+++ b/nscd/nscd_gethst_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -218,6 +218,7 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
 						   ? INADDRSZ : IN6ADDRSZ)))
 	{
 	no_room:
+	  *h_errnop = NETDB_INTERNAL;
 	  __set_errno (ERANGE);
 	  retval = ERANGE;
 	  goto out_close;
@@ -298,8 +299,7 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
 	      ++n;
 	    }
 
-	  if ((size_t) TEMP_FAILURE_RETRY (__readv (sock, vec, n))
-	      != total_len)
+	  if ((size_t) __readvall (sock, vec, n) != total_len)
 	    goto out_close;
 	}
       else
@@ -328,9 +328,8 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
       /* And finally read the aliases.  */
       if (addr_list == NULL)
 	{
-	  if ((size_t) TEMP_FAILURE_RETRY (__read (sock,
-						   resultbuf->h_aliases[0],
-						   total_len)) == total_len)
+	  if ((size_t) __readall (sock, resultbuf->h_aliases[0], total_len)
+	      == total_len)
 	    {
 	      retval = 0;
 	      *result = resultbuf;
diff --git a/nscd/nscd_getpw_r.c b/nscd/nscd_getpw_r.c
index fe5fb43ca1..61a712c6b4 100644
--- a/nscd/nscd_getpw_r.c
+++ b/nscd/nscd_getpw_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1998.
 
@@ -172,7 +172,7 @@ nscd_getpw_r (const char *key, size_t keylen, request_type type,
       retval = 0;
       if (pw_name == NULL)
 	{
-	  ssize_t nbytes = TEMP_FAILURE_RETRY (__read (sock, buffer, total));
+	  ssize_t nbytes = __readall (sock, buffer, total);
 
 	  if (__builtin_expect (nbytes != total, 0))
 	    {
diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c
index ea4fb968db..c99cb430aa 100644
--- a/nscd/nscd_helper.c
+++ b/nscd/nscd_helper.c
@@ -34,6 +34,64 @@
 #include "nscd-client.h"
 
 
+ssize_t
+__readall (int fd, void *buf, size_t len)
+{
+  size_t n = len;
+  ssize_t ret;
+  do
+    {
+      ret = TEMP_FAILURE_RETRY (__read (fd, buf, n));
+      if (ret <= 0)
+	break;
+      buf = (char *) buf + ret;
+      n -= ret;
+    }
+  while (n > 0);
+  return ret < 0 ? ret : len - n;
+}
+
+
+ssize_t
+__readvall (int fd, const struct iovec *iov, int iovcnt)
+{
+  ssize_t ret = TEMP_FAILURE_RETRY (__readv (fd, iov, iovcnt));
+  if (ret <= 0)
+    return ret;
+
+  size_t total = 0;
+  for (int i = 0; i < iovcnt; ++i)
+    total += iov[i].iov_len;
+
+  if (ret < total)
+    {
+      struct iovec iov_buf[iovcnt];
+      ssize_t r = ret;
+
+      struct iovec *iovp = memcpy (iov_buf, iov, iovcnt * sizeof (*iov));
+      do
+	{
+	  while (iovp->iov_len <= r)
+	    {
+	      r -= iovp->iov_len;
+	      --iovcnt;
+	      ++iovp;
+	    }
+	  iovp->iov_base = (char *) iovp->iov_base + r;
+	  iovp->iov_len -= r;
+	  r = TEMP_FAILURE_RETRY (__readv (fd, iovp, iovcnt));
+	  if (r <= 0)
+	    break;
+	  ret += r;
+	}
+      while (ret < total);
+      if (r < 0)
+	ret = r;
+    }
+  return ret;
+}
+
+
 static int
 open_socket (void)
 {
diff --git a/nscd/nscd_initgroups.c b/nscd/nscd_initgroups.c
index daddf2e164..cf5af6edc1 100644
--- a/nscd/nscd_initgroups.c
+++ b/nscd/nscd_initgroups.c
@@ -110,9 +110,8 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size,
       if (respdata == NULL)
 	{
 	  /* Read the data from the socket.  */
-	  if ((size_t) TEMP_FAILURE_RETRY (__read (sock, *groupsp,
-						   initgr_resp->ngrps
-						   * sizeof (gid_t)))
+	  if ((size_t) __readall (sock, *groupsp, initgr_resp->ngrps
+						  * sizeof (gid_t))
 	      == initgr_resp->ngrps * sizeof (gid_t))
 	    retval = initgr_resp->ngrps;
 	}
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
index e8b9578778..34265c3f39 100644
--- a/nscd/pwdcache.c
+++ b/nscd/pwdcache.c
@@ -1,5 +1,5 @@
 /* Cache handling for passwd lookup.
-   Copyright (C) 1998-2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1998-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -287,7 +287,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
 	     unnecessarily let the receiver wait.  */
 	  assert (fd != -1);
 
-	  written = TEMP_FAILURE_RETRY (write (fd, &dataset->resp, total));
+	  written = writeall (fd, &dataset->resp, total);
 	}
 
 
@@ -425,11 +425,10 @@ addpwbyX (struct database_dyn *db, int fd, request_header *req,
     {
       char *old_buffer = buffer;
       errno = 0;
-#define INCR 1024
 
       if (__builtin_expect (buflen > 32768, 0))
 	{
-	  buflen += INCR;
+	  buflen *= 2;
 	  buffer = (char *) realloc (use_malloc ? buffer : NULL, buflen);
 	  if (buffer == NULL)
 	    {
@@ -450,7 +449,7 @@ addpwbyX (struct database_dyn *db, int fd, request_header *req,
       else
 	/* Allocate a new buffer on the stack.  If possible combine it
 	   with the previously allocated buffer.  */
-	buffer = (char *) extend_alloca (buffer, buflen, buflen + INCR);
+	buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen);
     }
 
 #if 0
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000000..bc7650b39d
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,5999 @@
+# ÐÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ GNU libc
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Oleg Tihonov <ost@tatnipi.ru>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libc 2.3.3\n"
+"POT-Creation-Date: 2004-08-05 09:16+0200\n"
+"PO-Revision-Date: 2005-02-15 11:35+0300\n"
+"Last-Translator: Oleg Tihonov <ost@tatnipi.ru>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=koi8-r\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: sysdeps/generic/siglist.h:29 stdio-common/../sysdeps/unix/siglist.c:27
+msgid "Hangup"
+msgstr "ïÂÒÙ× ÔÅÒÍÉÎÁÌØÎÏÊ ÌÉÎÉÉ"
+
+#: sysdeps/generic/siglist.h:30 stdio-common/../sysdeps/unix/siglist.c:28
+msgid "Interrupt"
+msgstr "ðÒÅÒÙ×ÁÎÉÅ"
+
+#: sysdeps/generic/siglist.h:31 stdio-common/../sysdeps/unix/siglist.c:29
+msgid "Quit"
+msgstr "÷ÙÈÏÄ"
+
+#: sysdeps/generic/siglist.h:32 stdio-common/../sysdeps/unix/siglist.c:30
+msgid "Illegal instruction"
+msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ÉÎÓÔÒÕËÃÉÑ"
+
+#: sysdeps/generic/siglist.h:33 stdio-common/../sysdeps/unix/siglist.c:31
+msgid "Trace/breakpoint trap"
+msgstr "ìÏ×ÕÛËÁ ÔÒÁÓÓÉÒÏ×ËÉ/ÏÓÔÁÎÏ×Á"
+
+#: sysdeps/generic/siglist.h:34
+msgid "Aborted"
+msgstr "á×ÁÒÉÊÎÙÊ ÏÓÔÁÎÏ×"
+
+#: sysdeps/generic/siglist.h:35 stdio-common/../sysdeps/unix/siglist.c:34
+msgid "Floating point exception"
+msgstr "éÓËÌÀÞÅÎÉÅ × ÏÐÅÒÁÃÉÉ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ"
+
+#: sysdeps/generic/siglist.h:36 stdio-common/../sysdeps/unix/siglist.c:35
+msgid "Killed"
+msgstr "õÂÉÔÏ"
+
+#: sysdeps/generic/siglist.h:37 stdio-common/../sysdeps/unix/siglist.c:36
+msgid "Bus error"
+msgstr "ïÛÉÂËÁ ÛÉÎÙ"
+
+#: sysdeps/generic/siglist.h:38 stdio-common/../sysdeps/unix/siglist.c:37
+msgid "Segmentation fault"
+msgstr "ïÛÉÂËÁ ÓÅÇÍÅÎÔÉÒÏ×ÁÎÉÑ"
+
+#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
+#. TRANS Every library function that returns this error code also generates a
+#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
+#. TRANS or blocked.  Thus, your program will never actually see @code{EPIPE}
+#. TRANS unless it has handled or blocked @code{SIGPIPE}.
+#: sysdeps/generic/siglist.h:39 stdio-common/../sysdeps/gnu/errlist.c:351
+#: stdio-common/../sysdeps/unix/siglist.c:39
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
+msgid "Broken pipe"
+msgstr "ïÂÒÙ× ËÁÎÁÌÁ"
+
+#: sysdeps/generic/siglist.h:40 stdio-common/../sysdeps/unix/siglist.c:40
+msgid "Alarm clock"
+msgstr "óÉÇÎÁÌ ÔÁÊÍÅÒÁ"
+
+#: sysdeps/generic/siglist.h:41 stdio-common/../sysdeps/unix/siglist.c:41
+msgid "Terminated"
+msgstr "úÁ×ÅÒÛÅÎÏ"
+
+#: sysdeps/generic/siglist.h:42 stdio-common/../sysdeps/unix/siglist.c:42
+msgid "Urgent I/O condition"
+msgstr "óÉÔÕÁÃÉÑ ÓÒÏÞÎÏÇÏ ××ÏÄÁ/×Ù×ÏÄÁ"
+
+#: sysdeps/generic/siglist.h:43 stdio-common/../sysdeps/unix/siglist.c:43
+msgid "Stopped (signal)"
+msgstr "ïÓÔÁÎÏ×ÌÅÎÏ (ÓÉÇÎÁÌ)"
+
+#: sysdeps/generic/siglist.h:44 stdio-common/../sysdeps/unix/siglist.c:44
+msgid "Stopped"
+msgstr "ïÓÔÁÎÏ×ÌÅÎÏ"
+
+#: sysdeps/generic/siglist.h:45 stdio-common/../sysdeps/unix/siglist.c:45
+msgid "Continued"
+msgstr "ðÒÏÄÏÌÖÅÎÏ"
+
+#: sysdeps/generic/siglist.h:46 stdio-common/../sysdeps/unix/siglist.c:46
+msgid "Child exited"
+msgstr "äÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ ÚÁ×ÅÒÛÉÌÓÑ"
+
+#: sysdeps/generic/siglist.h:47 stdio-common/../sysdeps/unix/siglist.c:47
+msgid "Stopped (tty input)"
+msgstr "ïÓÔÁÎÏ×ÌÅÎÏ (××ÏÄ Ó ÔÅÒÍÉÎÁÌÁ)"
+
+#: sysdeps/generic/siglist.h:48 stdio-common/../sysdeps/unix/siglist.c:48
+msgid "Stopped (tty output)"
+msgstr "ïÓÔÁÎÏ×ÌÅÎÏ (×Ù×ÏÄ ÎÁ ÔÅÒÍÉÎÁÌ)"
+
+#: sysdeps/generic/siglist.h:49 stdio-common/../sysdeps/unix/siglist.c:49
+msgid "I/O possible"
+msgstr "÷ÏÚÍÏÖÅÎ ××ÏÄ/×Ù×ÏÄ"
+
+#: sysdeps/generic/siglist.h:50 stdio-common/../sysdeps/unix/siglist.c:50
+msgid "CPU time limit exceeded"
+msgstr "ðÒÅ×ÙÛÅÎ ÌÉÍÉÔ ÐÒÏÃÅÓÓÏÒÎÏÇÏ ×ÒÅÍÅÎÉ"
+
+#: sysdeps/generic/siglist.h:51 stdio-common/../sysdeps/unix/siglist.c:51
+msgid "File size limit exceeded"
+msgstr "ðÒÅ×ÙÛÅÎ ÌÉÍÉÔ ÒÁÚÍÅÒÁ ÆÁÊÌÁ"
+
+#: sysdeps/generic/siglist.h:52 stdio-common/../sysdeps/unix/siglist.c:52
+msgid "Virtual timer expired"
+msgstr "÷ÉÒÔÕÁÌØÎÙÊ ÔÁÊÍÅÒ ÉÓÔÅË"
+
+#: sysdeps/generic/siglist.h:53 stdio-common/../sysdeps/unix/siglist.c:53
+msgid "Profiling timer expired"
+msgstr "ðÒÏÆÉÌÉÒÏ×ÏÞÎÙÊ ÔÁÊÍÅÒ ÉÓÔÅË"
+
+#: sysdeps/generic/siglist.h:54 stdio-common/../sysdeps/unix/siglist.c:54
+msgid "Window changed"
+msgstr "ïËÎÏ ÉÚÍÅÎÉÌÏÓØ"
+
+#: sysdeps/generic/siglist.h:55 stdio-common/../sysdeps/unix/siglist.c:56
+msgid "User defined signal 1"
+msgstr "ïÐÒÅÄÅÌÑÅÍÙÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÇÎÁÌ 1"
+
+#: sysdeps/generic/siglist.h:56 stdio-common/../sysdeps/unix/siglist.c:57
+msgid "User defined signal 2"
+msgstr "ïÐÒÅÄÅÌÑÅÍÙÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÇÎÁÌ 2"
+
+#: sysdeps/generic/siglist.h:60 stdio-common/../sysdeps/unix/siglist.c:33
+msgid "EMT trap"
+msgstr "ìÏ×ÕÛËÁ EMT"
+
+#: sysdeps/generic/siglist.h:63 stdio-common/../sysdeps/unix/siglist.c:38
+msgid "Bad system call"
+msgstr "îÅ×ÅÒÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×"
+
+#: sysdeps/generic/siglist.h:66
+msgid "Stack fault"
+msgstr "ïÛÉÂËÁ ÓÔÅËÁ"
+
+#: sysdeps/generic/siglist.h:69
+msgid "Information request"
+msgstr "úÁÐÒÏÓ ÉÎÆÏÒÍÁÃÉÉ"
+
+#: sysdeps/generic/siglist.h:71
+msgid "Power failure"
+msgstr "óÂÏÊ ÐÉÔÁÎÉÑ"
+
+#: sysdeps/generic/siglist.h:74 stdio-common/../sysdeps/unix/siglist.c:55
+msgid "Resource lost"
+msgstr "ðÏÔÅÒÑ ÒÅÓÕÒÓÁ"
+
+#: sysdeps/mach/hurd/mips/dl-machine.c:68
+#: string/../sysdeps/mach/_strerror.c:57
+msgid "Error in unknown error system: "
+msgstr "ïÛÉÂËÁ × ÎÅÉÚ×ÅÓÔÎÏÊ ÓÉÓÔÅÍÅ ÏÛÉÂÏË: "
+
+#: sysdeps/mach/hurd/mips/dl-machine.c:83
+#: string/../sysdeps/generic/_strerror.c:44
+#: string/../sysdeps/mach/_strerror.c:87
+msgid "Unknown error "
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ "
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#, c-format
+msgid "cannot open `%s'"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ `%s'"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#, c-format
+msgid "cannot read header from `%s'"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË ÉÚ `%s'"
+
+#: iconv/iconv_charmap.c:159 iconv/iconv_prog.c:295 catgets/gencat.c:288
+#, c-format
+msgid "cannot open input file `%s'"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÈÏÄÎÏÊ ÆÁÊÌ `%s'"
+
+#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:313
+#, c-format
+msgid "error while closing input `%s'"
+msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁËÒÙÔÉÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ `%s'"
+
+#: iconv/iconv_charmap.c:443
+#, c-format
+msgid "illegal input sequence at position %Zd"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ×ÈÏÄÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ × ÐÏÚÉÃÉÉ %Zd"
+
+#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:506
+msgid "incomplete character or shift sequence at end of buffer"
+msgstr "ÎÅÐÏÌÎÙÊ ÚÎÁË ÉÌÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÓÄ×ÉÇÁ × ËÏÎÃÅ ÂÕÆÅÒÁ"
+
+#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:543 iconv/iconv_prog.c:549
+#: iconv/iconv_prog.c:585
+msgid "error while reading the input"
+msgstr "ÏÛÉÂËÁ ÐÒÉ ÞÔÅÎÉÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+
+#: iconv/iconv_charmap.c:525 iconv/iconv_prog.c:567
+msgid "unable to allocate buffer for input"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÂÕÆÅÒ ÄÌÑ ××ÏÄÁ"
+
+#: iconv/iconv_prog.c:61
+msgid "Input/Output format specification:"
+msgstr "óÐÅÃÉÆÉËÁÃÉÑ ÆÏÒÍÁÔÁ ××ÏÄÁ/×Ù×ÏÄÁ:"
+
+#: iconv/iconv_prog.c:62
+msgid "encoding of original text"
+msgstr "ËÏÄÉÒÏ×ËÁ ÏÒÉÇÉÎÁÌØÎÏÇÏ ÔÅËÓÔÁ"
+
+#: iconv/iconv_prog.c:63
+msgid "encoding for output"
+msgstr "ËÏÄÉÒÏ×ËÁ ÄÌÑ ×Ù×ÏÄÁ"
+
+#: iconv/iconv_prog.c:64
+msgid "Information:"
+msgstr "éÎÆÏÒÍÁÃÉÑ:"
+
+#: iconv/iconv_prog.c:65
+msgid "list all known coded character sets"
+msgstr "ÐÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÉÚ×ÅÓÔÎÙÅ ×ÓÔÒÏÅÎÎÙÅ ËÏÄÉÒÏ×ËÉ"
+
+#: iconv/iconv_prog.c:66 locale/programs/localedef.c:128
+msgid "Output control:"
+msgstr "õÓÐÒÁ×ÌÅÎÉÅ ×Ù×ÏÄÏÍ:"
+
+#: iconv/iconv_prog.c:67
+msgid "omit invalid characters from output"
+msgstr "ÐÒÏÐÕÓËÁÔØ ÎÁ ×Ù×ÏÄÅ ÎÅÄÏÐÕÓÔÉÍÙÅ ÚÎÁËÉ"
+
+#: iconv/iconv_prog.c:68
+msgid "output file"
+msgstr "×ÙÈÏÄÎÏÊ ÆÁÊÌ"
+
+#: iconv/iconv_prog.c:69
+msgid "suppress warnings"
+msgstr "ÎÅ ÐÅÞÁÔÁÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ"
+
+#: iconv/iconv_prog.c:70
+msgid "print progress information"
+msgstr "ÐÅÞÁÔÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÈÏÄÅ ÒÁÂÏÔÙ"
+
+#: iconv/iconv_prog.c:75
+msgid "Convert encoding of given files from one encoding to another."
+msgstr "ðÒÅÏÂÒÁÚÕÅÔ ÕËÁÚÁÎÎÙÅ ÆÁÊÌÙ ÉÚ ÏÄÎÏÊ ËÏÄÉÒÏ×ËÉ × ÄÒÕÇÕÀ."
+
+#: iconv/iconv_prog.c:79
+msgid "[FILE...]"
+msgstr "[æáêì...]"
+
+#: iconv/iconv_prog.c:201
+msgid "cannot open output file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
+
+#: iconv/iconv_prog.c:243
+#, c-format
+msgid "conversion from `%s' and to `%s' are not supported"
+msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÉÚ `%s' É × `%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ"
+
+#: iconv/iconv_prog.c:248
+#, c-format
+msgid "conversion from `%s' is not supported"
+msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ `%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#: iconv/iconv_prog.c:255
+#, c-format
+msgid "conversion to `%s' is not supported"
+msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ × `%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#: iconv/iconv_prog.c:259
+#, c-format
+msgid "conversion from `%s' to `%s' is not supported"
+msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ `%s' × `%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#: iconv/iconv_prog.c:265
+msgid "failed to start conversion processing"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÎÁÞÁÔØ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ"
+
+#: iconv/iconv_prog.c:360
+msgid "error while closing output file"
+msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁËÒÙÔÉÉ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+
+#: iconv/iconv_prog.c:409 iconv/iconvconfig.c:357 locale/programs/locale.c:279
+#: locale/programs/localedef.c:372 catgets/gencat.c:233
+#: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+msgstr "ï ÏÛÉÂËÁÈ ÓÏÏÂÝÁÊÔÅ ÐÒÉ ÐÏÍÏÝÉ ÐÒÏÇÒÁÍÍÙ `glibcbug' ÎÁ ÁÄÒÅÓ <bugs@gnu.org>.\n"
+
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:371 locale/programs/locale.c:292
+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:913
+#: nss/getent.c:74 nscd/nscd.c:355 nscd/nscd_nischeck.c:90 elf/ldconfig.c:274
+#: elf/sprof.c:349
+#, 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 ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"üÔÏ Ó×ÏÂÏÄÎÁÑ ÐÒÏÇÒÁÍÍÁ; ÐÏÄÒÏÂÎÏÓÔÉ Ï ÕÓÌÏ×ÉÑÈ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ\n"
+"ÓÍÏÔÒÉÔÅ × ÉÓÈÏÄÎÏÍ ÔÅËÓÔÅ.  íÙ îå ÐÒÅÄÏÓÔÁ×ÌÑÅÍ ÇÁÒÁÎÔÉÊ; ÄÁÖÅ ÇÁÒÁÎÔÉÊ\n"
+"ëïííåòþåóëïê ðòéçïäîïóôé ÉÌÉ ðòéçïäîïóôé äìñ ëáëïê-ìéâï ãåìé.\n"
+
+#: iconv/iconv_prog.c:428 iconv/iconvconfig.c:376 locale/programs/locale.c:297
+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:918
+#: nss/getent.c:79 nscd/nscd.c:360 nscd/nscd_nischeck.c:95 elf/ldconfig.c:279
+#: elf/sprof.c:355
+#, c-format
+msgid "Written by %s.\n"
+msgstr "á×ÔÏÒ ÐÒÏÇÒÁÍÍÙ -- %s.\n"
+
+#: iconv/iconv_prog.c:458 iconv/iconv_prog.c:484
+msgid "conversion stopped due to problem in writing the output"
+msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÏÓÔÁÎÏ×ÌÅÎÏ ÉÚ-ÚÁ ÐÒÏÂÌÅÍÙ ÐÒÉ ÚÁÐÉÓÉ ×Ù×ÏÄÁ"
+
+#: iconv/iconv_prog.c:502
+#, c-format
+msgid "illegal input sequence at position %ld"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ×ÈÏÄÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ × ÐÏÚÉÃÉÉ %ld"
+
+#: iconv/iconv_prog.c:510
+msgid "internal error (illegal descriptor)"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ (ÎÅ×ÅÒÎÙÊ ÄÅÓËÒÉÐÔÏÒ)"
+
+#: iconv/iconv_prog.c:513
+#, c-format
+msgid "unknown iconv() error %d"
+msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ iconv() %d"
+
+#: iconv/iconv_prog.c:756
+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 ""
+"óÌÅÄÕÀÝÉÊ ÓÐÉÓÏË ÓÏÄÅÒÖÉÔ ×ÓÅ ÉÚ×ÅÓÔÎÙÅ ×ÓÔÒÏÅÎÎÙÅ ËÏÄÉÒÏ×ËÉ.  üÔÏ ÎÅ\n"
+"ÏÂÑÚÁÔÅÌØÎÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÌÀÂÙÅ ËÏÍÂÉÎÁÃÉÉ ÄÁÎÎÙÈ\n"
+"ÉÍÅÎ × ÐÁÒÁÍÅÔÒÁÈ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ FROM É TO.  ïÄÎÁ É ÔÁ ÖÅ ËÏÄÉÒÏ×ËÁ\n"
+"ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÞÉÓÌÅÎÁ ÐÏÄ ÎÅÓËÏÌØËÉÍÉ ÉÍÅÎÁÍÉ (ÐÓÅ×ÄÏÎÉÍÁÍÉ).\n"
+"\n"
+"  "
+
+#: iconv/iconvconfig.c:110
+msgid "Create fastloading iconv module configuration file."
+msgstr "óÏÚÄÁÅÔ ÂÙÓÔÒÏÚÁÇÒÕÖÁÅÍÙÊ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ ÍÏÄÕÌÑ iconv."
+
+#: iconv/iconvconfig.c:114
+msgid "[DIR...]"
+msgstr "[ëáôáìïç...]"
+
+#: iconv/iconvconfig.c:126
+msgid "Prefix used for all file accesses"
+msgstr "ðÒÅÆÉËÓ, ÉÓÐÏÌØÚÕÅÍÙÊ ÄÌÑ ÄÏÓÔÕÐÁ ËÏ ×ÓÅÍ ÆÁÊÌÁÍ"
+
+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+msgid "no output file produced because warning were issued"
+msgstr "×ÙÈÏÄÎÏÊ ÆÁÊÌ ÎÅ ÓÏÚÄÁÎ, ÐÏÓËÏÌØËÕ ÂÙÌÉ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ"
+
+#: iconv/iconvconfig.c:405
+msgid "while inserting in search tree"
+msgstr "ÐÒÉ ×ÓÔÁ×ËÅ × ÄÅÒÅ×Ï ÐÏÉÓËÁ"
+
+#: iconv/iconvconfig.c:1204
+msgid "cannot generate output file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÇÅÎÅÒÉÒÏ×ÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
+
+#: locale/programs/charmap-dir.c:59
+#, c-format
+msgid "cannot read character map directory `%s'"
+msgstr ""
+
+#: locale/programs/charmap.c:136
+#, c-format
+msgid "character map file `%s' not found"
+msgstr ""
+
+#: locale/programs/charmap.c:194
+#, c-format
+msgid "default character map file `%s' not found"
+msgstr ""
+
+#: locale/programs/charmap.c:257
+#, c-format
+msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
+msgstr ""
+
+#: locale/programs/charmap.c:336
+#, c-format
+msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
+msgstr "%s: <mb_cur_max> ÄÏÌÖÎÏ ÂÙÔØ ÂÏÌØÛÅ ÞÅÍ <mb_cur_min>\n"
+
+#: locale/programs/charmap.c:356 locale/programs/charmap.c:373
+#: locale/programs/repertoire.c:175
+#, c-format
+msgid "syntax error in prolog: %s"
+msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÐÒÏÌÏÇÅ: %s"
+
+#: locale/programs/charmap.c:357
+msgid "invalid definition"
+msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ"
+
+#: locale/programs/charmap.c:374 locale/programs/locfile.c:126
+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:176
+msgid "bad argument"
+msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ÁÒÇÕÍÅÎÔ"
+
+#: locale/programs/charmap.c:402
+#, c-format
+msgid "duplicate definition of <%s>"
+msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÄÌÑ <%s>"
+
+#: locale/programs/charmap.c:409
+#, c-format
+msgid "value for <%s> must be 1 or greater"
+msgstr "ÚÎÁÞÅÎÉÅ <%s> ÄÏÌÖÎÏ ÂÙÔØ 1 ÉÌÉ ÂÏÌØÛÅ"
+
+#: locale/programs/charmap.c:421
+#, c-format
+msgid "value of <%s> must be greater or equal than the value of <%s>"
+msgstr "ÚÎÁÞÅÎÉÅ <%s> ÄÏÌÖÎÏ ÂÙÔØ ÂÏÌØÛÅ ÉÌÉ ÒÁ×ÎÏ ÚÎÁÞÅÎÉÀ <%s>"
+
+#: locale/programs/charmap.c:444 locale/programs/repertoire.c:184
+#, c-format
+msgid "argument to <%s> must be a single character"
+msgstr "ÁÒÇÕÍÅÎÔ ÄÌÑ <%s> ÄÏÌÖÅÎ ÂÙÔØ ÏÄÎÉÍ ÚÎÁËÏÍ"
+
+#: locale/programs/charmap.c:470
+msgid "character sets with locking states are not supported"
+msgstr "ËÏÄÉÒÏ×ËÉ Ó ÂÌÏËÉÒÕÀÝÉÍÉ ÓÏÓÔÏÑÎÉÑÍÉ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ"
+
+#: locale/programs/charmap.c:497 locale/programs/charmap.c:551
+#: locale/programs/charmap.c:583 locale/programs/charmap.c:677
+#: locale/programs/charmap.c:732 locale/programs/charmap.c:773
+#: locale/programs/charmap.c:814
+#, c-format
+msgid "syntax error in %s definition: %s"
+msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÏÐÒÅÄÅÌÅÎÉÉ %s: %s"
+
+#: locale/programs/charmap.c:498 locale/programs/charmap.c:678
+#: locale/programs/charmap.c:774 locale/programs/repertoire.c:231
+msgid "no symbolic name given"
+msgstr "ÎÅ ÚÁÄÁÎÏ ÓÉÍ×ÏÌØÎÏÅ ÉÍÑ"
+
+#: locale/programs/charmap.c:552
+msgid "invalid encoding given"
+msgstr "ÚÁÄÁÎÁ ÎÅ×ÅÒÎÁÑ ËÏÄÉÒÏ×ËÁ"
+
+#: locale/programs/charmap.c:561
+msgid "too few bytes in character encoding"
+msgstr "ÓÌÉÛËÏÍ ÍÁÌÏ ÂÁÊÔ × ËÏÄÉÒÏ×ËÅ ÚÎÁËÁ"
+
+#: locale/programs/charmap.c:563
+msgid "too many bytes in character encoding"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÂÁÊÔ × ËÏÄÉÒÏ×ËÅ ÚÎÁËÁ"
+
+#: locale/programs/charmap.c:585 locale/programs/charmap.c:733
+#: locale/programs/charmap.c:816 locale/programs/repertoire.c:297
+msgid "no symbolic name given for end of range"
+msgstr "ÎÅ ÚÁÄÁÎÏ ÓÉÍ×ÏÌØÎÏÅ ÉÍÑ ÄÌÑ ËÏÎÃÁ ÄÉÁÐÁÚÏÎÁ"
+
+#: locale/programs/charmap.c:609 locale/programs/locfile.c:818
+#: locale/programs/repertoire.c:314
+#, c-format
+msgid "`%1$s' definition does not end with `END %1$s'"
+msgstr "ÏÐÒÅÄÅÌÅÎÉÅ `%1$s' ÎÅ ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÁ `END %1$s'"
+
+#: locale/programs/charmap.c:642
+msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
+msgstr "ÐÏÓÌÅ ÏÐÒÅÄÅÌÅÎÉÑ CHARMAP ÍÏÇÕÔ ÓÌÅÄÏ×ÁÔØ ÔÏÌØËÏ ÏÐÒÅÄÅÌÅÎÉÑ WIDTH"
+
+#: locale/programs/charmap.c:650 locale/programs/charmap.c:713
+#, c-format
+msgid "value for %s must be an integer"
+msgstr "ÚÎÁÞÅÎÉÅ ÄÌÑ %s ÄÏÌÖÎÏ ÂÙÔØ ÃÅÌÙÍ ÞÉÓÌÏÍ"
+
+#: locale/programs/charmap.c:841
+#, c-format
+msgid "%s: error in state machine"
+msgstr "%s: ÏÛÉÂËÁ × Á×ÔÏÍÁÔÅ"
+
+#: locale/programs/charmap.c:849 locale/programs/ld-address.c:605
+#: locale/programs/ld-collate.c:2650 locale/programs/ld-collate.c:3818
+#: locale/programs/ld-ctype.c:2225 locale/programs/ld-ctype.c:2994
+#: locale/programs/ld-identification.c:469
+#: locale/programs/ld-measurement.c:255 locale/programs/ld-messages.c:349
+#: locale/programs/ld-monetary.c:958 locale/programs/ld-name.c:324
+#: locale/programs/ld-numeric.c:392 locale/programs/ld-paper.c:258
+#: locale/programs/ld-telephone.c:330 locale/programs/ld-time.c:1219
+#: locale/programs/locfile.c:825 locale/programs/repertoire.c:325
+#, c-format
+msgid "%s: premature end of file"
+msgstr "%s: ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ"
+
+#: locale/programs/charmap.c:868 locale/programs/charmap.c:879
+#, c-format
+msgid "unknown character `%s'"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË `%s'"
+
+#: locale/programs/charmap.c:887
+#, c-format
+msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
+msgstr "ÞÉÓÌÏ ÂÁÊÔ ÄÌÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÂÁÊÔ ÎÁÞÁÌÁ É ËÏÎÃÁ ÄÉÁÐÁÚÏÎÁ ÎÅ ÓÏ×ÐÁÄÁÀÔ: %d É %d"
+
+#: locale/programs/charmap.c:991 locale/programs/ld-collate.c:2930
+#: locale/programs/repertoire.c:420
+msgid "invalid names for character range"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÙÅ ÉÍÅÎÁ ÄÌÑ ÄÉÁÐÁÚÏÎÁ ÚÎÁËÏ×"
+
+#: locale/programs/charmap.c:1003 locale/programs/repertoire.c:432
+msgid "hexadecimal range format should use only capital characters"
+msgstr "× ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÏÍ ÆÏÒÍÁÔÅ ÄÉÁÐÁÚÏÎÁ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ ÚÁÇÌÁ×ÎÙÅ ÂÕË×Ù"
+
+#: locale/programs/charmap.c:1021
+#, c-format
+msgid "<%s> and <%s> are illegal names for range"
+msgstr "<%s> É <%s> -- ÎÅÄÏÐÕÓÔÉÍÙÅ ÉÍÅÎÁ ÄÌÑ ÄÉÁÐÁÚÏÎÁ"
+
+#: locale/programs/charmap.c:1027
+msgid "upper limit in range is not higher then lower limit"
+msgstr "×ÅÒÈÎÑÑ ÇÒÁÎÉÃÁ ÄÉÁÐÁÚÏÎÁ ÎÅ ÂÏÌØÛÅ ÎÉÖÎÅÊ ÇÒÁÎÉÃÙ"
+
+#: locale/programs/charmap.c:1085
+msgid "resulting bytes for range not representable."
+msgstr "ÒÅÚÕÌØÔÉÒÕÀÝÉÅ ÂÁÊÔÙ ÄÌÑ ÄÉÁÐÁÚÏÎÁ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ."
+
+#: locale/programs/ld-address.c:134 locale/programs/ld-collate.c:1534
+#: locale/programs/ld-ctype.c:421 locale/programs/ld-identification.c:134
+#: locale/programs/ld-measurement.c:95 locale/programs/ld-messages.c:98
+#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:95
+#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:92
+#: locale/programs/ld-telephone.c:95 locale/programs/ld-time.c:160
+#, c-format
+msgid "No definition for %s category found"
+msgstr "îÅ ÎÁÊÄÅÎÏ ÏÐÒÅÄÅÌÅÎÉÑ ÄÌÑ ËÁÔÅÇÏÒÉÉ %s"
+
+#: locale/programs/ld-address.c:145 locale/programs/ld-address.c:183
+#: locale/programs/ld-address.c:201 locale/programs/ld-address.c:228
+#: locale/programs/ld-address.c:290 locale/programs/ld-address.c:309
+#: locale/programs/ld-address.c:322 locale/programs/ld-identification.c:147
+#: locale/programs/ld-measurement.c:106 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:106
+#: locale/programs/ld-name.c:143 locale/programs/ld-numeric.c:113
+#: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:103
+#: locale/programs/ld-paper.c:112 locale/programs/ld-telephone.c:106
+#: locale/programs/ld-telephone.c:163 locale/programs/ld-time.c:176
+#: locale/programs/ld-time.c:197
+#, c-format
+msgid "%s: field `%s' not defined"
+msgstr "%s: ÐÏÌÅ `%s' ÎÅ ÏÐÒÅÄÅÌÅÎÏ"
+
+#: locale/programs/ld-address.c:157 locale/programs/ld-address.c:209
+#: locale/programs/ld-address.c:235 locale/programs/ld-address.c:265
+#: locale/programs/ld-name.c:118 locale/programs/ld-telephone.c:118
+#, c-format
+msgid "%s: field `%s' must not be empty"
+msgstr "%s: ÐÏÌÅ `%s' ÄÏÌÖÎÏ ÂÙÔØ ÎÅÐÕÓÔÙÍ"
+
+#: locale/programs/ld-address.c:169
+#, c-format
+msgid "%s: invalid escape `%%%c' sequence in field `%s'"
+msgstr "%s: ÎÅ×ÅÒÎÁÑ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ `%%%c' × ÐÏÌÅ `%s'"
+
+#: locale/programs/ld-address.c:220
+#, c-format
+msgid "%s: terminology language code `%s' not defined"
+msgstr ""
+
+#: locale/programs/ld-address.c:247 locale/programs/ld-address.c:276
+#, c-format
+msgid "%s: language abbreviation `%s' not defined"
+msgstr "%s: ÓÏËÒÁÝÅÎÎÏÅ ÉÍÑ ÑÚÙËÁ `%s' ÎÅ ÏÐÒÅÄÅÌÅÎÏ"
+
+#: locale/programs/ld-address.c:254 locale/programs/ld-address.c:282
+#: locale/programs/ld-address.c:316 locale/programs/ld-address.c:328
+#, c-format
+msgid "%s: `%s' value does not match `%s' value"
+msgstr "%s: ÚÎÁÞÅÎÉÅ `%s' ÎÅ ÓÏ×ÐÁÄÁÅÔ ÓÏ ÚÎÁÞÅÎÉÅÍ `%s'"
+
+#: locale/programs/ld-address.c:301
+#, c-format
+msgid "%s: numeric country code `%d' not valid"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ÞÉÓÌÏ×ÏÊ ËÏÄ ÓÔÒÁÎÙ `%d'"
+
+#: locale/programs/ld-address.c:497 locale/programs/ld-address.c:534
+#: locale/programs/ld-address.c:572 locale/programs/ld-ctype.c:2601
+#: locale/programs/ld-identification.c:365
+#: locale/programs/ld-measurement.c:222 locale/programs/ld-messages.c:302
+#: locale/programs/ld-monetary.c:700 locale/programs/ld-monetary.c:735
+#: locale/programs/ld-monetary.c:776 locale/programs/ld-name.c:281
+#: locale/programs/ld-numeric.c:264 locale/programs/ld-paper.c:225
+#: locale/programs/ld-telephone.c:289 locale/programs/ld-time.c:1108
+#: locale/programs/ld-time.c:1150
+#, c-format
+msgid "%s: field `%s' declared more than once"
+msgstr "%s: ÐÏÌÅ `%s' ÏÂßÑ×ÌÅÎÏ ÎÅÓËÏÌØËÏ ÒÁÚ"
+
+#: locale/programs/ld-address.c:501 locale/programs/ld-address.c:539
+#: locale/programs/ld-identification.c:369 locale/programs/ld-messages.c:312
+#: locale/programs/ld-monetary.c:704 locale/programs/ld-monetary.c:739
+#: locale/programs/ld-name.c:285 locale/programs/ld-numeric.c:268
+#: locale/programs/ld-telephone.c:293 locale/programs/ld-time.c:1002
+#: locale/programs/ld-time.c:1071 locale/programs/ld-time.c:1113
+#, c-format
+msgid "%s: unknown character in field `%s'"
+msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË × ÐÏÌÅ `%s'"
+
+#: locale/programs/ld-address.c:586 locale/programs/ld-collate.c:3800
+#: locale/programs/ld-ctype.c:2974 locale/programs/ld-identification.c:450
+#: locale/programs/ld-measurement.c:236 locale/programs/ld-messages.c:331
+#: locale/programs/ld-monetary.c:940 locale/programs/ld-name.c:306
+#: locale/programs/ld-numeric.c:374 locale/programs/ld-paper.c:240
+#: locale/programs/ld-telephone.c:312 locale/programs/ld-time.c:1201
+#, c-format
+msgid "%s: incomplete `END' line"
+msgstr "%s: ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÓÔÒÏËÁ `END'"
+
+#: locale/programs/ld-address.c:589 locale/programs/ld-collate.c:2653
+#: locale/programs/ld-collate.c:3802 locale/programs/ld-ctype.c:2228
+#: locale/programs/ld-ctype.c:2977 locale/programs/ld-identification.c:453
+#: locale/programs/ld-measurement.c:239 locale/programs/ld-messages.c:333
+#: locale/programs/ld-monetary.c:942 locale/programs/ld-name.c:308
+#: locale/programs/ld-numeric.c:376 locale/programs/ld-paper.c:242
+#: locale/programs/ld-telephone.c:314 locale/programs/ld-time.c:1203
+#, c-format
+msgid "%1$s: definition does not end with `END %1$s'"
+msgstr "%1$s: ÏÐÒÅÄÅÌÅÎÉÅ ÎÅ ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÁ `END %1$s'"
+
+#: locale/programs/ld-address.c:596 locale/programs/ld-collate.c:523
+#: locale/programs/ld-collate.c:575 locale/programs/ld-collate.c:871
+#: locale/programs/ld-collate.c:884 locale/programs/ld-collate.c:2640
+#: locale/programs/ld-collate.c:3809 locale/programs/ld-ctype.c:1956
+#: locale/programs/ld-ctype.c:2215 locale/programs/ld-ctype.c:2799
+#: locale/programs/ld-ctype.c:2985 locale/programs/ld-identification.c:460
+#: locale/programs/ld-measurement.c:246 locale/programs/ld-messages.c:340
+#: locale/programs/ld-monetary.c:949 locale/programs/ld-name.c:315
+#: locale/programs/ld-numeric.c:383 locale/programs/ld-paper.c:249
+#: locale/programs/ld-telephone.c:321 locale/programs/ld-time.c:1210
+#, c-format
+msgid "%s: syntax error"
+msgstr "%s: ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ"
+
+#: locale/programs/ld-collate.c:398
+#, c-format
+msgid "`%.*s' already defined in charmap"
+msgstr ""
+
+#: locale/programs/ld-collate.c:407
+#, c-format
+msgid "`%.*s' already defined in repertoire"
+msgstr "`%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎÏ × ÒÅÐÅÒÔÕÁÒÅ"
+
+#: locale/programs/ld-collate.c:414
+#, c-format
+msgid "`%.*s' already defined as collating symbol"
+msgstr "`%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎÏ ËÁË ÓÉÍ×ÏÌ ÓÏÒÔÉÒÏ×ËÉ"
+
+#: locale/programs/ld-collate.c:421
+#, c-format
+msgid "`%.*s' already defined as collating element"
+msgstr "`%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎÏ ËÁË ÜÌÅÍÅÎÔ ÓÏÒÔÉÒÏ×ËÉ"
+
+#: locale/programs/ld-collate.c:452 locale/programs/ld-collate.c:478
+#, c-format
+msgid "%s: `forward' and `backward' are mutually excluding each other"
+msgstr "%s: `forward' É `backward' ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔÓÑ"
+
+#: locale/programs/ld-collate.c:462 locale/programs/ld-collate.c:488
+#: locale/programs/ld-collate.c:504
+#, c-format
+msgid "%s: `%s' mentioned more than once in definition of weight %d"
+msgstr "%s: `%s' ×ÓÔÒÅÞÁÅÔÓÑ ÂÏÌÅÅ ÏÄÎÏÇÏ ÒÁÚÁ × ÏÐÒÅÄÅÌÅÎÉÉ ×ÅÓÁ %d"
+
+#: locale/programs/ld-collate.c:560
+#, c-format
+msgid "%s: too many rules; first entry only had %d"
+msgstr "%s: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÐÒÁ×ÉÌ; × ÐÅÒ×ÏÍ ×ÈÏÖÄÅÎÉÉ ÂÙÌÏ ÔÏÌØËÏ %d"
+
+#: locale/programs/ld-collate.c:596
+#, c-format
+msgid "%s: not enough sorting rules"
+msgstr "%s: ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÒÁ×ÉÌ ÓÏÒÔÉÒÏ×ËÉ"
+
+#: locale/programs/ld-collate.c:761
+#, c-format
+msgid "%s: empty weight string not allowed"
+msgstr "%s: ÐÕÓÔÁÑ ÓÔÒÏËÁ ×ÅÓÁ ÎÅÄÏÐÕÓÔÉÍÁ"
+
+#: locale/programs/ld-collate.c:856
+#, c-format
+msgid "%s: weights must use the same ellipsis symbol as the name"
+msgstr "%s: ×ÅÓÁ ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÁËÏÊ ÖÅ ÓÉÍ×ÏÌ ÜÌÌÉÐÓÉÓÁ, ËÁË ÉÍÑ"
+
+#: locale/programs/ld-collate.c:912
+#, c-format
+msgid "%s: too many values"
+msgstr "%s: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÎÁÞÅÎÉÊ"
+
+#: locale/programs/ld-collate.c:1031 locale/programs/ld-collate.c:1206
+#, c-format
+msgid "order for `%.*s' already defined at %s:%Zu"
+msgstr "ÐÏÒÑÄÏË ÄÌÑ `%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎ × %s:%Zu"
+
+#: locale/programs/ld-collate.c:1081
+#, c-format
+msgid "%s: the start and the end symbol of a range must stand for characters"
+msgstr "%s: ÎÁÞÁÌØÎÙÊ É ËÏÎÅÞÎÙÊ ÓÉÍ×ÏÌÙ ÄÉÁÐÁÚÏÎÁ ÄÏÌÖÎÙ ÏÂÏÚÎÁÞÁÔØ ÚÎÁËÉ"
+
+#: locale/programs/ld-collate.c:1108
+#, c-format
+msgid "%s: byte sequences of first and last character must have the same length"
+msgstr "%s: ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÂÁÊÔ ÄÌÑ ÐÅÒ×ÏÇÏ É ÐÏÓÌÅÄÎÅÇÏ ÚÎÁËÁ ÄÏÌÖÎÙ ÂÙÔØ ÏÄÉÎÁËÏ×ÏÊ ÄÌÉÎÙ"
+
+#: locale/programs/ld-collate.c:1150
+#, c-format
+msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
+msgstr "%s: ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÂÁÊÔ ÄÌÑ ÐÅÒ×ÏÇÏ ÚÎÁËÁ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÎÅ ÍÅÎØÛÅ ÞÅÍ ÄÌÑ ÐÏÓÌÅÄÎÅÇÏ"
+
+#: locale/programs/ld-collate.c:1275
+#, c-format
+msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
+msgstr "%s: ÜÌÌÉÐÓÉÓ ÓÉÍ×ÏÌØÎÏÇÏ ÄÉÁÐÁÚÏÎÁ ÎÅ ÍÏÖÅÔ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÓÌÅÄÏ×ÁÔØ ÐÏÓÌÅ `order_start'"
+
+#: locale/programs/ld-collate.c:1279
+#, c-format
+msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
+msgstr "%s: ÐÏÓÌÅ ÜÌÌÉÐÓÉÓÁ ÓÉÍ×ÏÌØÎÏÇÏ ÄÉÁÐÁÚÏÎÁ ÎÅ ÍÏÖÅÔ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÓÌÅÄÏ×ÁÔØ `order_end'"
+
+#: locale/programs/ld-collate.c:1299 locale/programs/ld-ctype.c:1476
+#, c-format
+msgid "`%s' and `%.*s' are no valid names for symbolic range"
+msgstr "`%s' É `%.*s' ÎÅ Ñ×ÌÑÀÔÓÑ ×ÅÒÎÙÍÉ ÉÍÅÎÁÍÉ ÓÉÍ×ÏÌØÎÏÇÏ ÄÉÁÐÏÚÏÎÁ"
+
+#: locale/programs/ld-collate.c:1348 locale/programs/ld-collate.c:3737
+#, c-format
+msgid "%s: order for `%.*s' already defined at %s:%Zu"
+msgstr "%s: ÐÏÒÑÄÏË ÄÌÑ `%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎ × %s:%Zu"
+
+#: locale/programs/ld-collate.c:1357
+#, c-format
+msgid "%s: `%s' must be a character"
+msgstr "%s: `%s' ÄÏÌÖÎÏ ÂÙÔØ ÚÎÁËÏÍ"
+
+#: locale/programs/ld-collate.c:1550
+#, c-format
+msgid "%s: `position' must be used for a specific level in all sections or none"
+msgstr "%s: `position' ÄÏÌÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÄÌÑ ÏÄÎÏÇÏ ËÏÎËÒÅÔÎÏÇÏ ÕÒÏ×ÎÑ ÌÉÂÏ ×Ï ×ÓÅÈ ÓÅËÃÉÑÈ, ÌÉÂÏ ÎÉ × ÏÄÎÏÊ"
+
+#: locale/programs/ld-collate.c:1575
+#, c-format
+msgid "symbol `%s' not defined"
+msgstr "ÓÉÍ×ÏÌ `%s' ÎÅ ÏÐÒÅÄÅÌÅÎ"
+
+#: locale/programs/ld-collate.c:1651 locale/programs/ld-collate.c:1757
+#, c-format
+msgid "symbol `%s' has the same encoding as"
+msgstr "ÓÉÍ×ÏÌ `%s' ÉÍÅÅÔ ÔÁËÕÀ ÖÅ ËÏÄÉÒÏ×ËÕ ËÁË"
+
+#: locale/programs/ld-collate.c:1655 locale/programs/ld-collate.c:1761
+#, c-format
+msgid "symbol `%s'"
+msgstr "ÓÉÍ×ÏÌ `%s'"
+
+#: locale/programs/ld-collate.c:1803
+msgid "no definition of `UNDEFINED'"
+msgstr "ÎÅÔ ÏÐÒÅÄÅÌÅÎÉÑ ÄÌÑ `UNDEFINED'"
+
+#: locale/programs/ld-collate.c:1832
+msgid "too many errors; giving up"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÏÛÉÂÏË; ËÏÎÅÃ"
+
+#: locale/programs/ld-collate.c:2735
+#, c-format
+msgid "%s: duplicate definition of `%s'"
+msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%s'"
+
+#: locale/programs/ld-collate.c:2771
+#, c-format
+msgid "%s: duplicate declaration of section `%s'"
+msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÂßÑ×ÌÅÎÉÅ ÓÅËÃÉÉ `%s'"
+
+#: locale/programs/ld-collate.c:2910
+#, c-format
+msgid "%s: unknown character in collating symbol name"
+msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË × ÉÍÅÎÉ ÓÉÍ×ÏÌÁ ÓÏÒÔÉÒÏ×ËÉ"
+
+#: locale/programs/ld-collate.c:3042
+#, c-format
+msgid "%s: unknown character in equivalent definition name"
+msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË × ÉÍÅÎÉ ÏÐÒÅÄÅÌÅÎÉÑ ÜË×É×ÁÌÅÎÔÎÏÓÔÉ"
+
+#: locale/programs/ld-collate.c:3055
+#, c-format
+msgid "%s: unknown character in equivalent definition value"
+msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË × ÚÎÁÞÅÎÉÉ ÏÐÒÅÄÅÌÅÎÁÑ ÜË×É×ÁÌÅÎÔÎÏÓÔÉ"
+
+#: locale/programs/ld-collate.c:3065
+#, c-format
+msgid "%s: unknown symbol `%s' in equivalent definition"
+msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ `%s' × ÏÐÒÅÄÅÌÅÎÉÉ ÜË×É×ÁÌÅÎÔÎÏÓÔÉ"
+
+#: locale/programs/ld-collate.c:3074
+msgid "error while adding equivalent collating symbol"
+msgstr "ÏÛÉÂËÁ ÐÒÉ ÄÏÂÁ×ÌÅÎÉÉ ÜË×É×ÁÌÅÎÔÎÏÇÏ ÓÉÍ×ÏÌÁ ÓÏÒÔÉÒÏ×ËÉ"
+
+#: locale/programs/ld-collate.c:3104
+#, c-format
+msgid "duplicate definition of script `%s'"
+msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÓÔÅÍÙ ÐÉÓØÍÁ `%s'"
+
+#: locale/programs/ld-collate.c:3152
+#, c-format
+msgid "%s: unknown section name `%s'"
+msgstr "%s: ÎÅÉÚ×ÅÓÔÎÏÅ ÉÍÑ ÓÅËÃÉÉ `%s'"
+
+#: locale/programs/ld-collate.c:3180
+#, c-format
+msgid "%s: multiple order definitions for section `%s'"
+msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÐÏÒÑÄËÁ ÄÌÑ ÓÅËÃÉÉ `%s'"
+
+#: locale/programs/ld-collate.c:3205
+#, c-format
+msgid "%s: invalid number of sorting rules"
+msgstr "%s: ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÒÁ×ÉÌ ÓÏÒÔÉÒÏ×ËÉ"
+
+#: locale/programs/ld-collate.c:3232
+#, c-format
+msgid "%s: multiple order definitions for unnamed section"
+msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÐÏÒÑÄËÁ ÄÌÑ ÂÅÚÙÍÑÎÎÏÊ ÓÅËÃÉÉ"
+
+#: locale/programs/ld-collate.c:3286 locale/programs/ld-collate.c:3414
+#: locale/programs/ld-collate.c:3778
+#, c-format
+msgid "%s: missing `order_end' keyword"
+msgstr "%s: ÐÒÏÐÕÝÅÎÏ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï `order_end'"
+
+#: locale/programs/ld-collate.c:3347
+#, c-format
+msgid "%s: order for collating symbol %.*s not yet defined"
+msgstr "%s: ÐÏÒÑÄÏË ÄÌÑ ÓÉÍ×ÏÌÁ ÓÏÒÔÉÒÏ×ËÉ %.*s ÅÝÅ ÎÅ ÏÐÒÅÄÅÌÅÎ"
+
+#: locale/programs/ld-collate.c:3365
+#, c-format
+msgid "%s: order for collating element %.*s not yet defined"
+msgstr "%s: ÐÏÒÑÄÏË ÄÌÑ ÜÌÅÍÅÎÔÁ ÓÏÒÔÉÒÏ×ËÉ %.*s ÅÝÅ ÎÅ ÏÐÒÅÄÅÌÅÎ"
+
+#: locale/programs/ld-collate.c:3376
+#, c-format
+msgid "%s: cannot reorder after %.*s: symbol not known"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÍÅÎÑÔØ ÐÏÒÑÄÏË ÐÏÓÌÅ %.*s: ÓÉÍ×ÏÌ ÎÅÉÚ×ÅÓÔÅÎ"
+
+#: locale/programs/ld-collate.c:3428 locale/programs/ld-collate.c:3790
+#, c-format
+msgid "%s: missing `reorder-end' keyword"
+msgstr "%s: ÐÒÏÐÕÝÅÎÏ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï `reorder-end'"
+
+#: locale/programs/ld-collate.c:3462 locale/programs/ld-collate.c:3662
+#, c-format
+msgid "%s: section `%.*s' not known"
+msgstr "%s: ÓÅËÃÉÑ `%.*s' ÎÅÉÚ×ÅÓÔÎÁ"
+
+#: locale/programs/ld-collate.c:3527
+#, c-format
+msgid "%s: bad symbol <%.*s>"
+msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÙÊ ÓÉÍ×ÏÌ <%.*s>"
+
+#: locale/programs/ld-collate.c:3725
+#, c-format
+msgid "%s: cannot have `%s' as end of ellipsis range"
+msgstr "%s: `%s' ÎÅ ÍÏÖÅÔ ÂÙÔØ ËÏÎÃÏÍ ÄÉÁÐÁÚÏÎÁ Ó ÜÌÌÉÐÓÉÓÏÍ"
+
+#: locale/programs/ld-collate.c:3774
+#, c-format
+msgid "%s: empty category description not allowed"
+msgstr "%s: ÐÕÓÔÙÅ ÏÐÉÓÁÎÉÑ ËÁÔÅÇÏÒÉÊ ÎÅÄÏÐÕÓÔÉÍÙ"
+
+#: locale/programs/ld-collate.c:3793
+#, c-format
+msgid "%s: missing `reorder-sections-end' keyword"
+msgstr "%s: ÐÒÏÐÕÝÅÎÏ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï `reorder-sections-end'"
+
+#: locale/programs/ld-ctype.c:440
+msgid "No character set name specified in charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:469
+#, c-format
+msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
+msgstr "ÚÎÁË L'\\u%0*x' × ËÌÁÓÓÅ `%s' ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+
+#: locale/programs/ld-ctype.c:484
+#, c-format
+msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
+msgstr "ÚÎÁË L'\\u%0*x' × ËÌÁÓÓÅ `%s' ÎÅ ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+
+#: locale/programs/ld-ctype.c:498 locale/programs/ld-ctype.c:556
+#, c-format
+msgid "internal error in %s, line %u"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ × %s, ÓÔÒÏËÁ %u"
+
+#: locale/programs/ld-ctype.c:527
+#, c-format
+msgid "character '%s' in class `%s' must be in class `%s'"
+msgstr "ÚÎÁË '%s' × ËÌÁÓÓÅ `%s' ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+
+#: locale/programs/ld-ctype.c:543
+#, c-format
+msgid "character '%s' in class `%s' must not be in class `%s'"
+msgstr "ÚÎÁË '%s' × ËÌÁÓÓÅ `%s' ÎÅ ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+
+#: locale/programs/ld-ctype.c:573 locale/programs/ld-ctype.c:611
+#, c-format
+msgid "<SP> character not in class `%s'"
+msgstr "ÚÎÁË <SP> ÎÅ × ËÌÁÓÓÅ `%s'"
+
+#: locale/programs/ld-ctype.c:585 locale/programs/ld-ctype.c:622
+#, c-format
+msgid "<SP> character must not be in class `%s'"
+msgstr "ÚÎÁË <SP> ÎÅ ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+
+#: locale/programs/ld-ctype.c:600
+msgid "character <SP> not defined in character map"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:714
+msgid "`digit' category has not entries in groups of ten"
+msgstr "×ÈÏÖÄÅÎÉÑ ËÁÔÅÇÏÒÉÉ `digit' ÎÅ ÇÒÕÐÐÉÒÕÀÔÓÑ ÐÏ ÄÅÓÑÔØ"
+
+#: locale/programs/ld-ctype.c:763
+msgid "no input digits defined and none of the standard names in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:828
+msgid "not all characters used in `outdigit' are available in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:845
+msgid "not all characters used in `outdigit' are available in the repertoire"
+msgstr "ÎÅ ×ÓÅ ÚÎÁËÉ, ÉÓÐÏÌØÚÏ×ÁÎÎÙÅ × `outdigit', ÄÏÓÔÕÐÎÙ × ÄÁÎÎÏÍ ÒÅÐÅÒÔÕÁÒÅ"
+
+#: locale/programs/ld-ctype.c:1244
+#, c-format
+msgid "character class `%s' already defined"
+msgstr "ËÌÁÓÓ ÚÎÁËÏ× `%s' ÕÖÅ ÏÐÒÅÄÅÌÅÎ"
+
+#: locale/programs/ld-ctype.c:1250
+#, c-format
+msgid "implementation limit: no more than %Zd character classes allowed"
+msgstr "ÏÇÒÁÎÉÞÅÎÉÅ ÒÅÁÌÉÚÁÃÉÉ: ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÎÅ ÂÏÌÅÅ %Zd ËÌÁÓÓÏ× ÚÎÁËÏ×"
+
+#: locale/programs/ld-ctype.c:1276
+#, c-format
+msgid "character map `%s' already defined"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1282
+#, c-format
+msgid "implementation limit: no more than %d character maps allowed"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1547 locale/programs/ld-ctype.c:1672
+#: locale/programs/ld-ctype.c:1778 locale/programs/ld-ctype.c:2464
+#: locale/programs/ld-ctype.c:3460
+#, c-format
+msgid "%s: field `%s' does not contain exactly ten entries"
+msgstr "%s: ÐÏÌÅ `%s' ÎÅ ÓÏÄÅÒÖÉÔ ÒÏ×ÎÏ ÄÅÓÑÔØ ×ÈÏÖÄÅÎÉÊ"
+
+#: locale/programs/ld-ctype.c:1575 locale/programs/ld-ctype.c:2146
+#, c-format
+msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
+msgstr "×ÅÒÈÎÅÅ ÚÎÁÞÅÎÉÅ ÄÉÁÐÁÚÏÎÁ <U%0*X> ÍÅÎØÛÅ ÞÅÍ ÎÉÖÎÅÅ ÚÎÁÞÅÎÉÅ <U%0*X>"
+
+#: locale/programs/ld-ctype.c:1702
+msgid "start and end character sequence of range must have the same length"
+msgstr "ÎÁÞÁÌØÎÁÑ É ËÏÎÅÞÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÚÎÁËÏ× ÄÉÁÐÁÚÏÎÁ ÄÏÌÖÎÙ ÂÙÔØ ÏÄÉÎÁËÏ×ÏÊ ÄÌÉÎÙ"
+
+#: locale/programs/ld-ctype.c:1709
+msgid "to-value character sequence is smaller than from-value sequence"
+msgstr "ËÏÎÅÞÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÚÎÁËÏ× ÄÉÁÐÁÚÏÎÁ ÍÅÎØÛÅ ÞÅÍ ÎÁÞÁÌØÎÁÑ"
+
+#: locale/programs/ld-ctype.c:2066 locale/programs/ld-ctype.c:2117
+msgid "premature end of `translit_ignore' definition"
+msgstr "ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÏÐÒÅÄÅÌÅÎÉÑ `translit_ignore'"
+
+#: locale/programs/ld-ctype.c:2072 locale/programs/ld-ctype.c:2123
+#: locale/programs/ld-ctype.c:2165
+msgid "syntax error"
+msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ"
+
+#: locale/programs/ld-ctype.c:2296
+#, c-format
+msgid "%s: syntax error in definition of new character class"
+msgstr "%s: ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÏÐÒÅÄÅÌÅÎÉÉ ÎÏ×ÏÇÏ ËÌÁÓÓÁ ÚÎÁËÏ×"
+
+#: locale/programs/ld-ctype.c:2311
+#, c-format
+msgid "%s: syntax error in definition of new character map"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2486
+msgid "ellipsis range must be marked by two operands of same type"
+msgstr "ÄÉÁÐÁÚÏÎ Ó ÜÌÌÉÐÓÉÓÏÍ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÍÅÞÅÎ Ä×ÕÍÑ ÏÐÅÒÁÎÄÁÍÉ ÏÄÎÏÇÏ ÔÉÐÁ"
+
+#: locale/programs/ld-ctype.c:2495
+msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
+msgstr "Ó ÓÉÍ×ÏÌØÎÙÍÉ ÉÍÅÎÁÍÉ ÚÎÁÞÅÎÉÊ ÄÉÁÐÁÚÏÎÁ ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÁÂÓÏÌÀÔÎÙÊ ÜÌÌÉÐÓÉÓ `...'"
+
+#: locale/programs/ld-ctype.c:2510
+msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
+msgstr "Ó UCS-ÚÎÁÞÅÎÉÑÍÉ ÄÉÁÐÁÚÏÎÁ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÙÊ ÓÉÍ×ÏÌØÎÙÊ ÜÌÌÉÐÓÉÓ `..'"
+
+#: locale/programs/ld-ctype.c:2524
+msgid "with character code range values one must use the absolute ellipsis `...'"
+msgstr "ÓÏ ÚÎÁËÏ×ÙÍÉ ËÏÄÁÍÉ ÚÎÁÞÅÎÉÊ ÄÉÁÐÁÚÏÎÁ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÁÂÓÏÌÀÔÎÙÊ ÜÌÌÉÐÓÉÓ `...'"
+
+#: locale/programs/ld-ctype.c:2675
+#, c-format
+msgid "duplicated definition for mapping `%s'"
+msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÏÔÏÂÒÁÖÅÎÉÑ `%s'"
+
+#: locale/programs/ld-ctype.c:2761 locale/programs/ld-ctype.c:2905
+#, c-format
+msgid "%s: `translit_start' section does not end with `translit_end'"
+msgstr "%s: ÓÅËÃÉÑ `translit_start' ÎÅ ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÁ `translit_end'"
+
+#: locale/programs/ld-ctype.c:2856
+#, c-format
+msgid "%s: duplicate `default_missing' definition"
+msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `default_missing'"
+
+#: locale/programs/ld-ctype.c:2861
+msgid "previous definition was here"
+msgstr "ÐÒÅÄÙÄÕÝÅÅ ÏÐÒÅÄÅÌÅÎÉÅ ÂÙÌÏ ÚÄÅÓØ"
+
+#: locale/programs/ld-ctype.c:2883
+#, c-format
+msgid "%s: no representable `default_missing' definition found"
+msgstr "%s: ÎÅ ÎÁÊÄÅÎÏ ÐÒÅÄÓÔÁ×ÉÍÏÇÏ ÏÐÒÅÄÅÌÅÎÉÑ `default_missing'"
+
+#: locale/programs/ld-ctype.c:3036
+#, c-format
+msgid "%s: character `%s' not defined in charmap while needed as default value"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3041 locale/programs/ld-ctype.c:3125
+#: locale/programs/ld-ctype.c:3145 locale/programs/ld-ctype.c:3166
+#: locale/programs/ld-ctype.c:3187 locale/programs/ld-ctype.c:3208
+#: locale/programs/ld-ctype.c:3229 locale/programs/ld-ctype.c:3269
+#: locale/programs/ld-ctype.c:3290 locale/programs/ld-ctype.c:3357
+#, c-format
+msgid "%s: character `%s' in charmap not representable with one byte"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3120 locale/programs/ld-ctype.c:3140
+#: locale/programs/ld-ctype.c:3182 locale/programs/ld-ctype.c:3203
+#: locale/programs/ld-ctype.c:3224 locale/programs/ld-ctype.c:3264
+#: locale/programs/ld-ctype.c:3285 locale/programs/ld-ctype.c:3352
+#: locale/programs/ld-ctype.c:3394 locale/programs/ld-ctype.c:3419
+#, c-format
+msgid "%s: character `%s' not defined while needed as default value"
+msgstr "%s: ÚÎÁË `%s' ÎÅ ÏÐÒÅÄÅÌÅÎ, ÈÏÔÑ ÏÎ ÎÕÖÅÎ ËÁË ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+
+#: locale/programs/ld-ctype.c:3161
+#, c-format
+msgid "character `%s' not defined while needed as default value"
+msgstr "ÚÎÁË `%s' ÎÅ ÏÐÒÅÄÅÌÅÎ, ÈÏÔÑ ÏÎ ÎÕÖÅÎ ËÁË ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+
+#: locale/programs/ld-ctype.c:3401 locale/programs/ld-ctype.c:3426
+#, c-format
+msgid "%s: character `%s' needed as default value not representable with one byte"
+msgstr "%s: ÚÎÁË `%s' ÎÕÖÅÎ ËÁË ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÎÏ ÅÇÏ ÎÅÌØÚÑ ÐÒÅÄÓÔÁ×ÉÔØ ÏÄÎÉÍ ÂÁÊÔÏÍ"
+
+#: locale/programs/ld-ctype.c:3481
+msgid "no output digits defined and none of the standard names in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3772
+#, c-format
+msgid "%s: transliteration data from locale `%s' not available"
+msgstr "%s: ÎÅÔ ÄÁÎÎÙÈ ÄÌÑ ÔÒÁÎÓÌÉÔÅÒÁÃÉÉ ÉÚ ÌÏËÁÌÉ `%s'"
+
+#: locale/programs/ld-ctype.c:3868
+#, c-format
+msgid "%s: table for class \"%s\": %lu bytes\n"
+msgstr "%s: ÔÁÂÌÉÃÁ ÄÌÑ ËÌÁÓÓÁ \"%s\": %lu ÂÁÊÔ\n"
+
+#: locale/programs/ld-ctype.c:3937
+#, c-format
+msgid "%s: table for map \"%s\": %lu bytes\n"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:4070
+#, c-format
+msgid "%s: table for width: %lu bytes\n"
+msgstr "%s: ÔÁÂÌÉÃÁ ÄÌÑ ÛÉÒÉÎÙ: %lu ÂÁÊÔ\n"
+
+#: locale/programs/ld-identification.c:171
+#, c-format
+msgid "%s: no identification for category `%s'"
+msgstr "%s: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÃÉÉ ÄÌÑ ËÁÔÅÇÏÒÉÉ `%s'"
+
+#: locale/programs/ld-identification.c:436
+#, c-format
+msgid "%s: duplicate category version definition"
+msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ×ÅÒÓÉÉ ËÁÔÅÇÏÒÉÉ"
+
+#: locale/programs/ld-measurement.c:114
+#, c-format
+msgid "%s: invalid value for field `%s'"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s'"
+
+#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:149
+#, c-format
+msgid "%s: field `%s' undefined"
+msgstr "%s: ÐÏÌÅ `%s' ÎÅ ÏÐÒÅÄÅÌÅÎÏ"
+
+#: locale/programs/ld-messages.c:122 locale/programs/ld-messages.c:156
+#, c-format
+msgid "%s: value for field `%s' must not be an empty string"
+msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÕÓÔÏÊ ÓÔÒÏËÏÊ"
+
+#: locale/programs/ld-messages.c:138 locale/programs/ld-messages.c:172
+#, c-format
+msgid "%s: no correct regular expression for field `%s': %s"
+msgstr "%s: ÎÅÔ ÐÒÁ×ÉÌØÎÏÇÏ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ ÄÌÑ ÐÏÌÑ `%s': %s"
+
+#: locale/programs/ld-monetary.c:224
+#, c-format
+msgid "%s: value of field `int_curr_symbol' has wrong length"
+msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `int_curr_symbol' ÉÍÅÅÔ ÎÅÐÒÁ×ÉÌØÎÕÀ ÄÌÉÎÕ"
+
+#: 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 "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `int_curr_symbol' ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÎÉ ÏÄÎÏÍÕ ×ÅÒÎÏÍÕ ÉÍÅÎÉ ÉÚ ISO 4217"
+
+#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:119
+#, c-format
+msgid "%s: value for field `%s' must not be the empty string"
+msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÕÓÔÏÊ ÓÔÒÏËÏÊ"
+
+#: locale/programs/ld-monetary.c:284 locale/programs/ld-monetary.c:314
+#, c-format
+msgid "%s: value for field `%s' must be in range %d...%d"
+msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s' ÄÏÌÖÎÏ ÂÙÔØ × ÄÉÁÐÁÚÏÎÅ %d...%d"
+
+#: locale/programs/ld-monetary.c:746 locale/programs/ld-numeric.c:275
+#, c-format
+msgid "%s: value for field `%s' must be a single character"
+msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s' ÄÏÌÖÎÏ ÂÙÔØ ÏÄÎÉÍ ÚÎÁËÏÍ"
+
+#: locale/programs/ld-monetary.c:843 locale/programs/ld-numeric.c:319
+#, c-format
+msgid "%s: `-1' must be last entry in `%s' field"
+msgstr "%s: `-1' ÄÏÌÖÎÏ ÂÙÔØ ÐÏÓÌÅÄÎÉÍ ×ÈÏÖÄÅÎÉÅ × ÐÏÌÅ `%s'"
+
+#: locale/programs/ld-monetary.c:865 locale/programs/ld-numeric.c:340
+#, c-format
+msgid "%s: values for field `%s' must be smaller than 127"
+msgstr "%s: ÚÎÁÞÅÎÉÑ ÐÏÌÑ `%s' ÄÏÌÖÎÙ ÂÙÔØ ÍÅÎØÛÅ 127"
+
+#: locale/programs/ld-monetary.c:908
+msgid "conversion rate value cannot be zero"
+msgstr ""
+
+#: locale/programs/ld-name.c:130 locale/programs/ld-telephone.c:127
+#: locale/programs/ld-telephone.c:150
+#, c-format
+msgid "%s: invalid escape sequence in field `%s'"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ × ÐÏÌÅ `%s'"
+
+#: locale/programs/ld-time.c:248
+#, c-format
+msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
+msgstr "%s: ÆÌÁÇ ÎÁÐÒÁ×ÌÅÎÉÑ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era' ÎÅ '+' É ÎÅ '-'"
+
+#: locale/programs/ld-time.c:259
+#, c-format
+msgid "%s: direction flag in string %Zd in `era' field is not a single character"
+msgstr "%s:  ÆÌÁÇ ÎÁÐÒÁ×ÌÅÎÉÑ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era' ÎÅ Ñ×ÌÑÅÔÓÑ ÏÄÎÉÍ ÚÎÁËÏÍ"
+
+#: locale/programs/ld-time.c:272
+#, c-format
+msgid "%s: invalid number for offset in string %Zd in `era' field"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ ÄÌÑ ÓÍÅÝÅÎÉÑ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:280
+#, c-format
+msgid "%s: garbage at end of offset value in string %Zd in `era' field"
+msgstr "%s: ÍÕÓÏÒ × ËÏÎÃÅ ÚÎÁÞÅÎÉÑ ÓÍÅÝÅÎÉÑ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:331
+#, c-format
+msgid "%s: invalid starting date in string %Zd in `era' field"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÎÁÞÁÌØÎÁÑ ÄÁÔÁ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:340
+#, c-format
+msgid "%s: garbage at end of starting date in string %Zd in `era' field "
+msgstr "%s: ÍÕÓÏÒ × ËÏÎÃÅ ÎÁÞÁÌØÎÏÊ ÄÁÔÙ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:359
+#, c-format
+msgid "%s: starting date is invalid in string %Zd in `era' field"
+msgstr "%s: ÎÅ×ÅÒÎÁÑ ÎÁÞÁÌØÎÁÑ ÄÁÔÁ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:408
+#, c-format
+msgid "%s: invalid stopping date in string %Zd in `era' field"
+msgstr "%s: ÎÅ×ÅÒÎÁÑ ËÏÎÅÞÎÁÑ ÄÁÔÁ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:417
+#, c-format
+msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
+msgstr "%s: ÍÕÓÏÒ × ËÏÎÃÅ ËÏÎÅÞÎÏÊ ÄÁÔÙ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:436
+#, c-format
+msgid "%s: stopping date is invalid in string %Zd in `era' field"
+msgstr "%s: ÎÅ×ÅÒÎÁÑ ËÏÎÅÞÎÁÑ ÄÁÔÁ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:445
+#, c-format
+msgid "%s: missing era name in string %Zd in `era' field"
+msgstr "%s: ÐÒÏÐÕÝÅÎÏ ÉÍÑ ÜÒÙ × ÓÔÒÏËÅ %Zd  × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:457
+#, c-format
+msgid "%s: missing era format in string %Zd in `era' field"
+msgstr "%s: ÐÒÏÐÕÝÅÎ ÆÏÒÍÁÔ ÜÒÙ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+
+#: locale/programs/ld-time.c:486
+#, c-format
+msgid "%s: third operand for value of field `%s' must not be larger than %d"
+msgstr "%s: ÔÒÅÔÉÊ ÏÐÅÒÁÎÄ ÄÌÑ ÚÎÁÞÅÎÉÑ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÅÎ ÂÙÔØ ÂÏÌØÛÅ %d"
+
+#: locale/programs/ld-time.c:494 locale/programs/ld-time.c:502
+#, c-format
+msgid "%s: values of field `%s' must not be larger than %d"
+msgstr "%s: ÚÎÁÞÅÎÉÑ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÎÙ ÂÙÔØ ÂÏÌØÛÅ %d"
+
+#: locale/programs/ld-time.c:510
+#, c-format
+msgid "%s: values for field `%s' must not be larger than %d"
+msgstr "%s: ÚÎÁÞÅÎÉÑ ÄÌÑ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÎÙ ÂÙÔØ ÂÏÌØÛÅ %d"
+
+#: locale/programs/ld-time.c:986
+#, c-format
+msgid "%s: too few values for field `%s'"
+msgstr "%s: ÓÌÉÛËÏÍ ÍÁÌÏ ÚÎÁÞÅÎÉÊ ÄÌÑ ÐÏÌÑ `%s'"
+
+#: locale/programs/ld-time.c:1031
+msgid "extra trailing semicolon"
+msgstr "ÌÉÛÎÅÅ Ä×ÏÅÔÏÞÉÅ × ËÏÎÃÅ"
+
+#: locale/programs/ld-time.c:1034
+#, c-format
+msgid "%s: too many values for field `%s'"
+msgstr "%s: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÎÁÞÅÎÉÊ ÄÌÑ ÐÏÌÑ `%s'"
+
+#: locale/programs/linereader.c:130
+msgid "trailing garbage at end of line"
+msgstr "ÍÕÓÏÒ × ËÏÎÃÅ ÓÔÒÏËÉ"
+
+#: locale/programs/linereader.c:304
+msgid "garbage at end of number"
+msgstr "ÍÕÓÏÒ × ËÏÎÃÅ ÞÉÓÌÁ"
+
+#: locale/programs/linereader.c:416
+msgid "garbage at end of character code specification"
+msgstr "ÍÕÓÏÒ × ËÏÎÃÅ ÓÐÅÃÉÆÉËÁÃÉÉ ËÏÄÁ ÚÎÁËÁ"
+
+#: locale/programs/linereader.c:502
+msgid "unterminated symbolic name"
+msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÏÅ ÓÉÍ×ÏÌØÎÏÅ ÉÍÑ"
+
+#: locale/programs/linereader.c:566 catgets/gencat.c:1195
+msgid "invalid escape sequence"
+msgstr "ÎÅ×ÅÒÎÁÑ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ"
+
+#: locale/programs/linereader.c:629
+msgid "illegal escape sequence at end of string"
+msgstr "ÎÅ×ÅÒÎÁÑ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ × ËÏÎÃÅ ÓÔÒÏËÉ"
+
+#: locale/programs/linereader.c:633 locale/programs/linereader.c:861
+msgid "unterminated string"
+msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÓÔÒÏËÁ"
+
+#: locale/programs/linereader.c:675
+msgid "non-symbolic character value should not be used"
+msgstr "ÎÅ ÓÔÏÉÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÎÅÓÉÍ×ÏÌØÎÏÅ ÚÎÁËÏ×ÏÅ ÚÎÁÞÅÎÉÅ"
+
+#: locale/programs/linereader.c:822
+#, c-format
+msgid "symbol `%.*s' not in charmap"
+msgstr ""
+
+#: locale/programs/linereader.c:843
+#, c-format
+msgid "symbol `%.*s' not in repertoire map"
+msgstr ""
+
+#: locale/programs/locale.c:75
+msgid "System information:"
+msgstr "éÎÆÏÒÍÁÃÉÑ Ï ÓÉÓÔÅÍÅ:"
+
+#: locale/programs/locale.c:77
+msgid "Write names of available locales"
+msgstr "îÁÐÉÓÁÔØ ÉÍÅÎÁ ÄÏÓÔÕÐÎÙÈ ÌÏËÁÌÅÊ"
+
+#: locale/programs/locale.c:79
+msgid "Write names of available charmaps"
+msgstr ""
+
+#: locale/programs/locale.c:80
+msgid "Modify output format:"
+msgstr "éÚÍÅÎÅÎÉÅ ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ:"
+
+#: locale/programs/locale.c:81
+msgid "Write names of selected categories"
+msgstr "îÁÐÉÓÁÔØ ÉÍÅÎÁ ×ÙÂÒÁÎÎÙÈ ËÁÔÅÇÏÒÉÊ"
+
+#: locale/programs/locale.c:82
+msgid "Write names of selected keywords"
+msgstr "îÁÐÉÓÁÔØ ÉÍÅÎÁ ×ÙÂÒÁÎÎÙÈ ËÌÀÞÅ×ÙÈ ÓÌÏ×"
+
+#: locale/programs/locale.c:83
+msgid "Print more information"
+msgstr "îÁÐÅÞÁÔÁÔØ ÂÏÌØÛÅ ÉÎÆÏÒÍÁÃÉÉ"
+
+#: locale/programs/locale.c:88
+msgid "Get locale-specific information."
+msgstr "ðÏÌÕÞÁÅÔ ÓÐÅÃÉÆÉÞÎÕÀ ÄÌÑ ÌÏËÁÌÉ ÉÎÆÏÒÍÁÃÉÀ."
+
+#: locale/programs/locale.c:91
+msgid ""
+"NAME\n"
+"[-a|-m]"
+msgstr ""
+"éíñ\n"
+"[-a|-m]"
+
+#: locale/programs/locale.c:195
+msgid "Cannot set LC_CTYPE to default locale"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ LC_CTYPE × ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ."
+
+#: locale/programs/locale.c:197
+msgid "Cannot set LC_MESSAGES to default locale"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ LC_MESSAGES × ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ."
+
+#: locale/programs/locale.c:210
+msgid "Cannot set LC_COLLATE to default locale"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ LC_COLLATE × ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ."
+
+#: locale/programs/locale.c:226
+msgid "Cannot set LC_ALL to default locale"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ LC_ALL × ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ."
+
+#: locale/programs/locale.c:517
+msgid "while preparing output"
+msgstr "ÐÒÉ ÐÏÄÇÏÔÏ×ËÅ ×Ù×ÏÄÁ"
+
+#: locale/programs/localedef.c:121
+msgid "Input Files:"
+msgstr "÷ÈÏÄÎÙÅ ÆÁÊÌÙ:"
+
+#: locale/programs/localedef.c:123
+msgid "Symbolic character names defined in FILE"
+msgstr "óÉÍ×ÏÌØÎÙÅ ÉÍÅÎÁ ÚÎÁËÏ× ÏÂßÑ×ÌÅÎÙ × æáêìå"
+
+#: locale/programs/localedef.c:124
+msgid "Source definitions are found in FILE"
+msgstr "éÓÈÏÄÎÙÅ ÏÐÒÅÄÅÌÅÎÉÑ ÎÁÈÏÄÑÔÓÑ × æáêìå"
+
+#: locale/programs/localedef.c:126
+msgid "FILE contains mapping from symbolic names to UCS4 values"
+msgstr "æáêì ÓÏÄÅÒÖÉÔ ÏÔÏÂÒÁÖÅÎÉÑ ÉÚ ÓÉÍ×ÏÌØÎÙÈ ÉÍÅÎ × ÚÎÁÞÅÎÉÑ UCS4"
+
+#: locale/programs/localedef.c:130
+msgid "Create output even if warning messages were issued"
+msgstr "óÏÚÄÁ×ÁÔØ ×Ù×ÏÄ, ÄÁÖÅ ÅÓÌÉ ÂÙÌÉ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ"
+
+#: locale/programs/localedef.c:131
+msgid "Create old-style tables"
+msgstr "óÏÚÄÁ×ÁÔØ ÔÁÂÌÉÃÙ × ÓÔÁÒÏÍ ÓÔÉÌÅ"
+
+#: locale/programs/localedef.c:132
+msgid "Optional output file prefix"
+msgstr "îÅÏÂÑÚÁÔÅÌØÎÙÊ ÐÒÅÆÉËÓ ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×"
+
+#: locale/programs/localedef.c:133
+msgid "Be strictly POSIX conform"
+msgstr "óÔÒÏÇÏ ÓÌÅÄÏ×ÁÔØ ÓÔÁÎÄÁÒÔÕ POSIX"
+
+#: locale/programs/localedef.c:135
+msgid "Suppress warnings and information messages"
+msgstr "îÅ ×Ù×ÏÄÉÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ É ÉÎÆÏÒÍÁÃÉÏÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
+
+#: locale/programs/localedef.c:136
+msgid "Print more messages"
+msgstr "ðÅÞÁÔÁÔØ ÂÏÌØÛÅ ÓÏÏÂÝÅÎÉÊ"
+
+#: locale/programs/localedef.c:137
+msgid "Archive control:"
+msgstr "õÐÒÁ×ÌÅÎÉÅ ÁÒÈÉ×ÏÍ:"
+
+#: locale/programs/localedef.c:139
+msgid "Don't add new data to archive"
+msgstr "îÅ ÄÏÂÁ×ÌÑÔØ × ÁÒÈÉ× ÎÏ×ÙÅ ÄÁÎÎÙÅ"
+
+#: locale/programs/localedef.c:141
+msgid "Add locales named by parameters to archive"
+msgstr "äÏÂÁ×ÉÔØ × ÁÒÈÉ× ÌÏËÁÌÉ, ÕËÁÚÁÎÎÙÅ × ÐÁÒÁÍÅÔÒÁÈ"
+
+#: locale/programs/localedef.c:142
+msgid "Replace existing archive content"
+msgstr "úÁÍÅÎÉÔØ ÓÕÝÅÓÔ×ÕÀÝÅÅ ÓÏÄÅÒÖÉÍÏÅ ÁÒÈÉ×Á"
+
+#: locale/programs/localedef.c:144
+msgid "Remove locales named by parameters from archive"
+msgstr "õÄÁÌÉÔØ ÉÚ ÁÒÈÉ×Á ÌÏËÁÌÉ, ÕËÁÚÁÎÎÙÅ × ÐÁÒÁÍÅÔÒÁÈ"
+
+#: locale/programs/localedef.c:145
+msgid "List content of archive"
+msgstr "ðÅÒÅÞÉÓÌÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÁÒÈÉ×Á"
+
+#: locale/programs/localedef.c:147
+msgid "locale.alias file to consult when making archive"
+msgstr "ÆÁÊÌ locale.alias, Ë ËÏÔÏÒÏÍÕ ÓÌÅÄÕÅÔ ÏÂÒÁÝÁÔØÓÑ ÐÒÉ ÓÏÚÄÁÎÉÉ ÁÒÈÉ×Á"
+
+#: locale/programs/localedef.c:152
+msgid "Compile locale specification"
+msgstr "ëÏÍÐÉÌÉÒÕÅÔ ÓÐÅÃÉÆÉËÁÃÉÀ ÌÏËÁÌÉ"
+
+#: locale/programs/localedef.c:155
+msgid ""
+"NAME\n"
+"[--add-to-archive|--delete-from-archive] FILE...\n"
+"--list-archive [FILE]"
+msgstr ""
+"éíñ\n"
+"[--add-to-archive|--delete-from-archive] æáêì...\n"
+"--list-archive [æáêì]"
+
+#: locale/programs/localedef.c:233
+msgid "cannot create directory for output files"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×"
+
+#: locale/programs/localedef.c:244
+msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
+msgstr "æáôáìøîáñ ïûéâëá: ÓÉÓÔÅÍÁ ÎÅ ÏÐÒÅÄÅÌÑÅÔ `_POSIX2_LOCALEDEF'"
+
+#: locale/programs/localedef.c:258 locale/programs/localedef.c:274
+#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
+#, c-format
+msgid "cannot open locale definition file `%s'"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ Ó ÏÐÒÅÄÅÌÅÎÉÅÍ ÌÏËÁÌÉ `%s'"
+
+#: locale/programs/localedef.c:286
+#, c-format
+msgid "cannot write output files to `%s'"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ×ÙÈÏÄÎÙÅ ÆÁÊÌÙ × `%s'"
+
+#: locale/programs/localedef.c:367
+#, 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
+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 "ÎÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÕÖÅ ÓÞÉÔÁÎÎÕÀ ÌÏËÁÌØ `%s' ×ÔÏÒÏÊ ÒÁÚ"
+
+#: locale/programs/locarchive.c:89 locale/programs/locarchive.c:259
+msgid "cannot create temporary file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ"
+
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+msgid "cannot initialize archive file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÁÒÈÉ×ÎÙÊ ÆÁÊÌ"
+
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+msgid "cannot resize archive file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÒÁÚÍÅÒ ÁÒÈÉ×ÎÏÇÏ ÆÁÊÌÁ"
+
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
+#: locale/programs/locarchive.c:511
+msgid "cannot map archive header"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ × ÐÁÍÑÔØ ÚÁÇÏÌÏ×ÏË ÁÒÈÉ×Á"
+
+#: locale/programs/locarchive.c:156
+msgid "failed to create new locale archive"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÎÏ×ÙÊ ÁÒÈÉ× ÌÏËÁÌÉ"
+
+#: locale/programs/locarchive.c:168
+msgid "cannot change mode of new locale archive"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÐÒÁ×Á ÄÏÓÔÕÐÁ ÄÌÑ ÎÏ×ÏÇÏ ÁÒÈÉ×ÎÏÇÏ ÆÁÊÌÁ"
+
+#: locale/programs/locarchive.c:253
+msgid "cannot map locale archive file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ × ÐÁÍÑÔØ ÁÒÈÉ×ÎÙÊ ÆÁÊÌ ÌÏËÁÌÉ"
+
+#: locale/programs/locarchive.c:329
+msgid "cannot lock new archive"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÎÏ×ÙÊ ÁÒÈÉ×"
+
+#: locale/programs/locarchive.c:380
+msgid "cannot extend locale archive file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÒÁÓÛÉÒÉÔØ ÁÒÈÉ×ÎÙÊ ÆÁÊÌ ÌÏËÁÌÉ"
+
+#: locale/programs/locarchive.c:389
+msgid "cannot change mode of resized locale archive"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÐÒÁ×Á ÄÏÓÔÕÐÁ ÁÒÈÉ×Á ÌÏËÁÌÉ ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÒÁÚÍÅÒÁ"
+
+#: locale/programs/locarchive.c:397
+msgid "cannot rename new archive"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ ÎÏ×ÙÊ ÁÒÈÉ×"
+
+#: locale/programs/locarchive.c:450
+#, c-format
+msgid "cannot open locale archive \"%s\""
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÁÒÈÉ× ÌÏËÁÌÉ \"%s\""
+
+#: locale/programs/locarchive.c:455
+#, c-format
+msgid "cannot stat locale archive \"%s\""
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat ÄÌÑ ÁÒÈÉ×Á ÌÏËÁÌÉ \"%s\""
+
+#: locale/programs/locarchive.c:474
+#, c-format
+msgid "cannot lock locale archive \"%s\""
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÁÒÈÉ× ÌÏËÁÌÉ \"%s\""
+
+#: locale/programs/locarchive.c:497
+msgid "cannot read archive header"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË ÁÒÈÉ×Á"
+
+#: locale/programs/locarchive.c:557
+#, c-format
+msgid "locale '%s' already exists"
+msgstr "ÌÏËÁÌØ '%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
+
+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+#: locale/programs/locfile.c:343
+msgid "cannot add to locale archive"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ Ë ÁÒÈÉ×Õ ÌÏËÁÌÉ"
+
+#: locale/programs/locarchive.c:982
+#, c-format
+msgid "locale alias file `%s' not found"
+msgstr "ÆÁÊÌ ÐÓÅ×ÄÏÎÉÍÏ× ÌÏËÁÌÅÊ `%s' ÎÅ ÎÁÊÄÅÎ"
+
+#: locale/programs/locarchive.c:1126
+#, c-format
+msgid "Adding %s\n"
+msgstr "äÏÂÁ×ÌÅÎÉÅ %s\n"
+
+#: locale/programs/locarchive.c:1132
+#, c-format
+msgid "stat of \"%s\" failed: %s: ignored"
+msgstr "ÏÐÅÒÁÃÉÑ stat ÄÌÑ \"%s\" ÎÅÕÓÐÅÛÎÁ: %s: ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+
+#: locale/programs/locarchive.c:1138
+#, c-format
+msgid "\"%s\" is no directory; ignored"
+msgstr "\"%s\" ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ; ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+
+#: locale/programs/locarchive.c:1145
+#, c-format
+msgid "cannot open directory \"%s\": %s: ignored"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ \"%s\": %s: ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+
+#: locale/programs/locarchive.c:1217
+#, c-format
+msgid "incomplete set of locale files in \"%s\""
+msgstr "ÎÅÐÏÌÎÙÊ ÎÁÂÏÒ ÆÁÊÌÏ× ÌÏËÁÌÉ × \"%s\""
+
+#: locale/programs/locarchive.c:1281
+#, c-format
+msgid "cannot read all files in \"%s\": ignored"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ×ÓÅ ÆÁÊÌÙ × \"%s\": ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+
+#: locale/programs/locarchive.c:1351
+#, c-format
+msgid "locale \"%s\" not in archive"
+msgstr "ÌÏËÁÌØ \"%s\" ÏÔÓÕÔÓÔ×ÕÅÔ × ÁÒÈÉ×Å"
+
+#: locale/programs/locfile.c:132
+#, c-format
+msgid "argument to `%s' must be a single character"
+msgstr "ÁÒÇÕÍÅÎÔ ÄÌÑ `%s' ÄÏÌÖÅÎ ÂÙÔØ ÏÄÎÉÍ ÚÎÁËÏÍ"
+
+#: locale/programs/locfile.c:251
+msgid "syntax error: not inside a locale definition section"
+msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ: ×ÎÅ ÓÅËÃÉÉ ÏÐÒÅÄÅÌÅÎÉÑ ÌÏËÁÌÉ"
+
+#: locale/programs/locfile.c:625
+#, c-format
+msgid "cannot open output file `%s' for category `%s'"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ `%s' ÄÌÑ ËÁÔÅÇÏÒÉÉ `%s'"
+
+#: locale/programs/locfile.c:649
+#, c-format
+msgid "failure while writing data for category `%s'"
+msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁÐÉÓÉ ÄÁÎÎÙÈ ÄÌÑ ËÁÔÅÇÏÒÉÉ`%s'"
+
+#: locale/programs/locfile.c:745
+#, c-format
+msgid "cannot create output file `%s' for category `%s'"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ `%s' ÄÌÑ ËÁÔÅÇÏÒÉÉ `%s'"
+
+#: locale/programs/locfile.c:781
+msgid "expect string argument for `copy'"
+msgstr "ÄÌÑ `copy' ÏÖÉÄÁÅÔÓÑ ÁÒÇÕÍÅÎÔ-ÓÔÒÏËÁ"
+
+#: locale/programs/locfile.c:785
+msgid "locale name should consist only of portable characters"
+msgstr "ÉÍÑ ÌÏËÁÌÉ ÄÏÌÖÎÏ ÓÏÓÔÏÑÔØ ÔÏÌØËÏ ÉÚ ÐÅÒÅÎÏÓÉÍÙÈ ÚÎÁËÏ×"
+
+#: locale/programs/locfile.c:804
+msgid "no other keyword shall be specified when `copy' is used"
+msgstr "ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ `copy' ÎÅÌØÚÑ ÚÁÄÁ×ÁÔØ ÄÒÕÇÉÅ ËÌÀÞÅ×ÙÅ ÓÌÏ×Á"
+
+#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
+#: locale/programs/repertoire.c:296
+#, c-format
+msgid "syntax error in repertoire map definition: %s"
+msgstr ""
+
+#: locale/programs/repertoire.c:272
+msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
+msgstr "ÎÅ ÚÁÄÁÎÏ ÚÎÁÞÅÎÉÅ <Uxxxx> ÉÌÉ <Uxxxxxxxx>"
+
+#: locale/programs/repertoire.c:332
+msgid "cannot safe new repertoire map"
+msgstr ""
+
+#: locale/programs/repertoire.c:343
+#, c-format
+msgid "repertoire map file `%s' not found"
+msgstr ""
+
+#: locale/programs/repertoire.c:450
+#, c-format
+msgid "<%s> and <%s> are invalid names for range"
+msgstr "<%s> É <%s> ÎÅ Ñ×ÌÑÀÔÓÑ ÄÏÐÕÓÔÉÍÙÍÉ ÉÍÅÎÁÍÉ ÄÉÁÐÁÚÏÎÁ"
+
+#: locale/programs/repertoire.c:457
+msgid "upper limit in range is not smaller then lower limit"
+msgstr "×ÅÒÈÎÑÑ ÇÒÁÎÉÃÁ ÄÉÁÐÁÚÏÎÁ ÎÅ ÍÅÎØÛÅ ÎÉÖÎÅÊ"
+
+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
+#: posix/getconf.c:1007
+msgid "memory exhausted"
+msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
+
+#: assert/assert-perr.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
+msgstr "%s%s%s:%u: %s%sîÅÏÖÉÄÁÎÎÁÑ ÏÛÉÂËÁ: %s.\n"
+
+#: assert/assert.c:56
+#, c-format
+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+msgstr "%s%s%s:%u: %s%sðÒÏ×ÅÒÏÞÎÏÅ ÕÔ×ÅÒÖÄÅÎÉÅ `%s' ÎÅ ×ÙÐÏÌÎÅÎÏ.\n"
+
+#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
+msgid "cheese"
+msgstr ""
+
+#: intl/tst-gettext2.c:37
+msgid "First string for testing."
+msgstr "ðÅÒ×ÁÑ ÓÔÒÏËÁ ÄÌÑ ÔÅÓÔÁ."
+
+#: intl/tst-gettext2.c:38
+msgid "Another string for testing."
+msgstr "äÒÕÇÁÑ ÓÔÒÏËÁ ÄÌÑ ÔÅÓÔÁ."
+
+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:88
+msgid "NAME"
+msgstr "æáêì"
+
+#: catgets/gencat.c:112
+msgid "Create C header file NAME containing symbol definitions"
+msgstr "óÏÚÄÁÅÔ ÚÁÇÏÌÏ×ÏÞÎÙÊ æáêì ÎÁ óÉ, ÓÏÄÅÒÖÁÝÉÊ ÏÐÒÅÄÅÌÅÎÉÑ ÓÉÍ×ÏÌÏ×."
+
+#: catgets/gencat.c:114
+msgid "Do not use existing catalog, force new output file"
+msgstr "îÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÕÝÅÓÔ×ÕÀÝÉÊ ËÁÔÁÌÏÇ, ÐÒÉÎÕÄÉÔÅÌØÎÏ ÓÏÚÄÁÔØ ÎÏ×ÙÊ ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
+
+#: catgets/gencat.c:115
+msgid "Write output to file NAME"
+msgstr "úÁÐÉÓÁÔØ ×Ù×ÏÄ × æáêì"
+
+#: catgets/gencat.c:120
+msgid ""
+"Generate message catalog.If INPUT-FILE is -, input is read from standard input.  If OUTPUT-FILE\n"
+"is -, output is written to standard output.\n"
+msgstr ""
+"çÅÎÅÒÉÒÕÅÔ ËÁÔÁÌÏÇ ÓÏÏÂÝÅÎÉÊ.åÓÌÉ ÷èïäîïê-æáêì ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.  åÓÌÉ\n"
+"÷ùèïäîïê-æáêì ÚÁÄÁÎ ËÁË -, ÒÅÚÕÌØÔÁÔ ÐÅÞÁÔÁÅÔÓÑ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+
+#: catgets/gencat.c:125
+msgid ""
+"-o OUTPUT-FILE [INPUT-FILE]...\n"
+"[OUTPUT-FILE [INPUT-FILE]...]"
+msgstr ""
+"-o ÷ùèïäîïê-æáêì [÷èïäîïê-æáêì]...\n"
+"[÷ùèïäîïê-æáêì [÷èïäîïê-æáêì]...]"
+
+#: catgets/gencat.c:282
+msgid "*standard input*"
+msgstr "*ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ*"
+
+#: catgets/gencat.c:417 catgets/gencat.c:494
+msgid "illegal set number"
+msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÍÎÏÖÅÓÔ×Á"
+
+#: catgets/gencat.c:444
+msgid "duplicate set definition"
+msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÍÎÏÖÅÓÔ×Á"
+
+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+msgid "this is the first definition"
+msgstr "ÜÔÏ ÐÅÒ×ÏÅ ÏÐÒÅÄÅÌÅÎÉÅ"
+
+#: catgets/gencat.c:522
+#, c-format
+msgid "unknown set `%s'"
+msgstr "ÎÅÉÚ×ÅÓÔÎÏÅ ÍÎÏÖÅÓÔ×Ï `%s'"
+
+#: catgets/gencat.c:563
+msgid "invalid quote character"
+msgstr "ÎÅ×ÅÒÎÙÊ ÜËÒÁÎÉÒÕÀÝÉÊ ÚÎÁË"
+
+#: catgets/gencat.c:576
+#, c-format
+msgid "unknown directive `%s': line ignored"
+msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÄÉÒÅËÔÉ×Á `%s': ÓÔÒÏËÁ ÉÇÎÏÒÉÒÏ×ÁÎÁ"
+
+#: catgets/gencat.c:621
+msgid "duplicated message number"
+msgstr "ÐÏ×ÔÏÒÎÙÊ ÎÏÍÅÒ ÓÏÏÂÝÅÎÉÑ"
+
+#: catgets/gencat.c:674
+msgid "duplicated message identifier"
+msgstr "ÐÏ×ÔÏÒÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÓÏÏÂÝÅÎÉÑ"
+
+#: catgets/gencat.c:731
+msgid "invalid character: message ignored"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÚÎÁË: ÓÏÏÂÝÅÎÉÅ ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+
+#: catgets/gencat.c:774
+msgid "invalid line"
+msgstr "ÎÅ×ÅÒÎÁÑ ÓÔÒÏËÁ"
+
+#: catgets/gencat.c:828
+msgid "malformed line ignored"
+msgstr "ÎÅÐÒÁ×ÉÌØÎÁÑ ÓÔÒÏËÁ ÉÇÎÏÒÉÒÏ×ÁÎÁ"
+
+#: catgets/gencat.c:992 catgets/gencat.c:1033
+#, c-format
+msgid "cannot open output file `%s'"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ `%s'"
+
+#: catgets/gencat.c:1217
+msgid "unterminated message"
+msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÏÅ ÓÏÏÂÝÅÎÉÅ"
+
+#: catgets/gencat.c:1241
+msgid "while opening old catalog file"
+msgstr "ÐÒÉ ÏÔËÒÙÔÉÉ ÓÔÁÒÏÇÏ ÆÁÊÌÁ ËÁÔÁÌÏÇÁ"
+
+#: catgets/gencat.c:1332
+msgid "conversion modules not available"
+msgstr "ÍÏÄÕÌÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÎÅÄÏÓÔÕÐÎÙ"
+
+#: catgets/gencat.c:1358
+msgid "cannot determine escape character"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÚÎÁË ×ÙÈÏÄÁ"
+
+#: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
+#, c-format
+msgid "makecontext: does not know how to handle more than 8 arguments\n"
+msgstr "makecontext: ÎÅÔ ×ÏÚÍÏÖÎÏÓÔÉ ÏÂÒÁÂÏÔÁÔØ ÂÏÌÅÅ ×ÏÓØÍÉ ÁÒÇÕÍÅÎÔÏ×\n"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:147
+#: nis/nis_error.c:29 nis/ypclnt.c:778 nis/ypclnt.c:852
+msgid "Success"
+msgstr "ðÏÂÅÄÁ"
+
+#. TRANS Operation not permitted; only the owner of the file (or other resource)
+#. TRANS or processes with special privileges can perform the operation.
+#: stdio-common/../sysdeps/gnu/errlist.c:17
+msgid "Operation not permitted"
+msgstr "ïÐÅÒÁÃÉÑ ÎÅ ÐÏÚ×ÏÌÑÅÔÓÑ"
+
+#. 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.
+#: stdio-common/../sysdeps/gnu/errlist.c:28
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
+msgid "No such file or directory"
+msgstr "îÅÔ ÔÁËÏÇÏ ÆÁÊÌÁ ÉÌÉ ËÁÔÁÌÏÇÁ"
+
+#. TRANS No process matches the specified process ID.
+#: stdio-common/../sysdeps/gnu/errlist.c:37
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
+msgid "No such process"
+msgstr "îÅÔ ÔÁËÏÇÏ ÐÒÏÃÅÓÓÁ"
+
+#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
+#. TRANS completion of the call.  When this happens, you should try the call
+#. TRANS again.
+#. TRANS
+#. TRANS You can choose to have functions resume after a signal that is handled,
+#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
+#. TRANS Primitives}.
+#: stdio-common/../sysdeps/gnu/errlist.c:52
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
+msgid "Interrupted system call"
+msgstr "ðÒÅÒ×ÁÎ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×"
+
+#. TRANS Input/output error; usually used for physical read or write errors.
+#: stdio-common/../sysdeps/gnu/errlist.c:61
+msgid "Input/output error"
+msgstr "ïÛÉÂËÁ ××ÏÄÁ/×Ù×ÏÄÁ"
+
+#. TRANS No such device or address.  The system tried to use the device
+#. TRANS represented by a file you specified, and it couldn't find the device.
+#. TRANS This can mean that the device file was installed incorrectly, or that
+#. TRANS the physical device is missing or not correctly attached to the
+#. TRANS computer.
+#: stdio-common/../sysdeps/gnu/errlist.c:74
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
+msgid "No such device or address"
+msgstr "îÅÔ ÔÁËÏÇÏ ÕÓÔÒÏÊÓÔ×Á ÉÌÉ ÁÄÒÅÓÁ"
+
+#. TRANS Argument list too long; used when the arguments passed to a new program
+#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
+#. TRANS File}) occupy too much memory space.  This condition never arises in the
+#. TRANS GNU system.
+#: stdio-common/../sysdeps/gnu/errlist.c:86
+msgid "Argument list too long"
+msgstr "óÌÉÛËÏÍ ÄÌÉÎÎÙÊ ÓÐÉÓÏË ÁÒÇÕÍÅÎÔÏ×"
+
+#. TRANS Invalid executable file format.  This condition is detected by the
+#. TRANS @code{exec} functions; see @ref{Executing a File}.
+#: stdio-common/../sysdeps/gnu/errlist.c:96
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
+msgid "Exec format error"
+msgstr "ïÛÉÂËÁ ÆÏÒÍÁÔÁ ×ÙÐÏÌÎÑÅÍÏÇÏ ÆÁÊÌÁ"
+
+#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
+#. TRANS closed or reading from a descriptor open only for writing (or vice
+#. TRANS versa).
+#: stdio-common/../sysdeps/gnu/errlist.c:107
+msgid "Bad file descriptor"
+msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ"
+
+#. TRANS There are no child processes.  This error happens on operations that are
+#. TRANS supposed to manipulate child processes, when there aren't any processes
+#. TRANS to manipulate.
+#: stdio-common/../sysdeps/gnu/errlist.c:118
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
+msgid "No child processes"
+msgstr "îÅÔ ÄÏÞÅÒÎÉÈ ÐÒÏÃÅÓÓÏ×"
+
+#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
+#. TRANS deadlock situation.  The system does not guarantee that it will notice
+#. TRANS all such situations.  This error means you got lucky and the system
+#. TRANS noticed; it might just hang.  @xref{File Locks}, for an example.
+#: stdio-common/../sysdeps/gnu/errlist.c:130
+msgid "Resource deadlock avoided"
+msgstr ""
+
+#. TRANS No memory available.  The system cannot allocate more virtual memory
+#. TRANS because its capacity is full.
+#: stdio-common/../sysdeps/gnu/errlist.c:140
+msgid "Cannot allocate memory"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ"
+
+#. TRANS Permission denied; the file permissions do not allow the attempted operation.
+#: stdio-common/../sysdeps/gnu/errlist.c:149
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
+#: nis/nis_error.c:39 nis/ypclnt.c:808
+msgid "Permission denied"
+msgstr "ïÔËÁÚÁÎÏ × ÄÏÓÔÕÐÅ"
+
+#. TRANS Bad address; an invalid pointer was detected.
+#. TRANS In the GNU system, this error never happens; you get a signal instead.
+#: stdio-common/../sysdeps/gnu/errlist.c:159
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
+msgid "Bad address"
+msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÁÄÒÅÓ"
+
+#. TRANS A file that isn't a block special file was given in a situation that
+#. TRANS requires one.  For example, trying to mount an ordinary file as a file
+#. TRANS system in Unix gives this error.
+#: stdio-common/../sysdeps/gnu/errlist.c:170
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
+msgid "Block device required"
+msgstr "ôÒÅÂÕÅÔÓÑ ÂÌÏÞÎÏÅ ÕÓÔÒÏÊÓÔ×Ï"
+
+#. TRANS Resource busy; a system resource that can't be shared is already in use.
+#. TRANS For example, if you try to delete a file that is the root of a currently
+#. TRANS mounted filesystem, you get this error.
+#: stdio-common/../sysdeps/gnu/errlist.c:181
+msgid "Device or resource busy"
+msgstr "õÓÔÒÏÊÓÔ×Ï ÉÌÉ ÒÅÓÕÒÓ ÚÁÎÑÔÏ"
+
+#. TRANS File exists; an existing file was specified in a context where it only
+#. TRANS makes sense to specify a new file.
+#: stdio-common/../sysdeps/gnu/errlist.c:191
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
+msgid "File exists"
+msgstr "æÁÊÌ ÓÕÝÅÓÔ×ÕÅÔ"
+
+#. TRANS An attempt to make an improper link across file systems was detected.
+#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
+#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
+#: stdio-common/../sysdeps/gnu/errlist.c:202
+msgid "Invalid cross-device link"
+msgstr "îÅ×ÅÒÎÁÑ ÓÓÙÌËÁ ÍÅÖÄÕ ÕÓÔÒÏÊÓÔ×ÁÍÉ"
+
+#. TRANS The wrong type of device was given to a function that expects a
+#. TRANS particular sort of device.
+#: stdio-common/../sysdeps/gnu/errlist.c:212
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
+msgid "No such device"
+msgstr "îÅÔ ÔÁËÏÇÏ ÕÓÔÒÏÊÓÔ×Á"
+
+#. TRANS A file that isn't a directory was specified when a directory is required.
+#: stdio-common/../sysdeps/gnu/errlist.c:221
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
+msgid "Not a directory"
+msgstr "üÔÏ ÎÅ ËÁÔÁÌÏÇ"
+
+#. TRANS File is a directory; you cannot open a directory for writing,
+#. TRANS or create or remove hard links to it.
+#: stdio-common/../sysdeps/gnu/errlist.c:231
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
+msgid "Is a directory"
+msgstr "üÔÏ ËÁÔÁÌÏÇ"
+
+#. TRANS Invalid argument.  This is used to indicate various kinds of problems
+#. TRANS with passing the wrong argument to a library function.
+#: stdio-common/../sysdeps/gnu/errlist.c:241
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
+msgid "Invalid argument"
+msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÁÒÇÕÍÅÎÔ"
+
+#. TRANS The current process has too many files open and can't open any more.
+#. TRANS Duplicate descriptors do count toward this limit.
+#. TRANS
+#. TRANS In BSD and GNU, the number of open files is controlled by a resource
+#. TRANS limit that can usually be increased.  If you get this error, you might
+#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
+#. TRANS @pxref{Limits on Resources}.
+#: stdio-common/../sysdeps/gnu/errlist.c:256
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
+msgid "Too many open files"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÏÔËÒÙÔÙÈ ÆÁÊÌÏ×"
+
+#. TRANS There are too many distinct file openings in the entire system.  Note
+#. TRANS that any number of linked channels count as just one file opening; see
+#. TRANS @ref{Linked Channels}.  This error never occurs in the GNU system.
+#: stdio-common/../sysdeps/gnu/errlist.c:267
+msgid "Too many open files in system"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÏÔËÒÙÔÙÈ ÆÁÊÌÏ× × ÓÉÓÔÅÍÅ"
+
+#. TRANS Inappropriate I/O control operation, such as trying to set terminal
+#. TRANS modes on an ordinary file.
+#: stdio-common/../sysdeps/gnu/errlist.c:277
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
+msgid "Inappropriate ioctl for device"
+msgstr "îÅÐÒÉÍÅÎÉÍÙÊ Ë ÄÁÎÎÏÍÕ ÕÓÔÒÏÊÓÔ×Õ ioctl"
+
+#. TRANS An attempt to execute a file that is currently open for writing, or
+#. TRANS write to a file that is currently being executed.  Often using a
+#. TRANS debugger to run a program is considered having it open for writing and
+#. TRANS will cause this error.  (The name stands for ``text file busy''.)  This
+#. TRANS is not an error in the GNU system; the text is copied as necessary.
+#: stdio-common/../sysdeps/gnu/errlist.c:290
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
+msgid "Text file busy"
+msgstr "ôÅËÓÔÏ×ÙÊ ÆÁÊÌ ÚÁÎÑÔ"
+
+#. TRANS File too big; the size of a file would be larger than allowed by the system.
+#: stdio-common/../sysdeps/gnu/errlist.c:299
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
+msgid "File too large"
+msgstr "æÁÊÌ ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#. TRANS No space left on device; write operation on a file failed because the
+#. TRANS disk is full.
+#: stdio-common/../sysdeps/gnu/errlist.c:309
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
+msgid "No space left on device"
+msgstr "îÁ ÕÓÔÒÏÊÓÔ×Å ËÏÎÞÉÌÏÓØ ÍÅÓÔÏ"
+
+#. TRANS Invalid seek operation (such as on a pipe).
+#: stdio-common/../sysdeps/gnu/errlist.c:318
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
+msgid "Illegal seek"
+msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ÏÐÅÒÁÃÉÑ ÓÍÅÝÅÎÉÑ"
+
+#. TRANS An attempt was made to modify something on a read-only file system.
+#: stdio-common/../sysdeps/gnu/errlist.c:327
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
+msgid "Read-only file system"
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÄÏÓÔÕÐÎÁ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ"
+
+#. TRANS Too many links; the link count of a single file would become too large.
+#. TRANS @code{rename} can cause this error if the file being renamed already has
+#. TRANS as many links as it can take (@pxref{Renaming Files}).
+#: stdio-common/../sysdeps/gnu/errlist.c:338
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
+msgid "Too many links"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÓÓÙÌÏË"
+
+#. TRANS Domain error; used by mathematical functions when an argument value does
+#. TRANS not fall into the domain over which the function is defined.
+#: stdio-common/../sysdeps/gnu/errlist.c:361
+msgid "Numerical argument out of domain"
+msgstr "þÉÓÌÏ×ÏÊ ÁÒÇÕÍÅÎÔ ×ÎÅ ÏÂÌÁÓÔÉ ÏÐÒÅÄÅÌÅÎÉÑ"
+
+#. TRANS Range error; used by mathematical functions when the result value is
+#. TRANS not representable because of overflow or underflow.
+#: stdio-common/../sysdeps/gnu/errlist.c:371
+msgid "Numerical result out of range"
+msgstr "þÉÓÌÏ×ÏÊ ÒÅÚÕÌØÔÁÔ ×ÎÅ ÐÒÅÄÓÔÁ×ÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ"
+
+#. TRANS Resource temporarily unavailable; the call might work if you try again
+#. TRANS later.  The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
+#. TRANS they are always the same in the GNU C library.
+#. TRANS
+#. TRANS This error can happen in a few different situations:
+#. TRANS
+#. TRANS @itemize @bullet
+#. TRANS @item
+#. TRANS An operation that would block was attempted on an object that has
+#. TRANS non-blocking mode selected.  Trying the same operation again will block
+#. TRANS until some external condition makes it possible to read, write, or
+#. TRANS connect (whatever the operation).  You can use @code{select} to find out
+#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
+#. TRANS
+#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
+#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
+#. TRANS different from @code{EAGAIN}.  To make your program portable, you should
+#. TRANS check for both codes and treat them the same.
+#. TRANS
+#. TRANS @item
+#. TRANS A temporary resource shortage made an operation impossible.  @code{fork}
+#. TRANS can return this error.  It indicates that the shortage is expected to
+#. TRANS pass, so your program can try the call again later and it may succeed.
+#. TRANS It is probably a good idea to delay for a few seconds before trying it
+#. TRANS again, to allow time for other processes to release scarce resources.
+#. TRANS Such shortages are usually fairly serious and affect the whole system,
+#. TRANS so usually an interactive program should report the error to the user
+#. TRANS and return to its command loop.
+#. TRANS @end itemize
+#: stdio-common/../sysdeps/gnu/errlist.c:408
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
+msgid "Resource temporarily unavailable"
+msgstr "òÅÓÕÒÓ ×ÒÅÍÅÎÎÏ ÎÅÄÏÓÔÕÐÅÎ"
+
+#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
+#. TRANS The values are always the same, on every operating system.
+#. TRANS
+#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
+#. TRANS separate error code.
+#: stdio-common/../sysdeps/gnu/errlist.c:421
+msgid "Operation would block"
+msgstr "ïÐÅÒÁÃÉÑ ÐÒÉ×ÅÄÅÔ Ë ÂÌÏËÉÒÏ×ËÅ"
+
+#. TRANS An operation that cannot complete immediately was initiated on an object
+#. TRANS that has non-blocking mode selected.  Some functions that must always
+#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
+#. TRANS @code{EAGAIN}.  Instead, they return @code{EINPROGRESS} to indicate that
+#. TRANS the operation has begun and will take some time.  Attempts to manipulate
+#. TRANS the object before the call completes return @code{EALREADY}.  You can
+#. TRANS use the @code{select} function to find out when the pending operation
+#. TRANS has completed; @pxref{Waiting for I/O}.
+#: stdio-common/../sysdeps/gnu/errlist.c:437
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
+msgid "Operation now in progress"
+msgstr "ïÐÅÒÁÃÉÑ ×ÙÐÏÌÎÑÅÔÓÑ × ÄÁÎÎÙÊ ÍÏÍÅÎÔ"
+
+#. TRANS An operation is already in progress on an object that has non-blocking
+#. TRANS mode selected.
+#: stdio-common/../sysdeps/gnu/errlist.c:447
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
+msgid "Operation already in progress"
+msgstr "ïÐÅÒÁÃÉÑ ÕÖÅ ×ÙÐÏÌÎÑÅÔÓÑ"
+
+#. TRANS A file that isn't a socket was specified when a socket is required.
+#: stdio-common/../sysdeps/gnu/errlist.c:456
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
+msgid "Socket operation on non-socket"
+msgstr "ïÐÅÒÁÃÉÑ ÄÌÑ ÓÏËÅÔÁ ÐÒÉÍÅÎÅÎÁ Ë ÎÅ-ÓÏËÅÔÕ"
+
+#. TRANS The size of a message sent on a socket was larger than the supported
+#. TRANS maximum size.
+#: stdio-common/../sysdeps/gnu/errlist.c:466
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
+msgid "Message too long"
+msgstr "óÏÏÂÝÅÎÉÅ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ"
+
+#. TRANS The socket type does not support the requested communications protocol.
+#: stdio-common/../sysdeps/gnu/errlist.c:475
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
+msgid "Protocol wrong type for socket"
+msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÄÌÑ ÓÏËÅÔÁ ÔÉÐ ÐÒÏÔÏËÏÌÁ"
+
+#. TRANS You specified a socket option that doesn't make sense for the
+#. TRANS particular protocol being used by the socket.  @xref{Socket Options}.
+#: stdio-common/../sysdeps/gnu/errlist.c:485
+msgid "Protocol not available"
+msgstr "ðÒÏÔÏËÏÌ ÎÅÄÏÓÔÕÐÅÎ"
+
+#. TRANS The socket domain does not support the requested communications protocol
+#. TRANS (perhaps because the requested protocol is completely invalid).
+#. TRANS @xref{Creating a Socket}.
+#: stdio-common/../sysdeps/gnu/errlist.c:496
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
+msgid "Protocol not supported"
+msgstr "ðÒÏÔÏËÏÌ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#. TRANS The socket type is not supported.
+#: stdio-common/../sysdeps/gnu/errlist.c:505
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
+msgid "Socket type not supported"
+msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÔÉÐ ÓÏËÅÔÁ"
+
+#. TRANS The operation you requested is not supported.  Some socket functions
+#. TRANS don't make sense for all types of sockets, and others may not be
+#. TRANS implemented for all communications protocols.  In the GNU system, this
+#. TRANS error can happen for many calls when the object does not support the
+#. TRANS particular operation; it is a generic indication that the server knows
+#. TRANS nothing to do for that call.
+#: stdio-common/../sysdeps/gnu/errlist.c:519
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
+msgid "Operation not supported"
+msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÁÑ ÏÐÅÒÁÃÉÑ"
+
+#. TRANS The socket communications protocol family you requested is not supported.
+#: stdio-common/../sysdeps/gnu/errlist.c:528
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
+msgid "Protocol family not supported"
+msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÏÅ ÓÅÍÅÊÓÔ×Ï ÐÒÏÔÏËÏÌÏ×"
+
+#. TRANS The address family specified for a socket is not supported; it is
+#. TRANS inconsistent with the protocol being used on the socket.  @xref{Sockets}.
+#: stdio-common/../sysdeps/gnu/errlist.c:538
+msgid "Address family not supported by protocol"
+msgstr "óÅÍÅÊÓÔ×Ï ÁÄÒÅÓÏ× ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÐÒÏÔÏËÏÌÏÍ"
+
+#. TRANS The requested socket address is already in use.  @xref{Socket Addresses}.
+#: stdio-common/../sysdeps/gnu/errlist.c:547
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
+msgid "Address already in use"
+msgstr "áÄÒÅÓ ÕÖÅ ÉÓÐÏÌØÚÕÅÔÓÑ"
+
+#. TRANS The requested socket address is not available; for example, you tried
+#. TRANS to give a socket a name that doesn't match the local host name.
+#. TRANS @xref{Socket Addresses}.
+#: stdio-common/../sysdeps/gnu/errlist.c:558
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
+msgid "Cannot assign requested address"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÚÎÁÞÉÔØ ÚÁÐÒÏÛÅÎÎÙÊ ÁÄÒÅÓ"
+
+#. TRANS A socket operation failed because the network was down.
+#: stdio-common/../sysdeps/gnu/errlist.c:567
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
+msgid "Network is down"
+msgstr "óÅÔØ ÎÅ ÒÁÂÏÔÁÅÔ"
+
+#. TRANS A socket operation failed because the subnet containing the remote host
+#. TRANS was unreachable.
+#: stdio-common/../sysdeps/gnu/errlist.c:577
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
+msgid "Network is unreachable"
+msgstr "óÅÔØ ÎÅÄÏÓÔÕÐÎÁ"
+
+#. TRANS A network connection was reset because the remote host crashed.
+#: stdio-common/../sysdeps/gnu/errlist.c:586
+msgid "Network dropped connection on reset"
+msgstr "óÅÔÅ×ÏÅ ÓÏÅÄÉÎÅÎÉÅ ÂÙÌÏ ÓÂÒÏÛÅÎÏ"
+
+#. TRANS A network connection was aborted locally.
+#: stdio-common/../sysdeps/gnu/errlist.c:595
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
+msgid "Software caused connection abort"
+msgstr "ðÒÏÇÒÁÍÍÁ ×ÙÚ×ÁÌÁ ÓÂÒÏÓ ÓÏÅÄÉÎÅÎÉÑ"
+
+#. TRANS A network connection was closed for reasons outside the control of the
+#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
+#. TRANS protocol violation.
+#: stdio-common/../sysdeps/gnu/errlist.c:606
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
+msgid "Connection reset by peer"
+msgstr "óÏÅÄÉÎÅÎÉÅ ÓÂÒÏÛÅÎÏ ÄÒÕÇÏÊ ÓÔÏÒÏÎÏÊ"
+
+#. TRANS The kernel's buffers for I/O operations are all in use.  In GNU, this
+#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
+#. TRANS other from network operations.
+#: stdio-common/../sysdeps/gnu/errlist.c:617
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
+msgid "No buffer space available"
+msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÂÕÆÅÒÎÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á"
+
+#. TRANS You tried to connect a socket that is already connected.
+#. TRANS @xref{Connecting}.
+#: stdio-common/../sysdeps/gnu/errlist.c:627
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
+msgid "Transport endpoint is already connected"
+msgstr "ëÏÎÅÞÎÁÑ ÔÏÞËÁ ÐÅÒÅÄÁÞÉ ÕÖÅ ÐÏÄÓÏÅÄÉÎÅÎÁ"
+
+#. TRANS The socket is not connected to anything.  You get this error when you
+#. TRANS try to transmit data over a socket, without first specifying a
+#. TRANS destination for the data.  For a connectionless socket (for datagram
+#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
+#: stdio-common/../sysdeps/gnu/errlist.c:639
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
+msgid "Transport endpoint is not connected"
+msgstr "ëÏÎÅÞÎÁÑ ÔÏÞËÁ ÐÅÒÅÄÁÞÉ ÎÅ ÐÏÄÓÏÅÄÉÎÅÎÁ"
+
+#. TRANS No default destination address was set for the socket.  You get this
+#. TRANS error when you try to transmit data over a connectionless socket,
+#. TRANS without first specifying a destination for the data with @code{connect}.
+#: stdio-common/../sysdeps/gnu/errlist.c:650
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
+msgid "Destination address required"
+msgstr "ôÒÅÂÕÅÔÓÑ ÕËÁÚÁÔØ ÁÄÒÅÓ ÎÁÚÎÁÞÅÎÉÑ"
+
+#. TRANS The socket has already been shut down.
+#: stdio-common/../sysdeps/gnu/errlist.c:659
+msgid "Cannot send after transport endpoint shutdown"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÓÌÁÔØ ÄÁÎÎÙÅ ÐÏÓÌÅ ×ÙËÌÀÞÅÎÉÑ ËÏÎÅÞÎÏÊ ÔÏÞËÉ ÐÅÒÅÄÁÞÉ"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:668
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
+msgid "Too many references: cannot splice"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÓÓÙÌÏË: ÎÅ×ÏÚÍÏÖÎÏ ÏÂßÅÄÉÎÉÔØ"
+
+#. TRANS A socket operation with a specified timeout received no response during
+#. TRANS the timeout period.
+#: stdio-common/../sysdeps/gnu/errlist.c:678
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
+msgid "Connection timed out"
+msgstr "÷ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÓÏÅÄÉÎÅÎÉÑ ÉÓÔÅËÌÏ"
+
+#. TRANS A remote host refused to allow the network connection (typically because
+#. TRANS it is not running the requested service).
+#: stdio-common/../sysdeps/gnu/errlist.c:688
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
+msgid "Connection refused"
+msgstr "÷ ÓÏÅÄÉÎÅÎÉÉ ÏÔËÁÚÁÎÏ"
+
+#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
+#. TRANS This often indicates a cycle of symbolic links.
+#: stdio-common/../sysdeps/gnu/errlist.c:698
+msgid "Too many levels of symbolic links"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÕÒÏ×ÎÅÊ ÓÉÍ×ÏÌØÎÙÈ ÓÓÙÌÏË"
+
+#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
+#. TRANS Files}) or host name too long (in @code{gethostname} or
+#. TRANS @code{sethostname}; @pxref{Host Identification}).
+#: stdio-common/../sysdeps/gnu/errlist.c:709
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:108
+msgid "File name too long"
+msgstr "óÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÉÍÑ ÆÁÊÌÁ"
+
+#. TRANS The remote host for a requested network connection is down.
+#: stdio-common/../sysdeps/gnu/errlist.c:718
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
+msgid "Host is down"
+msgstr "èÏÓÔ ×ÙËÌÀÞÅÎ"
+
+#. TRANS The remote host for a requested network connection is not reachable.
+#: stdio-common/../sysdeps/gnu/errlist.c:727
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
+msgid "No route to host"
+msgstr "îÅÔ ÐÕÔÉ ÄÏ ÈÏÓÔÁ"
+
+#. TRANS Directory not empty, where an empty directory was expected.  Typically,
+#. TRANS this error occurs when you are trying to delete a directory.
+#: stdio-common/../sysdeps/gnu/errlist.c:737
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
+msgid "Directory not empty"
+msgstr "ëÁÔÁÌÏÇ ÎÅ ÐÕÓÔ"
+
+#. TRANS This means that the per-user limit on new process would be exceeded by
+#. TRANS an attempted @code{fork}.  @xref{Limits on Resources}, for details on
+#. TRANS the @code{RLIMIT_NPROC} limit.
+#: stdio-common/../sysdeps/gnu/errlist.c:748
+msgid "Too many processes"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÒÏÃÅÓÓÏ×"
+
+#. TRANS The file quota system is confused because there are too many users.
+#. TRANS @c This can probably happen in a GNU system when using NFS.
+#: stdio-common/../sysdeps/gnu/errlist.c:758
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
+msgid "Too many users"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÅÊ"
+
+#. TRANS The user's disk quota was exceeded.
+#: stdio-common/../sysdeps/gnu/errlist.c:767
+msgid "Disk quota exceeded"
+msgstr "ðÒÅ×ÙÛÅÎÁ ÄÉÓËÏ×ÁÑ Ë×ÏÔÁ"
+
+#. TRANS Stale NFS file handle.  This indicates an internal confusion in the NFS
+#. TRANS system which is due to file system rearrangements on the server host.
+#. TRANS Repairing this condition usually requires unmounting and remounting
+#. TRANS the NFS file system on the local host.
+#: stdio-common/../sysdeps/gnu/errlist.c:779
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
+msgid "Stale NFS file handle"
+msgstr "õÓÔÁÒÅ×ÛÉÊ ÈÜÎÄÌ ÆÁÊÌÁ NFS"
+
+#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
+#. TRANS already specifies an NFS-mounted file.
+#. TRANS (This is an error on some operating systems, but we expect it to work
+#. TRANS properly on the GNU system, making this error code impossible.)
+#: stdio-common/../sysdeps/gnu/errlist.c:791
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
+msgid "Object is remote"
+msgstr "üÔÏ ÕÄÁÌÅÎÎÙÊ ÏÂßÅËÔ"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:800
+#, fuzzy
+msgid "RPC struct is bad"
+msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ÓÔÒÕËÔÕÒÁ RPC"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:809
+#, fuzzy
+msgid "RPC version wrong"
+msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ×ÅÒÓÉÑ RPC"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:818
+#, fuzzy
+msgid "RPC program not available"
+msgstr "ðÒÏÇÒÁÍÍÁ RPC ÎÅÄÏÓÔÕÐÎÁ"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:827
+#, fuzzy
+msgid "RPC program version wrong"
+msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ×ÅÒÓÉÑ ÐÒÏÇÒÁÍÍÙ RPC"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:836
+msgid "RPC bad procedure for program"
+msgstr ""
+
+#. TRANS No locks available.  This is used by the file locking facilities; see
+#. TRANS @ref{File Locks}.  This error is never generated by the GNU system, but
+#. TRANS it can result from an operation to an NFS server running another
+#. TRANS operating system.
+#: stdio-common/../sysdeps/gnu/errlist.c:848
+msgid "No locks available"
+msgstr "îÅÔ ÄÏÓÔÕÐÎÙÈ ÂÌÏËÉÒÏ×ÏË"
+
+#. TRANS Inappropriate file type or format.  The file was the wrong type for the
+#. TRANS operation, or a data file had the wrong format.
+#. TRANS
+#. TRANS On some systems @code{chmod} returns this error if you try to set the
+#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
+#: stdio-common/../sysdeps/gnu/errlist.c:861
+msgid "Inappropriate file type or format"
+msgstr "îÅÐÏÄÈÏÄÑÝÉÊ ÔÉÐ ÉÌÉ ÆÏÒÍÁÔ ÆÁÊÌÁ"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:870
+msgid "Authentication error"
+msgstr "ïÛÉÂËÁ ÁÕÔÅÎÆÉËÁÃÉÉ"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:879
+msgid "Need authenticator"
+msgstr "îÅÏÂÈÏÄÉÍ ÁÕÔÅÎÆÉËÁÔÏÒ"
+
+#. TRANS Function not implemented.  This indicates that the function called is
+#. TRANS not implemented at all, either in the C library itself or in the
+#. TRANS operating system.  When you get this error, you can be sure that this
+#. TRANS particular function will always fail with @code{ENOSYS} unless you
+#. TRANS install a new version of the C library or the operating system.
+#: stdio-common/../sysdeps/gnu/errlist.c:892
+msgid "Function not implemented"
+msgstr "æÕÎËÃÉÑ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ"
+
+#. TRANS Not supported.  A function returns this error when certain parameter
+#. TRANS values are valid, but the functionality they request is not available.
+#. TRANS This can mean that the function does not implement a particular command
+#. TRANS or option value or flag bit at all.  For functions that operate on some
+#. TRANS object given in a parameter, such as a file descriptor or a port, it
+#. TRANS might instead mean that only @emph{that specific object} (file
+#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
+#. TRANS different file descriptors might support different ranges of parameter
+#. TRANS values.
+#. TRANS
+#. TRANS If the entire function is not available at all in the implementation,
+#. TRANS it returns @code{ENOSYS} instead.
+#: stdio-common/../sysdeps/gnu/errlist.c:912
+msgid "Not supported"
+msgstr "îÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#. TRANS While decoding a multibyte character the function came along an invalid
+#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
+#: stdio-common/../sysdeps/gnu/errlist.c:922
+msgid "Invalid or incomplete multibyte or wide character"
+msgstr "îÅ×ÅÒÎÙÊ ÉÌÉ ÎÅÐÏÌÎÙÊ ÍÕÌØÔÉÂÁÊÔÎÙÊ ÉÌÉ ÛÉÒÏËÉÊ ÚÎÁË"
+
+#. TRANS In the GNU system, servers supporting the @code{term} protocol return
+#. TRANS this error for certain operations when the caller is not in the
+#. TRANS foreground process group of the terminal.  Users do not usually see this
+#. TRANS error because functions such as @code{read} and @code{write} translate
+#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal.  @xref{Job Control},
+#. TRANS for information on process groups and these signals.
+#: stdio-common/../sysdeps/gnu/errlist.c:936
+msgid "Inappropriate operation for background process"
+msgstr "îÅÐÏÄÈÏÄÑÝÁÑ ÏÐÅÒÁÃÉÑ ÄÌÑ ÆÏÎÏ×ÏÇÏ ÐÒÏÃÅÓÓÁ"
+
+#. TRANS In the GNU system, opening a file returns this error when the file is
+#. TRANS translated by a program and the translator program dies while starting
+#. TRANS up, before it has connected to the file.
+#: stdio-common/../sysdeps/gnu/errlist.c:947
+msgid "Translator died"
+msgstr "ôÒÁÎÓÌÑÔÏÒ ÕÍÅÒ"
+
+#. TRANS The experienced user will know what is wrong.
+#. TRANS @c This error code is a joke.  Its perror text is part of the joke.
+#. TRANS @c Don't change it.
+#: stdio-common/../sysdeps/gnu/errlist.c:958
+msgid "?"
+msgstr "?"
+
+#. TRANS You did @strong{what}?
+#: stdio-common/../sysdeps/gnu/errlist.c:967
+msgid "You really blew it this time"
+msgstr "îÁ ÜÔÏÔ ÒÁÚ ×Ù ×ÓÅÈ ÏÐÒÏËÉÎÕÌÉ"
+
+#. TRANS Go home and have a glass of warm, dairy-fresh milk.
+#: stdio-common/../sysdeps/gnu/errlist.c:976
+msgid "Computer bought the farm"
+msgstr "ëÏÍÐØÀÔÅÒ ËÕÐÉÌ ÆÅÒÍÕ"
+
+#. TRANS This error code has no purpose.
+#: stdio-common/../sysdeps/gnu/errlist.c:985
+msgid "Gratuitous error"
+msgstr "âÅÚ×ÏÚÍÅÚÄÎÁÑ ÏÛÉÂËÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:993
+msgid "Bad message"
+msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÓÏÏÂÝÅÎÉÅ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1001
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
+msgid "Identifier removed"
+msgstr "éÄÅÎÔÉÆÉËÁÔÏÒ ÂÙÌ ÕÄÁÌÅÎ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1009
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
+msgid "Multihop attempted"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1017
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
+msgid "No data available"
+msgstr "îÅÔ ÄÏÓÔÕÐÎÙÈ ÄÁÎÎÙÈ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1025
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
+msgid "Link has been severed"
+msgstr "óÏÅÄÉÎÅÎÅÎÉÅ ÂÙÌÏ ÒÁÚÏÒ×ÁÎÏ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1033
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
+msgid "No message of desired type"
+msgstr "îÅÔ ÓÏÏÂÝÅÎÉÑ ÖÅÌÁÅÍÏÇÏ ÔÉÐÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1041
+msgid "Out of streams resources"
+msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÏÔÏËÏ×ÙÈ ÒÅÓÕÒÓÏ×"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1049
+msgid "Device not a stream"
+msgstr "õÓÔÒÏÊÓÔ×Ï ÎÅ Ñ×ÌÑÅÔÓÑ ÐÏÔÏËÏÍ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1057
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
+msgid "Value too large for defined data type"
+msgstr "úÎÁÞÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ ÄÌÑ ÔÁËÏÇÏ ÔÉÐÁ ÄÁÎÎÙÈ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1065
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
+msgid "Protocol error"
+msgstr "ïÛÉÂËÁ ÐÒÏÔÏËÏÌÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1073
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
+msgid "Timer expired"
+msgstr "ôÁÊÍÅÒ ÉÓÔÅË"
+
+#. TRANS Operation canceled; an asynchronous operation was canceled before it
+#. TRANS completed.  @xref{Asynchronous I/O}.  When you call @code{aio_cancel},
+#. TRANS the normal result is for the operations affected to complete with this
+#. TRANS error; @pxref{Cancel AIO Operations}.
+#: stdio-common/../sysdeps/gnu/errlist.c:1085
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
+msgid "Operation canceled"
+msgstr "ïÐÅÒÁÃÉÑ ÏÔÍÅÎÅÎÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1093
+msgid "Interrupted system call should be restarted"
+msgstr "ðÒÅÒ×ÁÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× ÓÌÅÄÕÅÔ ÐÅÒÅÚÁÐÕÓÔÉÔØ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1101
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
+msgid "Channel number out of range"
+msgstr "îÏÍÅÒ ËÁÎÁÌÁ ×ÎÅ ÄÉÁÐÁÚÏÎÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1109
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
+msgid "Level 2 not synchronized"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1117
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
+msgid "Level 3 halted"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1125
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
+msgid "Level 3 reset"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1133
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
+msgid "Link number out of range"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1141
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
+msgid "Protocol driver not attached"
+msgstr "äÒÁÊ×ÅÒ ÐÒÏÔÏËÏÌÁ ÎÅ ÐÏÄÓÏÅÄÉÎÅÎ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1149
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
+msgid "No CSI structure available"
+msgstr "îÅÔ ÄÏÓÔÕÐÎÏÊ CSI-ÓÔÒÕËÔÕÒÙ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1157
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
+msgid "Level 2 halted"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1165
+msgid "Invalid exchange"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1173
+msgid "Invalid request descriptor"
+msgstr "îÅ×ÅÒÎÙÊ ÄÅÓËÒÉÐÔÏÒ ÚÁÐÒÏÓÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1181
+msgid "Exchange full"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1189
+msgid "No anode"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1197
+msgid "Invalid request code"
+msgstr "îÅ×ÅÒÎÙÊ ËÏÄ ÚÁÐÒÏÓÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1205
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
+msgid "Invalid slot"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1213
+msgid "File locking deadlock error"
+msgstr "ïÛÉÂËÁ: ÔÕÐÉË ÐÒÉ ÂÌÏËÉÒÏ×ËÅ ÆÁÊÌÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1221
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
+msgid "Bad font file format"
+msgstr "îÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÆÁÊÌÁ ÓÏ ÛÒÉÆÔÏÍ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1229
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
+msgid "Machine is not on the network"
+msgstr "íÁÛÉÎÁ ÎÅ × ÓÅÔÉ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1237
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
+msgid "Package not installed"
+msgstr "ðÁËÅÔ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1245
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
+msgid "Advertise error"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1253
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
+msgid "Srmount error"
+msgstr "ïÛÉÂËÁ Srmount"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1261
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
+msgid "Communication error on send"
+msgstr "ïÛÉÂËÁ Ó×ÑÚÉ ÐÒÉ ÏÔÐÒÁ×ËÅ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1269
+msgid "RFS specific error"
+msgstr "óÐÅÃÉÆÉÞÎÁÑ ÄÌÑ RFS ÏÛÉÂËÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1277
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
+msgid "Name not unique on network"
+msgstr "éÍÑ ÎÅ ÕÎÉËÁÌØÎÏ × ÓÅÔÉ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1285
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
+msgid "File descriptor in bad state"
+msgstr "äÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ × ÐÌÏÈÏÍ ÓÏÓÔÏÑÎÉÉ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1293
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
+msgid "Remote address changed"
+msgstr "õÄÁÌÅÎÎÙÊ ÁÄÒÅÓ ÂÙÌ ÉÚÍÅÎÅÎ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1301
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
+msgid "Can not access a needed shared library"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ Ë ÎÕÖÎÏÊ ÒÁÚÄÅÌÑÅÍÏÊ ÂÉÂÌÉÏÔÅËÅ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1309
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
+msgid "Accessing a corrupted shared library"
+msgstr "ïÂÒÁÝÅÎÉÅ Ë ÐÏ×ÒÅÖÄÅÎÎÏÊ ÒÁÚÄÅÌÑÅÍÏÊ ÂÉÂÌÉÏÔÅËÅ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1317
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
+msgid ".lib section in a.out corrupted"
+msgstr "óÅËÃÉÑ .lib × a.out ÐÏ×ÒÅÖÄÅÎÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1325
+msgid "Attempting to link in too many shared libraries"
+msgstr "ðÏÐÙÔËÁ ÐÏÄËÌÀÞÉÔØ ÓÌÉÛËÏÍ ÍÎÏÇÏ ÒÁÚÄÅÌÑÅÍÙÊ ÂÉÂÌÉÏÔÅË"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1333
+msgid "Cannot exec a shared library directly"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ×ÙÐÏÌÎÉÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÂÉÂÌÉÏÔÅËÕ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1341
+msgid "Streams pipe error"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1349
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
+msgid "Structure needs cleaning"
+msgstr "óÔÒÕËÔÕÒÕ ÎÅÏÂÈÏÄÉÍÏ ÐÏÞÉÓÔÉÔØ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1357
+msgid "Not a XENIX named type file"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1365
+msgid "No XENIX semaphores available"
+msgstr "óÅÍÁÆÏÒÙ XENIX ÎÅÄÏÓÔÕÐÎÙ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1373
+msgid "Is a named type file"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1381
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
+msgid "Remote I/O error"
+msgstr "ïÛÉÂËÁ ÕÄÁÌÅÎÎÏÇÏ ××ÏÄÁ/×Ù×ÏÄÁ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1389
+msgid "No medium found"
+msgstr "îÏÓÉÔÅÌØ ÎÅ ÎÁÊÄÅÎ"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:1397
+msgid "Wrong medium type"
+msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÔÉÐ ÎÏÓÉÔÅÌÑ"
+
+#: stdio-common/../sysdeps/unix/siglist.c:26
+msgid "Signal 0"
+msgstr "óÉÇÎÁÌ 0"
+
+#: stdio-common/../sysdeps/unix/siglist.c:32
+msgid "IOT trap"
+msgstr "ìÏ×ÕÛËÁ IOT"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
+msgid "Error 0"
+msgstr "ïÛÉÂËÁ 0"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
+#: nis/nis_error.c:40
+msgid "Not owner"
+msgstr "îÅ ×ÌÁÄÅÌÅÃ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
+msgid "I/O error"
+msgstr "ïÛÉÂËÁ ××ÏÄÁ/×Ù×ÏÄÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
+msgid "Arg list too long"
+msgstr "óÐÉÓÏË ÁÒÇÕÍÅÎÔÏ× ÓÌÉÛËÏÍ ÄÌÉÎÎÙÊ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
+msgid "Bad file number"
+msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÎÏÍÅÒ ÆÁÊÌÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
+msgid "Not enough space"
+msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÍÅÓÔÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
+msgid "Device busy"
+msgstr "õÓÔÒÏÊÓÔ×Ï ÚÁÎÑÔÏ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
+msgid "Cross-device link"
+msgstr "óÓÙÌËÁ ÍÅÖÄÕ ÕÓÔÒÏÊÓÔ×ÁÍÉ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
+msgid "File table overflow"
+msgstr "ðÅÒÅÐÏÌÎÅÎÉÅ ÔÁÂÌÉÃÙ ÆÁÊÌÏ×"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
+msgid "Argument out of domain"
+msgstr "áÇÒÕÍÅÎÔ ×ÎÅ ÄÉÁÐÁÚÏÎÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
+msgid "Result too large"
+msgstr "òÅÚÕÌØÔÁÔ ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
+msgid "Deadlock situation detected/avoided"
+msgstr "ôÕÐÉËÏ×ÁÑ ÓÉÔÕÁÃÉÑ ÏÂÎÁÒÕÖÅÎÁ/ÐÒÅÄÏÔ×ÒÁÝÅÎÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
+msgid "No record locks available"
+msgstr "îÅÔ ÄÏÓÔÕÐÎÙÈ ÂÌÏËÉÒÏ×ÏË ÚÁÐÉÓÅÊ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
+msgid "Disc quota exceeded"
+msgstr "ðÒÅ×ÙÛÅÎÁ ÄÉÓËÏ×ÁÑ Ë×ÏÔÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
+msgid "Bad exchange descriptor"
+msgstr ""
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
+msgid "Bad request descriptor"
+msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÄÅÓËÒÉÐÔÏÒ ÚÁÐÒÏÓÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
+msgid "Message tables full"
+msgstr "ôÁÂÌÉÃÙ ÓÏÏÂÝÅÎÉÊ ÐÅÒÅÐÏÌÎÅÎÙ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
+msgid "Anode table overflow"
+msgstr ""
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
+msgid "Bad request code"
+msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ËÏÄ ÚÁÐÒÏÓÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
+msgid "File locking deadlock"
+msgstr "ôÕÐÉË ÐÒÉ ÂÌÏËÉÒÏ×ËÅ ÆÁÊÌÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
+msgid "Error 58"
+msgstr "ïÛÉÂËÁ 58"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
+msgid "Error 59"
+msgstr "ïÛÉÂËÁ 59"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
+msgid "Not a stream device"
+msgstr "üÔÏ ÎÅ ÐÏÔÏÞÎÏÅ ÕÓÔÒÏÊÓÔ×Ï"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
+msgid "Out of stream resources"
+msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÏÔÏËÏ×ÙÈ ÒÅÓÕÒÓÏ×"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
+msgid "Error 72"
+msgstr "ïÛÉÂËÁ 72"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
+msgid "Error 73"
+msgstr "ïÛÉÂËÁ 73"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
+msgid "Error 75"
+msgstr "ïÛÉÂËÁ 75"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
+msgid "Error 76"
+msgstr "ïÛÉÂËÁ 76"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
+msgid "Not a data message"
+msgstr "üÔÏ ÎÅ ÓÏÏÂÝÅÎÉÅ Ó ÄÁÎÎÙÍÉ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
+msgid "Attempting to link in more shared libraries than system limit"
+msgstr "ðÏÐÙÔËÁ ÐÏÄËÌÀÞÉÔØ ÂÏÌØÛÅ ÒÁÚÄÅÌÑÅÍÙÈ ÂÉÂÌÉÏÔÅË, ÞÅÍ ÐÏÚ×ÏÌÑÅÔ ÓÉÓÔÅÍÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
+msgid "Can not exec a shared library directly"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ×ÙÐÏÌÎÉÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÂÉÂÌÉÏÔÅËÕ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
+msgid "Illegal byte sequence"
+msgstr "îÅ×ÅÒÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÂÁÊÔ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
+msgid "Operation not applicable"
+msgstr "ïÐÅÒÁÃÉÑ ÎÅÐÒÉÍÅÎÉÍÁ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
+msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
+msgstr "þÉÓÌÏ ÓÉÍ×ÏÌØÎÙÈ ÓÓÙÌÏË, ×ÓÔÒÅÞÅÎÙÈ ÐÒÉ ÏÂÈÏÄÅ ÐÕÔÉ, ÐÒÅ×ÏÓÈÏÄÉÔ MAXSYMLINKS"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
+msgid "Error 91"
+msgstr "ïÛÉÂËÁ 91"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
+msgid "Error 92"
+msgstr "ïÛÉÂËÁ 92"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
+msgid "Option not supported by protocol"
+msgstr "÷ÏÚÍÏÖÎÏÓÔØ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÐÒÏÔÏËÏÌÏÍ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
+msgid "Error 100"
+msgstr "ïÛÉÂËÁ 100"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
+msgid "Error 101"
+msgstr "ïÛÉÂËÁ 101"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
+msgid "Error 102"
+msgstr "ïÛÉÂËÁ 102"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
+msgid "Error 103"
+msgstr "ïÛÉÂËÁ 103"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
+msgid "Error 104"
+msgstr "ïÛÉÂËÁ 104"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
+msgid "Error 105"
+msgstr "ïÛÉÂËÁ 105"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
+msgid "Error 106"
+msgstr "ïÛÉÂËÁ 106"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
+msgid "Error 107"
+msgstr "ïÛÉÂËÁ 107"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
+msgid "Error 108"
+msgstr "ïÛÉÂËÁ 108"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
+msgid "Error 109"
+msgstr "ïÛÉÂËÁ 109"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
+msgid "Error 110"
+msgstr "ïÛÉÂËÁ 110"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
+msgid "Error 111"
+msgstr "ïÛÉÂËÁ 111"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
+msgid "Error 112"
+msgstr "ïÛÉÂËÁ 112"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
+msgid "Error 113"
+msgstr "ïÛÉÂËÁ 113"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
+msgid "Error 114"
+msgstr "ïÛÉÂËÁ 114"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
+msgid "Error 115"
+msgstr "ïÛÉÂËÁ 115"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
+msgid "Error 116"
+msgstr "ïÛÉÂËÁ 116"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
+msgid "Error 117"
+msgstr "ïÛÉÂËÁ 117"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
+msgid "Error 118"
+msgstr "ïÛÉÂËÁ 118"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
+msgid "Error 119"
+msgstr "ïÛÉÂËÁ 119"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
+msgid "Operation not supported on transport endpoint"
+msgstr "ïÐÅÒÁÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÎÁ ËÏÎÅÞÎÏÊ ÔÏÞËÅ ÐÅÒÅÄÁÞÉ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
+msgid "Address family not supported by protocol family"
+msgstr "óÅÍÅÊÓÔ×Ï ÁÄÒÅÓÏ× ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÓÅÍÅÊÓÔ×ÏÍ ÐÒÏÔÏËÏÌÏ×"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
+msgid "Network dropped connection because of reset"
+msgstr "óÅÔØ ÓÂÒÏÓÉÌÁ ÓÏÅÄÉÎÅÎÉÅ ÉÚ-ÚÁ ÐÅÒÅÚÁÇÒÕÚËÉ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
+msgid "Error 136"
+msgstr "ïÛÉÂËÁ 136"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
+msgid "Not a name file"
+msgstr ""
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
+msgid "Not available"
+msgstr "îÅÄÏÓÔÕÐÎÏ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
+msgid "Is a name file"
+msgstr ""
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
+msgid "Reserved for future use"
+msgstr "úÁÒÅÚÅÒ×ÉÒÏ×ÁÎÏ ÎÁ ÂÕÄÕÝÅÅ"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
+msgid "Error 142"
+msgstr "ïÛÉÂËÁ 142"
+
+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
+msgid "Cannot send after socket shutdown"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔÐÒÁ×ÉÔØ ÐÏÓÌÅ ×ÙËÌÀÞÅÎÉÑ ÓÏËÅÔÁ"
+
+#: stdio-common/psignal.c:63
+#, c-format
+msgid "%s%sUnknown signal %d\n"
+msgstr "%s%sîÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ %d\n"
+
+#: dlfcn/dlinfo.c:51
+msgid "RTLD_SELF used in code not dynamically loaded"
+msgstr "RTLD_SELF ÉÓÐÏÌØÚÏ×ÁÎÏ × ÎÅ ÄÉÎÁÍÉÞÅÓËÉ ÚÁÇÒÕÖÅÎÎÏÍ ËÏÄÅ"
+
+#: dlfcn/dlinfo.c:61
+msgid "unsupported dlinfo request"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÚÁÐÒÏÓ dlinfo"
+
+#: malloc/mcheck.c:346
+msgid "memory is consistent, library is buggy\n"
+msgstr "ÐÁÍÑÔØ × ÈÏÒÏÛÅÍ ÓÏÓÔÏÑÎÉÉ, ÏÛÉÂËÉ × ÂÉÂÌÉÏÔÅËÅ\n"
+
+#: malloc/mcheck.c:349
+msgid "memory clobbered before allocated block\n"
+msgstr "ÐÁÍÑÔØ ÚÁÔÅÒÔÁ ÐÅÒÅÄ ×ÙÄÅÌÅÎÎÙÍ ÂÌÏËÏÍ\n"
+
+#: malloc/mcheck.c:352
+msgid "memory clobbered past end of allocated block\n"
+msgstr "ÐÁÍÑÔØ ÚÁÔÅÒÔÁ ÐÏÓÌÅ ËÏÎÃÁ ×ÙÄÅÌÅÎÎÏÇÏ ÂÌÏËÁ\n"
+
+#: malloc/mcheck.c:355
+msgid "block freed twice\n"
+msgstr "ÂÌÏË ÏÓ×ÏÂÏÖÄÅÎ Ä×ÁÖÄÙ\n"
+
+#: malloc/mcheck.c:358
+msgid "bogus mcheck_status, library is buggy\n"
+msgstr "ÎÅÁÄÅË×ÁÔÎÙÊ mcheck_status, × ÂÉÂÌÉÏÔÅËÅ ÏÛÉÂËÉ\n"
+
+#: malloc/memusagestat.c:53
+msgid "Name output file"
+msgstr "éÍÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+
+#: malloc/memusagestat.c:54
+msgid "Title string used in output graphic"
+msgstr "úÁÇÏÌÏ×ÏË ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÇÒÁÆÉËÁ"
+
+#: malloc/memusagestat.c:55
+msgid "Generate output linear to time (default is linear to number of function calls)"
+msgstr "çÅÎÅÒÉÒÏ×ÁÔØ ×Ù×ÏÄ ÌÉÎÅÊÎÏ ÏÔÎÏÓÉÔÅÌØÎÏ ×ÒÅÍÅÎÉ (ÐÏ ÕÍÏÌÞÁÎÉÀ ÌÉÎÅÊÎÏ ÏÔÎÏÓÉÔÅÌØÎÏ ÞÉÓÌÕ ×ÙÚÏ×Ï× ÆÕÎËÃÉÊ)"
+
+#: malloc/memusagestat.c:57
+msgid "Also draw graph for total memory consumption"
+msgstr "ðÏÓÔÒÏÉÔØ ÔÁËÖÅ ÇÒÁÆÉË ÉÔÏÇÏ×ÏÇÏ ÐÏÔÒÅÂÌÅÎÉÑ ÐÁÍÑÔÉ"
+
+#: malloc/memusagestat.c:58
+msgid "make output graphic VALUE pixel wide"
+msgstr "ÒÉÓÏ×ÁÔØ ÇÒÁÆÉË ÛÉÒÉÎÏÊ × VALUE ÐÉËÓÅÌÏ×"
+
+#: malloc/memusagestat.c:59
+msgid "make output graphic VALUE pixel high"
+msgstr "ÒÉÓÏ×ÁÔØ ÇÒÁÆÉË ×ÙÓÏÔÏÊ × VALUE ÐÉËÓÅÌÏ×"
+
+#: malloc/memusagestat.c:64
+msgid "Generate graphic from memory profiling data"
+msgstr "óÇÅÎÅÒÉÒÏ×ÁÔØ ÇÒÁÆÉË ÐÏ ÄÁÎÎÙÍ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÑ ÐÁÍÑÔÉ"
+
+#: malloc/memusagestat.c:67
+msgid "DATAFILE [OUTFILE]"
+msgstr "æáêì-äáîîùè [÷ùèïäîïê-æáêì]"
+
+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
+msgid "Unknown error"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ"
+
+#: string/strsignal.c:69
+#, c-format
+msgid "Real-time signal %d"
+msgstr "óÉÇÎÁÌ ÒÅÁÌØÎÏÇÏ ×ÒÅÍÅÎÉ %d"
+
+#: string/strsignal.c:73
+#, c-format
+msgid "Unknown signal %d"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ %d"
+
+#: timezone/zdump.c:176
+#, c-format
+msgid "%s: usage is %s [ --version ] [ -v ] [ -c cutoff ] zonename ...\n"
+msgstr "%s: ÉÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ --version ] [ -v ] [ -c cutoff ] ÉÍÑ-ÚÏÎÙ ...\n"
+
+#: timezone/zdump.c:269
+msgid "Error writing standard output"
+msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ"
+
+#: timezone/zic.c:361
+#, c-format
+msgid "%s: Memory exhausted: %s\n"
+msgstr "%s: ðÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ: %s\n"
+
+#: timezone/zic.c:386 misc/error.c:129 misc/error.c:157
+msgid "Unknown system error"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
+
+#: timezone/zic.c:420
+#, c-format
+msgid "\"%s\", line %d: %s"
+msgstr "\"%s\", ÓÔÒÏËÁ %d: %s"
+
+#: timezone/zic.c:423
+#, c-format
+msgid " (rule from \"%s\", line %d)"
+msgstr " (ÐÒÁ×ÉÌÏ ÉÚ \"%s\", ÓÔÒÏËÁ %d)"
+
+#: timezone/zic.c:435
+msgid "warning: "
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
+
+#: timezone/zic.c:445
+#, c-format
+msgid ""
+"%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
+msgstr ""
+"%s: ÉÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ --version ] [ -s ] [ -v ] [ -l ÍÅÓÔÎÏÅ-×ÒÅÍÑ ] [ -p ÐÒÁ×ÉÌÁ-posix ] \\\n"
+"\t[ -d ËÁÔÁÌÏÇ ] [ -L ×ÉÓÏËÏÓÎÙÅ-ÓÅËÕÎÄÙ ] [ -y yearistype ] [ ÉÍÑ-ÆÁÊÌÁ ... ]\n"
+
+#: timezone/zic.c:492
+#, c-format
+msgid "%s: More than one -d option specified\n"
+msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -d\n"
+
+#: timezone/zic.c:502
+#, c-format
+msgid "%s: More than one -l option specified\n"
+msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -l\n"
+
+#: timezone/zic.c:512
+#, c-format
+msgid "%s: More than one -p option specified\n"
+msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -p\n"
+
+#: timezone/zic.c:522
+#, c-format
+msgid "%s: More than one -y option specified\n"
+msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -y\n"
+
+#: timezone/zic.c:532
+#, c-format
+msgid "%s: More than one -L option specified\n"
+msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -L\n"
+
+#: timezone/zic.c:639
+#, c-format
+msgid "%s: Can't unlink  %s: %s\n"
+msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÓÓÙÌËÕ  %s: %s\n"
+
+#: timezone/zic.c:646
+msgid "hard link failed, symbolic link used"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÄÅÌÁÔØ ÖÅÓÔËÕÀ ÓÓÙÌËÕ, ÉÓÐÏÌØÚÕÅÔÓÑ ÓÉÍ×ÏÌØÎÁÑ"
+
+#: timezone/zic.c:654
+#, c-format
+msgid "%s: Can't link from %s to %s: %s\n"
+msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÓÓÙÌËÕ Ó %s ÎÁ %s: %s\n"
+
+#: timezone/zic.c:752 timezone/zic.c:754
+msgid "same rule name in multiple files"
+msgstr "ÏÄÉÎÁËÏ×ÏÅ ÉÍÑ ÐÒÁ×ÉÌÁ × ÎÅÓËÏÌØËÉÈ ÆÁÊÌÁÈ"
+
+#: timezone/zic.c:795
+msgid "unruly zone"
+msgstr "ÎÅ ÐÏÄÞÉÎÑÀÝÁÑÓÑ ÐÒÁ×ÉÌÁÍ ÚÏÎÁ"
+
+#: timezone/zic.c:802
+#, c-format
+msgid "%s in ruleless zone"
+msgstr "%s × ÚÏÎÅ ÂÅÚ ÐÒÁ×ÉÌ"
+
+#: timezone/zic.c:823
+msgid "standard input"
+msgstr "ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ"
+
+#: timezone/zic.c:828
+#, c-format
+msgid "%s: Can't open %s: %s\n"
+msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ %s: %s\n"
+
+#: timezone/zic.c:839
+msgid "line too long"
+msgstr "ÓÔÒÏËÁ ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ"
+
+#: timezone/zic.c:859
+msgid "input line of unknown type"
+msgstr "×ÈÏÄÎÁÑ ÓÔÒÏËÁ ÎÅÉÚ×ÅÓÔÎÏÇÏ ÔÉÐÁ"
+
+#: timezone/zic.c:875
+#, c-format
+msgid "%s: Leap line in non leap seconds file %s\n"
+msgstr "%s: ÷ÉÓÏËÏÓÎÁÑ ÓÔÒÏËÁ ×ÅË ÆÁÊÌÁ ×ÉÓÏËÏÓÎÙÈ ÓÅËÕÎÄ %s\n"
+
+#: timezone/zic.c:882 timezone/zic.c:1297 timezone/zic.c:1322
+#, c-format
+msgid "%s: panic: Invalid l_value %d\n"
+msgstr "%s: ÐÁÎÉËÁ: îÅÄÏÐÕÓÔÉÍÏÅ l_value %d\n"
+
+#: timezone/zic.c:890
+#, c-format
+msgid "%s: Error reading %s\n"
+msgstr "%s: ïÛÉÂËÁ ÞÔÅÎÉÑ %s\n"
+
+#: timezone/zic.c:897
+#, c-format
+msgid "%s: Error closing %s: %s\n"
+msgstr "%s: ïÛÉÂËÁ ÚÁËÒÙÔÉÑ %s: %s\n"
+
+#: timezone/zic.c:902
+msgid "expected continuation line not found"
+msgstr "ÏÖÉÄÁÅÍÁÑ ÓÔÒÏËÁ ÐÒÏÄÏÌÖÅÎÉÑ ÎÅ ÎÁÊÄÅÎÁ"
+
+#: timezone/zic.c:958
+msgid "wrong number of fields on Rule line"
+msgstr "ÎÅÐÒÁ×ÉÌØÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ Rule"
+
+#: timezone/zic.c:962
+msgid "nameless rule"
+msgstr "ÂÅÚÙÍÑÎÎÏÅ ÐÒÁ×ÉÌÏ"
+
+#: timezone/zic.c:967
+msgid "invalid saved time"
+msgstr "ÎÅ×ÅÒÎÏÅ ÓÏÈÒÁÎÅÎÎÏÅ ×ÒÅÍÑ"
+
+#: timezone/zic.c:986
+msgid "wrong number of fields on Zone line"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ Zone"
+
+#: timezone/zic.c:992
+#, c-format
+msgid "\"Zone %s\" line and -l option are mutually exclusive"
+msgstr "ÓÔÒÏËÁ \"Zone %s\" É ËÌÀÞ -l ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔÓÑ"
+
+#: timezone/zic.c:1000
+#, c-format
+msgid "\"Zone %s\" line and -p option are mutually exclusive"
+msgstr "ÓÔÒÏËÁ \"Zone %s\" É ËÌÀÞ -p ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔÓÑ"
+
+#: timezone/zic.c:1012
+#, c-format
+msgid "duplicate zone name %s (file \"%s\", line %d)"
+msgstr "ÐÏ×ÔÏÒÎÏÅ ÉÍÑ ÚÏÎÙ %s (ÆÁÊÌ \"%s\", ÓÔÒÏËÁ %d)"
+
+#: timezone/zic.c:1028
+msgid "wrong number of fields on Zone continuation line"
+msgstr "ÎÅÐÒÁ×ÉÌØÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ ÐÒÏÄÏÌÖÅÎÉÑ Zone"
+
+#: timezone/zic.c:1068
+msgid "invalid UTC offset"
+msgstr "ÎÅ×ÅÒÎÏÅ ÓÍÅÝÅÎÉÅ ÏÔ UTC"
+
+#: timezone/zic.c:1071
+msgid "invalid abbreviation format"
+msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÓÏËÒÁÝÅÎÉÑ"
+
+#: timezone/zic.c:1097
+msgid "Zone continuation line end time is not after end time of previous line"
+msgstr "ËÏÎÅÞÎÏÅ ×ÒÅÍÑ × ÓÔÒÏËÅ ÐÒÏÄÏÌÖÅÎÉÑ Zone ÎÅ ÐÏÚÄÎÅÅ ËÏÎÅÞÎÏÇÏ ×ÒÅÍÅÎÉ × ÐÒÅÄÙÄÕÝÅÊ ÓÔÒÏËÅ"
+
+#: timezone/zic.c:1124
+msgid "wrong number of fields on Leap line"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ Leap"
+
+#: timezone/zic.c:1133
+msgid "invalid leaping year"
+msgstr "ÎÅ×ÅÒÎÙÊ ×ÉÓÏËÏÓÎÙÊ ÇÏÄ"
+
+#: timezone/zic.c:1148 timezone/zic.c:1252
+msgid "invalid month name"
+msgstr "ÎÅ×ÅÒÎÏÅ ÎÁÚ×ÁÎÉÅ ÍÅÓÑÃÁ"
+
+#: timezone/zic.c:1161 timezone/zic.c:1374 timezone/zic.c:1388
+msgid "invalid day of month"
+msgstr "ÎÅ×ÅÒÎÙÊ ÄÅÎØ ÍÅÓÑÃÁ"
+
+#: timezone/zic.c:1166
+msgid "time before zero"
+msgstr "×ÒÅÍÑ ÄÏ ÎÕÌÑ"
+
+#: timezone/zic.c:1170
+msgid "time too small"
+msgstr "×ÒÅÍÑ ÓÌÉÛËÏÍ ÍÁÌÏ"
+
+#: timezone/zic.c:1174
+msgid "time too large"
+msgstr "×ÒÅÍÑ ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+
+#: timezone/zic.c:1178 timezone/zic.c:1281
+msgid "invalid time of day"
+msgstr "ÎÅ×ÅÒÎÏÅ ×ÒÅÍÑ ÄÎÑ"
+
+#: timezone/zic.c:1197
+msgid "illegal CORRECTION field on Leap line"
+msgstr "ÎÅ×ÅÒÎÏÅ ÐÏÌÅ CORRECTION × ÓÔÒÏËÅ Leap"
+
+#: timezone/zic.c:1201
+msgid "illegal Rolling/Stationary field on Leap line"
+msgstr "ÎÅ×ÅÒÎÏÅ ÐÏÌÅ Rolling/Stationary × ÓÔÒÏËÅ Leap"
+
+#: timezone/zic.c:1216
+msgid "wrong number of fields on Link line"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ Link"
+
+#: timezone/zic.c:1220
+msgid "blank FROM field on Link line"
+msgstr "ÐÕÓÔÏÅ ÐÏÌÅ FROM × ÓÔÒÏËÅ Link"
+
+#: timezone/zic.c:1224
+msgid "blank TO field on Link line"
+msgstr "ÐÕÓÔÏÅ ÐÏÌÅ TO × ÓÔÒÏËÅ Link"
+
+#: timezone/zic.c:1301
+msgid "invalid starting year"
+msgstr "ÎÅ×ÅÒÎÙÊ ÎÁÞÁÌØÎÙÊ ÇÏÄ"
+
+#: timezone/zic.c:1305
+msgid "starting year too low to be represented"
+msgstr "ÎÁÞÁÌØÎÙÊ ÇÏÄ ÓÌÉÛËÏÍ ÍÁÌ É ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
+
+#: timezone/zic.c:1307
+msgid "starting year too high to be represented"
+msgstr "ÎÁÞÁÌØÎÙÊ ÇÏÄ ÓÌÉÛËÏÍ ×ÅÌÉË É ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
+
+#: timezone/zic.c:1326
+msgid "invalid ending year"
+msgstr "ÎÅ×ÅÒÎÙÊ ËÏÎÅÞÎÙÊ ÇÏÄ"
+
+#: timezone/zic.c:1330
+msgid "ending year too low to be represented"
+msgstr "ËÏÎÅÞÎÙÊ ÇÏÄ ÓÌÉÛËÏÍ ÍÁÌ É ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
+
+#: timezone/zic.c:1332
+msgid "ending year too high to be represented"
+msgstr "ËÏÎÅÞÎÙÊ ÇÏÄ ÓÌÉÛËÏÍ ×ÅÌÉË É ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
+
+#: timezone/zic.c:1335
+msgid "starting year greater than ending year"
+msgstr "ÎÁÞÁÌØÎÙÊ ÇÏÄ ÂÏÌØÛÅ ËÏÎÅÞÎÏÇÏ"
+
+#: timezone/zic.c:1342
+msgid "typed single year"
+msgstr "ÏÄÉÎ ÔÉÐÉÚÉÒÏ×ÁÎÎÙÊ ÇÏÄ"
+
+#: timezone/zic.c:1379
+msgid "invalid weekday name"
+msgstr "ÎÅ×ÅÒÎÏÅ ÎÁÚ×ÁÎÉÑ ÄÎÑ ÎÅÄÅÌÉ"
+
+#: timezone/zic.c:1494
+#, c-format
+msgid "%s: Can't remove %s: %s\n"
+msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ %s: %s\n"
+
+#: timezone/zic.c:1504
+#, c-format
+msgid "%s: Can't create %s: %s\n"
+msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ %s: %s\n"
+
+#: timezone/zic.c:1570
+#, c-format
+msgid "%s: Error writing %s\n"
+msgstr "%s: ïÛÉÂËÁ ÚÁÐÉÓÉ %s\n"
+
+#: timezone/zic.c:1760
+msgid "can't determine time zone abbreviation to use just after until time"
+msgstr ""
+
+#: timezone/zic.c:1803
+msgid "too many transitions?!"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÐÅÒÅÈÏÄÏ×?!"
+
+#: timezone/zic.c:1822
+msgid "internal error - addtype called with bad isdst"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ -- addtype ×ÙÚ×ÁÎÁ Ó ÎÅÐÒÁ×ÉÌØÎÙÍ isdst"
+
+#: timezone/zic.c:1826
+msgid "internal error - addtype called with bad ttisstd"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ -- addtype ×ÙÚ×ÁÎÁ Ó ÎÅÐÒÁ×ÉÌØÎÙÍ ttisstd"
+
+#: timezone/zic.c:1830
+msgid "internal error - addtype called with bad ttisgmt"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ -- addtype ×ÙÚ×ÁÎÁ Ó ÎÅÐÒÁ×ÉÌØÎÙÍ ttisgmt"
+
+#: timezone/zic.c:1849
+msgid "too many local time types"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÔÉÐÏ× ÍÅÓÔÎÏÇÏ ×ÒÅÍÅÎÉ"
+
+#: timezone/zic.c:1877
+msgid "too many leap seconds"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ×ÉÓÏËÏÓÎÙÈ ÓÅËÕÎÄ"
+
+#: timezone/zic.c:1883
+msgid "repeated leap second moment"
+msgstr "ÐÏ×ÔÏÒÑÀÝÉÊÓÑ ÍÏÍÅÎÔ ×ÉÓÏËÏÓÎÏÊ ÓÅËÕÎÄÙ"
+
+#: timezone/zic.c:1935
+msgid "Wild result from command execution"
+msgstr "îÅÁÄÅË×ÁÔÎÙÊ ÒÅÚÕÌØÔÁÔ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄÙ"
+
+#: timezone/zic.c:1936
+#, c-format
+msgid "%s: command was '%s', result was %d\n"
+msgstr "%s: ËÏÍÁÎÄÁ ÂÙÌÁ '%s', ÒÅÚÕÌØÔÁÔ ÂÙÌ %d\n"
+
+#: timezone/zic.c:2031
+msgid "Odd number of quotation marks"
+msgstr "îÅÞÅÔÎÏÅ ÞÉÓÌÏ ËÁ×ÙÞÅË"
+
+#: timezone/zic.c:2051 timezone/zic.c:2070
+msgid "time overflow"
+msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ×ÒÅÍÅÎÉ"
+
+#: timezone/zic.c:2117
+msgid "use of 2/29 in non leap-year"
+msgstr "ÉÓÐÏÌØÚÏ×ÁÎÉÅ 29 ÆÅ×ÒÁÌÑ × ÎÅ×ÉÓÏËÏÓÎÏÍ ÇÏÄÕ"
+
+#: timezone/zic.c:2151
+msgid "no day in month matches rule"
+msgstr "ÎÉ ÏÄÉÎ ÄÅÎØ × ÍÅÓÑÃÅ ÎÅ ÐÏÄÈÏÄÉÔ ÐÏÄ ÐÒÁ×ÉÌÏ"
+
+#: timezone/zic.c:2175
+msgid "too many, or too long, time zone abbreviations"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏËÒÁÝÅÎÉÊ ÞÁÓÏ×ÙÈ ÐÏÑÓÏ× ÉÌÉ ÏÎÉ ÓÌÉÛËÏÍ ÄÌÉÎÎÙÅ"
+
+#: timezone/zic.c:2216
+#, c-format
+msgid "%s: Can't create directory %s: %s\n"
+msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ %s: %s\n"
+
+#: timezone/zic.c:2238
+#, c-format
+msgid "%s: %d did not sign extend correctly\n"
+msgstr "%s: %d ÎÅ ÓÏÈÒÁÎÉÌÏ ÚÎÁË ÐÒÉ ÒÁÓÛÉÒÅÎÉÉ\n"
+
+#: posix/../sysdeps/generic/wordexp.c:1797
+msgid "parameter null or not set"
+msgstr "ÐÁÒÁÍÅÔÒ ÐÕÓÔ ÉÌÉ ÎÅ ÚÁÄÁÎ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:31
+msgid "Address family for hostname not supported"
+msgstr "óÅÍÅÊÓÔ×Ï ÁÄÒÅÓÏ× ÎÅ ÐÏÄÄÅÒÖÉ×ÁÔÓÑ ÄÌÑ ÄÁÎÎÏÇÏ ÉÍÅÎÉ ÈÏÓÔÁ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:32
+msgid "Temporary failure in name resolution"
+msgstr "÷ÒÅÍÅÎÎÙÊ ÓÂÏÊ × ÒÁÚÒÅÛÅÎÉÉ ÉÍÅÎ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:33
+msgid "Bad value for ai_flags"
+msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ai_flags"
+
+#: posix/../sysdeps/posix/gai_strerror.c:34
+msgid "Non-recoverable failure in name resolution"
+msgstr "îÅÉÓÐÒÁ×ÉÍÁÑ ÏÛÉÂËÁ × ÒÁÚÒÅÛÅÎÉÉ ÉÍÅÎ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:35
+msgid "ai_family not supported"
+msgstr "ai_family ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:36
+msgid "Memory allocation failure"
+msgstr "ïÛÉÂËÁ ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:37
+msgid "No address associated with hostname"
+msgstr "ó ÉÍÅÎÅÍ ÈÏÓÔÁ ÎÅ Ó×ÑÚÁÎÏ ÎÉ ÏÄÎÏÇÏ ÁÄÒÅÓÁ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:38
+msgid "Name or service not known"
+msgstr "éÍÑ ÉÌÉ ÓÌÕÖÂÁ ÎÅ ÉÚ×ÅÓÔÎÙ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:39
+msgid "Servname not supported for ai_socktype"
+msgstr "Servname ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ ai_socktype"
+
+#: posix/../sysdeps/posix/gai_strerror.c:40
+msgid "ai_socktype not supported"
+msgstr "ai_socktype ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:41
+msgid "System error"
+msgstr "óÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:42
+msgid "Processing request in progress"
+msgstr "ïÂÒÁÂÏÔËÁ ÚÁÐÒÏÓÁ ÐÒÏÄÏÌÖÁÅÔÓÑ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:43
+msgid "Request canceled"
+msgstr "úÁÐÒÏÓ ÏÔÍÅÎÅÎ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:44
+msgid "Request not canceled"
+msgstr "úÁÐÒÏÓ ÎÅ ÏÔÍÅÎÅÎ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:45
+msgid "All requests done"
+msgstr "÷ÓÅ ÚÁÐÒÏÓÙ ×ÙÐÏÌÎÅÎÙ"
+
+#: posix/../sysdeps/posix/gai_strerror.c:46
+msgid "Interrupted by a signal"
+msgstr "ðÒÅÒ×ÁÎÏ ÐÏ ÓÉÇÎÁÌÕ"
+
+#: posix/getconf.c:892
+#, c-format
+msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [-v ÓÐÅÃÉÆÉËÁÃÉÑ] ÉÍÑ-ÐÅÒÅÍÅÎÎÏÊ [ÐÕÔØ]\n"
+
+#: posix/getconf.c:950
+#, c-format
+msgid "unknown specification \"%s\""
+msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ \"%s\""
+
+#: posix/getconf.c:979 posix/getconf.c:995
+msgid "undefined"
+msgstr "ÎÅ ÏÐÒÅÄÅÌÅÎÏ"
+
+#: posix/getconf.c:1017
+#, c-format
+msgid "Unrecognized variable `%s'"
+msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ `%s'"
+
+#: posix/getopt.c:692 posix/getopt.c:711
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: ËÌÀÞ `%s' ÎÅÏÄÎÏÚÎÁÞÅÎ\n"
+
+#: posix/getopt.c:744 posix/getopt.c:748
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `--%s' ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
+
+#: posix/getopt.c:757 posix/getopt.c:762
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `%c%s' ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
+
+#: posix/getopt.c:807 posix/getopt.c:829 posix/getopt.c:1159
+#: posix/getopt.c:1181
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: ËÌÀÞ `%s' ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ\n"
+
+#: posix/getopt.c:867 posix/getopt.c:870
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ËÌÀÞ `--%s'\n"
+
+#: posix/getopt.c:878 posix/getopt.c:881
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ËÌÀÞ `%c%s'\n"
+
+#: posix/getopt.c:936 posix/getopt.c:939
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n"
+
+#: posix/getopt.c:945 posix/getopt.c:948
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
+
+#: posix/getopt.c:1003 posix/getopt.c:1022 posix/getopt.c:1234
+#: posix/getopt.c:1255
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ËÌÀÞ ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ -- %c\n"
+
+#: posix/getopt.c:1074 posix/getopt.c:1093
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: ËÌÀÞ `-W %s' ÎÅÏÄÎÏÚÎÁÞÅÎ\n"
+
+#: posix/getopt.c:1117 posix/getopt.c:1138
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `-W %s' ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
+
+#: posix/regcomp.c:150
+msgid "No match"
+msgstr "îÅÔ ÓÏ×ÐÁÄÅÎÉÑ"
+
+#: posix/regcomp.c:153
+msgid "Invalid regular expression"
+msgstr "îÅ×ÅÒÎÏÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ"
+
+#: posix/regcomp.c:156
+msgid "Invalid collation character"
+msgstr "îÅ×ÅÒÎÙÊ ÚÎÁË ÓÏÒÔÉÒÏ×ËÉ"
+
+#: posix/regcomp.c:159
+msgid "Invalid character class name"
+msgstr "îÅ×ÅÒÎÏÅ ÉÍÑ ËÌÁÓÓÁ ÚÎÁËÏ×"
+
+#: posix/regcomp.c:162
+msgid "Trailing backslash"
+msgstr "ïÂÒÁÔÎÁÑ ËÏÓÁÑ ÞÅÒÔÁ × ËÏÎÃÅ"
+
+#: posix/regcomp.c:165
+msgid "Invalid back reference"
+msgstr "îÅ×ÅÒÎÁÑ ÓÓÙÌËÁ ÎÁÚÁÄ"
+
+#: posix/regcomp.c:168
+msgid "Unmatched [ or [^"
+msgstr "îÅÐÁÒÎÁÑ [ ÉÌÉ [^"
+
+#: posix/regcomp.c:171
+msgid "Unmatched ( or \\("
+msgstr "îÅÐÁÒÎÁÑ ( ÉÌÉ \\("
+
+#: posix/regcomp.c:174
+msgid "Unmatched \\{"
+msgstr "îÅÐÁÒÎÁÑ \\{"
+
+#: posix/regcomp.c:177
+msgid "Invalid content of \\{\\}"
+msgstr "îÅ×ÅÒÎÏÅ ÓÏÄÅÒÖÉÍÏÅ × \\{\\}"
+
+#: posix/regcomp.c:180
+msgid "Invalid range end"
+msgstr "îÅ×ÅÒÎÙÊ ËÏÎÅà ÄÉÁÐÁÚÏÎÁ"
+
+#: posix/regcomp.c:183
+msgid "Memory exhausted"
+msgstr "ðÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
+
+#: posix/regcomp.c:186
+msgid "Invalid preceding regular expression"
+msgstr "îÅ×ÅÒÎÏÅ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ"
+
+#: posix/regcomp.c:189
+msgid "Premature end of regular expression"
+msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ"
+
+#: posix/regcomp.c:192
+msgid "Regular expression too big"
+msgstr "òÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+
+#: posix/regcomp.c:195
+msgid "Unmatched ) or \\)"
+msgstr "îÅÐÁÒÎÁÑ ) ÉÌÉ \\)"
+
+#: posix/regcomp.c:661
+msgid "No previous regular expression"
+msgstr "îÅÔ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÇÏ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ"
+
+#: argp/argp-help.c:224
+#, c-format
+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+msgstr "%.*s: ÐÁÒÁÍÅÔÒ ARGP_HELP_FMT ÔÒÅÂÕÅÔ ÚÎÁÞÅÎÉÅ"
+
+#: argp/argp-help.c:233
+#, c-format
+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+msgstr "%.*s: ÎÅÉÚ×ÅÓÔÎÙÊ ÐÁÒÁÍÅÔÒ ARGP_HELP_FMT"
+
+#: argp/argp-help.c:245
+#, c-format
+msgid "Garbage in ARGP_HELP_FMT: %s"
+msgstr "íÕÓÏÒ × ARGP_HELP_FMT: %s"
+
+#: argp/argp-help.c:1205
+msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+msgstr "ïÂÑÚÁÔÅÌØÎÙÅ ÉÌÉ ÎÅÏÂÑÚÁÔÅÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÄÌÉÎÎÙÈ ËÌÀÞÅÊ ÔÁËÖÅ Ñ×ÌÑÀÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍÉ ÉÌÉ ÎÅÏÂÑÚÁÔÅÌØÎÙÍÉ ÄÌÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ËÏÒÏÔËÉÈ ËÌÀÞÅÊ."
+
+#: argp/argp-help.c:1592
+msgid "Usage:"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ:"
+
+#: argp/argp-help.c:1596
+msgid "  or: "
+msgstr "  ÉÌÉ: "
+
+#: argp/argp-help.c:1608
+msgid " [OPTION...]"
+msgstr " [ëìàþ...]"
+
+#: argp/argp-help.c:1635
+#, c-format
+msgid "Try `%s --help' or `%s --usage' for more information.\n"
+msgstr "ðÏÐÒÏÂÕÊÔÅ `%s --help' ÉÌÉ `%s --usage' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ.\n"
+
+#: argp/argp-help.c:1663
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "óÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ ÐÏ ÁÄÒÅÓÕ %s.\n"
+
+#: argp/argp-parse.c:115
+msgid "Give this help list"
+msgstr "÷ÙÄÁÅÔ ÜÔÏÔ ÓÐÒÁ×ÏÞÎÙÊ ÓÐÉÓÏË"
+
+#: argp/argp-parse.c:116
+msgid "Give a short usage message"
+msgstr "÷ÙÄÁÅÔ ËÒÁÔËÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÉÓÐÏÌØÚÏ×ÁÎÉÉ"
+
+#: argp/argp-parse.c:117
+msgid "Set the program name"
+msgstr "õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÍÑ ÐÒÏÇÒÁÍÍÙ"
+
+#: argp/argp-parse.c:119
+msgid "Hang for SECS seconds (default 3600)"
+msgstr "÷ÉÓÉÔ ÕËÁÚÁÎÎÏÅ ÞÉÓÌÏ ÓÅËÕÎÄ (ÐÏ ÕÍÏÌÞÁÎÉÀ 3600)"
+
+#: argp/argp-parse.c:180
+msgid "Print program version"
+msgstr "ðÅÞÁÔÁÅÔ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ"
+
+#: argp/argp-parse.c:196
+msgid "(PROGRAM ERROR) No version known!?"
+msgstr "(ïûéâëá ðòïçòáííù) ÷ÅÒÓÉÑ ÎÅÉÚ×ÅÓÔÎÁ!?"
+
+#: argp/argp-parse.c:672
+#, c-format
+msgid "%s: Too many arguments\n"
+msgstr "%s: óÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ×\n"
+
+#: argp/argp-parse.c:813
+msgid "(PROGRAM ERROR) Option should have been recognized!?"
+msgstr "(ïûéâëá ðòïçòáííù) ëÌÀÞ ÄÏÌÖÅÎ ÂÙÔØ ÒÁÓÐÏÚÎÁÎ!?"
+
+#: resolv/herror.c:68
+msgid "Resolver Error 0 (no error)"
+msgstr "ïÛÉÂËÁ ÒÅÓÏÌ×ÅÒÁ 0 (ÎÅÔ ÏÛÉÂËÉ)"
+
+#: resolv/herror.c:69
+msgid "Unknown host"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÈÏÓÔ"
+
+#: resolv/herror.c:70
+msgid "Host name lookup failure"
+msgstr "óÂÏÊ ÐÏÉÓËÁ ÉÍÅÎÉ ÈÏÓÔÁ"
+
+#: resolv/herror.c:71
+msgid "Unknown server error"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ÓÅÒ×ÅÒÁ"
+
+#: resolv/herror.c:72
+msgid "No address associated with name"
+msgstr "ó ÉÍÅÎÅÍ ÎÅ Ó×ÑÚÁÎÏ ÎÉ ÏÄÎÏÇÏ ÁÄÒÅÓÁ"
+
+#: resolv/herror.c:108
+msgid "Resolver internal error"
+msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ ÒÅÓÏÌ×ÅÒÁ"
+
+#: resolv/herror.c:111
+msgid "Unknown resolver error"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ÒÅÓÏÌ×ÅÒÁ"
+
+#: resolv/res_hconf.c:147
+#, c-format
+msgid "%s: line %d: expected service, found `%s'\n"
+msgstr "%s: ÓÔÒÏËÁ %d: ÏÖÉÄÁÅÔÓÑ ÓÌÕÖÂÁ, ÎÁÊÄÅÎÏ `%s'\n"
+
+#: resolv/res_hconf.c:165
+#, c-format
+msgid "%s: line %d: cannot specify more than %d services"
+msgstr "%s: ÓÔÒÏËÁ %d: ÎÅÌØÚÑ ÚÁÄÁÔØ ÂÏÌÅÅ ÞÅÍ %d ÓÌÕÖÂ"
+
+#: resolv/res_hconf.c:191
+#, c-format
+msgid "%s: line %d: list delimiter not followed by keyword"
+msgstr "%s: ÓÔÒÏËÁ %d: ÐÏÓÌÅ ÒÁÚÄÅÌÉÔÅÌÑ ÓÐÉÓËÁ ÎÅ ÓÔÏÉÔ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï"
+
+#: resolv/res_hconf.c:231
+#, c-format
+msgid "%s: line %d: cannot specify more than %d trim domains"
+msgstr ""
+
+#: resolv/res_hconf.c:256
+#, c-format
+msgid "%s: line %d: list delimiter not followed by domain"
+msgstr "%s: ÓÔÒÏËÁ %d: ÐÏÓÌÅ ÒÁÚÄÅÌÉÔÅÌÑ ÓÐÉÓËÁ ÎÅ ÓÔÏÉÔ ÄÏÍÅÎ"
+
+#: resolv/res_hconf.c:319
+#, c-format
+msgid "%s: line %d: expected `on' or `off', found `%s'\n"
+msgstr "%s: ÓÔÒÏËÁ %d: ÏÖÉÄÁÅÔÓÑ `on' ÉÌÉ `off', ÎÁÊÄÅÎÏ `%s'\n"
+
+#: resolv/res_hconf.c:366
+#, c-format
+msgid "%s: line %d: bad command `%s'\n"
+msgstr "%s: ÓÔÒÏËÁ %d: ÎÅÐÒÁ×ÉÌØÎÁÑ ËÏÍÁÎÄÁ `%s'\n"
+
+#: resolv/res_hconf.c:395
+#, c-format
+msgid "%s: line %d: ignoring trailing garbage `%s'\n"
+msgstr "%s: ÓÔÒÏËÁ %d: ÉÇÎÏÒÉÒÏ×ÁÎ ÍÕÓÏÒ × ËÏÎÃÅ `%s'\n"
+
+#: nss/getent.c:51
+msgid "database [key ...]"
+msgstr "ÂÁÚÁ-ÄÁÎÎÙÈ [ËÌÀÞ ...]"
+
+#: nss/getent.c:56
+msgid "Service configuration to be used"
+msgstr "éÓÐÏÌØÚÕÅÍÁÑ ËÏÎÆÉÇÕÒÁÃÉÑ ÓÌÕÖÂÙ"
+
+#: nss/getent.c:136 nss/getent.c:375
+#, c-format
+msgid "Enumeration not supported on %s\n"
+msgstr "ðÅÒÅÞÉÓÌÅÎÉÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ %s\n"
+
+#: nss/getent.c:800
+msgid "getent - get entries from administrative database."
+msgstr "getent -- ÐÏÌÕÞÁÅÔ ÚÁÐÉÓÉ ÉÚ ÁÄÍÉÎÉÓÔÒÁÔÉ×ÎÏÊ ÂÁÚÙ ÄÁÎÎÙÈ."
+
+#: nss/getent.c:801
+msgid "Supported databases:"
+msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÂÁÚÙ ÄÁÎÎÙÈ:"
+
+#: nss/getent.c:858 nscd/nscd.c:131 nscd/nscd_nischeck.c:64
+msgid "wrong number of arguments"
+msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÞÉÓÌÏ ÁÒÇÕÍÅÎÔÏ×"
+
+#: nss/getent.c:868
+#, c-format
+msgid "Unknown database: %s\n"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÂÁÚÁ ÄÁÎÎÙÈ: %s\n"
+
+#: debug/pcprofiledump.c:52
+msgid "Don't buffer output"
+msgstr "îÅ ÂÕÆÅÒÉÒÏ×ÁÔØ ×Ù×ÏÄ"
+
+#: debug/pcprofiledump.c:57
+msgid "Dump information generated by PC profiling."
+msgstr "óÂÒÁÓÙ×ÁÅÔ ÉÎÆÏÒÍÁÃÉÀ, ÓÏÂÒÁÎÎÕÀ ÐÒÉ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÉ PC."
+
+#: debug/pcprofiledump.c:60
+msgid "[FILE]"
+msgstr "[æáêì]"
+
+#: debug/pcprofiledump.c:100
+msgid "cannot open input file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÈÏÄÎÏÊ ÆÁÊÌ"
+
+#: debug/pcprofiledump.c:106
+msgid "cannot read header"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË"
+
+#: debug/pcprofiledump.c:170
+msgid "invalid pointer size"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ"
+
+#: inet/rcmd.c:163 inet/rcmd.c:166
+msgid "rcmd: Cannot allocate memory\n"
+msgstr "rcmd: îÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ\n"
+
+#: inet/rcmd.c:185 inet/rcmd.c:188
+msgid "rcmd: socket: All ports in use\n"
+msgstr "rcmd: socket: ÷ÓÅ ÐÏÒÔÙ ÉÓÐÏÌØÚÕÀÔÓÑ\n"
+
+#: inet/rcmd.c:222
+#, c-format
+msgid "connect to address %s: "
+msgstr "ÓÏÅÄÉÎÅÎÉÅ Ó ÁÄÒÅÓÏÍ %s: "
+
+#: inet/rcmd.c:240
+#, c-format
+msgid "Trying %s...\n"
+msgstr "ðÏÐÙÔËÁ %s...\n"
+
+#: inet/rcmd.c:289
+#, c-format
+msgid "rcmd: write (setting up stderr): %m\n"
+msgstr "rcmd: write (ÎÁÓÔÒÏÊËÁ stderr): %m\n"
+
+#: inet/rcmd.c:310
+#, c-format
+msgid "rcmd: poll (setting up stderr): %m\n"
+msgstr "rcmd: poll (ÎÁÓÔÒÏÊËÁ stderr): %m\n"
+
+#: inet/rcmd.c:313
+msgid "poll: protocol failure in circuit setup\n"
+msgstr "poll: ÓÂÏÊ ÐÒÏÔÏËÏÌÁ ÐÒÉ ÎÁÓÔÒÏÊËÅ ÃÅÐÉ\n"
+
+#: inet/rcmd.c:358
+msgid "socket: protocol failure in circuit setup\n"
+msgstr "socket: ÓÂÏÊ ÐÒÏÔÏËÏÌÁ ÐÒÉ ÎÁÓÔÒÏÊËÅ ÃÅÐÉ\n"
+
+#: inet/rcmd.c:387
+#, fuzzy, c-format
+msgid "rcmd: %s: short read"
+msgstr "rcmd: %s: ÎÅÐÏÌÎÏÅ ÞÔÅÎÉÅ"
+
+#: inet/rcmd.c:549
+msgid "lstat failed"
+msgstr "lstat ÎÅÕÓÐÅÛÎÁ"
+
+#: inet/rcmd.c:551
+msgid "not regular file"
+msgstr "ÎÅ ÏÂÙÞÎÙÊ ÆÁÊÌ"
+
+#: inet/rcmd.c:556
+msgid "cannot open"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ"
+
+#: inet/rcmd.c:558
+msgid "fstat failed"
+msgstr "fstat ÎÅÕÓÐÅÛÎÁ"
+
+#: inet/rcmd.c:560
+msgid "bad owner"
+msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ×ÌÁÄÅÌÅÃ"
+
+#: inet/rcmd.c:562
+msgid "writeable by other than owner"
+msgstr "ÍÏÖÅÔ ÚÁÐÉÓÙ×ÁÔØÓÑ ÎÅ ×ÌÁÄÅÌØÃÅÍ"
+
+#: inet/rcmd.c:564
+msgid "hard linked somewhere"
+msgstr "ÉÍÅÅÔÓÑ ÖÅÓÔËÁÑ ÓÓÙÌËÁ"
+
+#: inet/ruserpass.c:170 inet/ruserpass.c:193
+msgid "out of memory"
+msgstr "ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ"
+
+#: inet/ruserpass.c:184
+msgid "Error: .netrc file is readable by others."
+msgstr "ïÛÉÂËÁ: ÆÁÊÌ .netrc ÍÏÖÅÔ ÚÁÐÉÓÙ×ÁÔØÓÑ ÄÒÕÇÉÍÉ."
+
+#: inet/ruserpass.c:185
+msgid "Remove password or make file unreadable by others."
+msgstr "õÄÁÌÉÔÅ ÐÁÒÏÌØ ÉÌÉ ÓÄÅÌÁÊÔÅ ÆÁÊÌ ÎÅÞÉÔÁÅÍÙÍ ÄÒÕÇÉÍÉ."
+
+#: inet/ruserpass.c:277
+#, c-format
+msgid "Unknown .netrc keyword %s"
+msgstr "îÅÉÚ×ÅÓÔÎÏÅ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï .netrc %s"
+
+#: sunrpc/auth_unix.c:115 sunrpc/auth_unix.c:118
+msgid "authunix_create: out of memory\n"
+msgstr "authunix_create: ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ\n"
+
+#: sunrpc/auth_unix.c:318
+msgid "auth_none.c - Fatal marshalling problem"
+msgstr "auth_none.c -- æÁÔÁÌØÎÁÑ ÏÛÉÂËÁ ÍÁÒÛÁÌÌÉÎÇÁ"
+
+#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#, c-format
+msgid "; low version = %lu, high version = %lu"
+msgstr "; ÎÉÖÎÑÑ ×ÅÒÓÉÑ = %lu, ×ÅÒÈÎÑÑ ×ÅÒÓÉÑ = %lu"
+
+#: sunrpc/clnt_perr.c:125
+msgid "; why = "
+msgstr "; ÐÒÉÞÉÎÁ = "
+
+#: sunrpc/clnt_perr.c:132
+#, c-format
+msgid "(unknown authentication error - %d)"
+msgstr "(ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ÁÕÔÅÎÆÉËÁÃÉÉ -- %d)"
+
+#: sunrpc/clnt_perr.c:177
+msgid "RPC: Success"
+msgstr "RPC: õÓÐÅÈ"
+
+#: sunrpc/clnt_perr.c:180
+msgid "RPC: Can't encode arguments"
+msgstr "RPC: îÅ×ÏÚÍÏÖÎÏ ÚÁËÏÄÉÒÏ×ÁÔØ ÁÒÇÕÍÅÎÔÙ"
+
+#: sunrpc/clnt_perr.c:184
+msgid "RPC: Can't decode result"
+msgstr "RPC: îÅ×ÏÚÍÏÖÎÏ ÒÁÓËÏÄÉÒÏ×ÁÔØ ÒÅÚÕÌØÔÁÔ"
+
+#: sunrpc/clnt_perr.c:188
+msgid "RPC: Unable to send"
+msgstr "RPC: îÅ ÕÄÁÌÏÓØ ÐÏÓÌÁÔØ"
+
+#: sunrpc/clnt_perr.c:192
+msgid "RPC: Unable to receive"
+msgstr "RPC: îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ"
+
+#: sunrpc/clnt_perr.c:196
+msgid "RPC: Timed out"
+msgstr "RPC: ÷ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÉÓÔÅËÌÏ"
+
+#: sunrpc/clnt_perr.c:200
+msgid "RPC: Incompatible versions of RPC"
+msgstr "RPC: îÅÓÏ×ÍÅÓÔÉÍÙÅ ×ÅÒÓÉÉ RPC"
+
+#: sunrpc/clnt_perr.c:204
+msgid "RPC: Authentication error"
+msgstr "RPC: ïÛÉÂËÁ ÁÕÔÅÎÆÉËÁÃÉÉ"
+
+#: sunrpc/clnt_perr.c:208
+msgid "RPC: Program unavailable"
+msgstr "RPC: ðÒÏÇÒÁÍÍÁ ÎÅÄÏÓÔÕÐÎÁ"
+
+#: sunrpc/clnt_perr.c:212
+msgid "RPC: Program/version mismatch"
+msgstr "RPC: îÅÓÏ×ÐÁÄÅÎÉÅ ÐÒÏÇÒÁÍÍÙ/×ÅÒÓÉÉ"
+
+#: sunrpc/clnt_perr.c:216
+msgid "RPC: Procedure unavailable"
+msgstr "RPC: ðÒÏÃÅÄÕÒÁ ÎÅÄÏÓÔÕÐÎÁ"
+
+#: sunrpc/clnt_perr.c:220
+msgid "RPC: Server can't decode arguments"
+msgstr "RPC: óÅÒ×ÅÒ ÎÅ ÍÏÖÅÔ ÒÁÓËÏÄÉÒÏ×ÁÔØ ÁÒÇÕÍÅÎÔÙ"
+
+#: sunrpc/clnt_perr.c:224
+msgid "RPC: Remote system error"
+msgstr "RPC: ïÛÉÂËÁ ÕÄÁÌÅÎÎÏÊ ÓÉÓÔÅÍÙ"
+
+#: sunrpc/clnt_perr.c:228
+msgid "RPC: Unknown host"
+msgstr "RPC: îÅÉÚ×ÅÓÔÎÙÊ ÈÏÓÔ"
+
+#: sunrpc/clnt_perr.c:232
+msgid "RPC: Unknown protocol"
+msgstr "RPC: îÅÉÚ×ÅÓÔÎÙÊ ÐÒÏÔÏËÏÌ"
+
+#: sunrpc/clnt_perr.c:236
+msgid "RPC: Port mapper failure"
+msgstr "RPC: óÂÏÊ ÏÔÏÂÒÁÖÁÔÅÌÑ ÐÏÒÔÏ×"
+
+#: sunrpc/clnt_perr.c:240
+msgid "RPC: Program not registered"
+msgstr "RPC: ðÒÏÇÒÁÍÍÁ ÎÅ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎÁ"
+
+#: sunrpc/clnt_perr.c:244
+msgid "RPC: Failed (unspecified error)"
+msgstr "RPC: óÂÏÊ (ÏÛÉÂËÁ ÎÅ ÕËÁÚÁÎÁ)"
+
+#: sunrpc/clnt_perr.c:285
+msgid "RPC: (unknown error code)"
+msgstr "RPC: (ÎÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÛÉÂËÉ)"
+
+#: sunrpc/clnt_perr.c:357
+msgid "Authentication OK"
+msgstr "áÕÔÅÎÆÉËÁÃÉÑ ÕÓÐÅÛÎÁ"
+
+#: sunrpc/clnt_perr.c:360
+msgid "Invalid client credential"
+msgstr "îÅ×ÅÒÎÙÊ ÒÅË×ÉÚÉÔ ËÌÉÅÎÔÁ"
+
+#: sunrpc/clnt_perr.c:364
+msgid "Server rejected credential"
+msgstr "óÅÒ×ÅÒ ÏÔ×ÅÒÇ ÒÅË×ÉÚÉÔ"
+
+#: sunrpc/clnt_perr.c:368
+msgid "Invalid client verifier"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:372
+msgid "Server rejected verifier"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:376
+msgid "Client credential too weak"
+msgstr "òÅË×ÉÚÉÔ ËÌÉÅÎÔÁ ÓÌÉÛËÏÍ ÓÌÁÂ"
+
+#: sunrpc/clnt_perr.c:380
+msgid "Invalid server verifier"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:384
+msgid "Failed (unspecified error)"
+msgstr "óÂÏÊ (ÏÛÉÂËÁ ÎÅ ÕËÁÚÁÎÁ)"
+
+#: sunrpc/clnt_raw.c:117
+msgid "clnt_raw.c - Fatal header serialization error."
+msgstr "clnt_raw.c -- æÁÔÁÌØÎÁÑ ÏÛÉÂËÁ ÓÅÒÉÁÌÉÚÁÃÉÉ ÚÁÇÏÌÏ×ËÁ."
+
+#: sunrpc/clnt_tcp.c:134 sunrpc/clnt_tcp.c:137
+msgid "clnttcp_create: out of memory\n"
+msgstr "clnttcp_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
+msgid "clntudp_create: out of memory\n"
+msgstr "clntudp_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/clnt_unix.c:131 sunrpc/clnt_unix.c:134
+msgid "clntunix_create: out of memory\n"
+msgstr "clntunix_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/get_myaddr.c:78
+msgid "get_myaddress: ioctl (get interface configuration)"
+msgstr "get_myaddress: ioctl (ÐÏÌÕÞÅÎÉÅ ËÏÎÆÉÇÕÒÁÃÉÉ ÉÎÔÅÒÆÅÊÓÁ)"
+
+#: sunrpc/pm_getmaps.c:74
+msgid "pmap_getmaps rpc problem"
+msgstr "ÐÒÏÂÌÅÍÁ pmap_getmaps rpc"
+
+#: sunrpc/pmap_clnt.c:72
+msgid "__get_myaddress: ioctl (get interface configuration)"
+msgstr "__get_myaddress: ioctl (ÐÏÌÕÞÅÎÉÅ ËÏÎÆÉÇÕÒÁÃÉÉ ÉÎÔÅÒÆÅÊÓÁ)"
+
+#: sunrpc/pmap_clnt.c:137
+msgid "Cannot register service"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÓÌÕÖÂÕ"
+
+#: sunrpc/pmap_rmt.c:190
+msgid "broadcast: ioctl (get interface configuration)"
+msgstr "broadcast: ioctl (ÐÏÌÕÞÅÎÉÅ ËÏÎÆÉÇÕÒÁÃÉÉ ÉÎÔÅÒÆÅÊÓÁ)"
+
+#: sunrpc/pmap_rmt.c:199
+msgid "broadcast: ioctl (get interface flags)"
+msgstr "broadcast: ioctl (ÐÏÌÕÞÅÎÉÅ ÆÌÁÇÏ× ÉÎÔÅÒÆÅÊÓÁ)"
+
+#: sunrpc/pmap_rmt.c:269
+msgid "Cannot create socket for broadcast rpc"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÏËÅÔ ÄÌÑ ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÏÇÏ rpc"
+
+#: sunrpc/pmap_rmt.c:276
+msgid "Cannot set socket option SO_BROADCAST"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ×ÏÚÍÏÖÎÏÓÔØ ÓÏËÅÔÁ SO_BROADCAST"
+
+#: sunrpc/pmap_rmt.c:328
+msgid "Cannot send broadcast packet"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÓÌÁÔØ ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÙÊ ÐÁËÅÔ"
+
+#: sunrpc/pmap_rmt.c:353
+msgid "Broadcast poll problem"
+msgstr "ðÒÏÂÌÅÍÁ Ó ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÙÍ ÏÐÒÏÓÏÍ"
+
+#: sunrpc/pmap_rmt.c:366
+msgid "Cannot receive reply to broadcast"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÏÔ×ÅÔ ÎÁ ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÏÅ ÓÏÏÂÝÅÎÉÅ"
+
+#: sunrpc/rpc_main.c:288
+#, c-format
+msgid "%s: output would overwrite %s\n"
+msgstr "%s: ×Ù×ÏÄ ÐÅÒÅÚÁÐÉÓÁÌ ÂÙ %s\n"
+
+#: sunrpc/rpc_main.c:295
+#, c-format
+msgid "%s: unable to open %s: %m\n"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ %s: %m\n"
+
+#: sunrpc/rpc_main.c:307
+#, c-format
+msgid "%s: while writing output %s: %m"
+msgstr "%s: ×Ï ×ÒÅÍÑ ÚÁÐÉÓÉ ×Ù×ÏÄÁ %s: %m"
+
+#: sunrpc/rpc_main.c:342
+#, c-format
+msgid "cannot find C preprocessor: %s \n"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÐÒÅÐÒÏÃÅÓÓÏÒ óÉ: %s \n"
+
+#: sunrpc/rpc_main.c:350
+msgid "cannot find any C preprocessor (cpp)\n"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÎÉËÁËÏÇÏ ÐÒÅÐÒÏÃÅÓÓÏÒÁ óÉ (cpp)\n"
+
+#: sunrpc/rpc_main.c:419
+#, c-format
+msgid "%s: C preprocessor failed with signal %d\n"
+msgstr "%s: ÐÒÅÐÒÏÃÅÓÓÏÒ óÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÓÐÅÛÎÏ Ó ÓÉÇÎÁÌÏÍ %d\n"
+
+#: sunrpc/rpc_main.c:422
+#, c-format
+msgid "%s: C preprocessor failed with exit code %d\n"
+msgstr "%s: ÐÒÅÐÒÏÃÅÓÓÏÒ óÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÓÐÅÛÎÏ Ó ×ÙÈÏÄÎÙÍ ËÏÄÏÍ %d\n"
+
+#: sunrpc/rpc_main.c:462
+#, c-format
+msgid "illegal nettype :`%s'\n"
+msgstr "ÎÅ×ÅÒÎÙÊ nettype :`%s'\n"
+
+#: sunrpc/rpc_main.c:1104
+#, c-format
+msgid "rpcgen: too many defines\n"
+msgstr "rpcgen: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÏÐÒÅÄÅÌÅÎÉÊ\n"
+
+#: sunrpc/rpc_main.c:1116
+#, c-format
+msgid "rpcgen: arglist coding error\n"
+msgstr "rpcgen: ÏÛÉÂËÁ ËÏÄÉÒÏ×ÁÎÉÑ ÓÐÉÓËÁ ÁÒÇÕÍÅÎÔÏ×\n"
+
+#. TRANS: the file will not be removed; this is an
+#. TRANS: informative message.
+#: sunrpc/rpc_main.c:1149
+#, c-format
+msgid "file `%s' already exists and may be overwritten\n"
+msgstr "ÆÁÊÌ `%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ É ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÚÁÐÉÓÁÎ\n"
+
+#: sunrpc/rpc_main.c:1194
+#, c-format
+msgid "Cannot specify more than one input file!\n"
+msgstr "îÅÌØÚÑ ÚÁÄÁ×ÁÔØ ÂÏÌÅÅ ÏÄÎÏÇÏ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ!\n"
+
+#: sunrpc/rpc_main.c:1364
+msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1373
+#, c-format
+msgid "Cannot use netid flag with inetd flag!\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÌÁÇ netid Ó ÆÌÁÇÏÍ inetd!\n"
+
+#: sunrpc/rpc_main.c:1385
+msgid "Cannot use netid flag without TIRPC!\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÌÁÇ netid ÂÅÚ TIRPC!\n"
+
+#: sunrpc/rpc_main.c:1392
+msgid "Cannot use table flags with newstyle!\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1411
+#, c-format
+msgid "\"infile\" is required for template generation flags.\n"
+msgstr "ôÒÅÂÕÅÔÓÑ ÚÁÄÁÔØ \"×ÈÏÄÎÏÊ-ÆÁÊÌ\" ÄÌÑ ÆÌÁÇÏ× ÇÅÎÅÒÉÒÏ×ÁÎÉÑ ÛÁÂÌÏÎÁ.\n"
+
+#: sunrpc/rpc_main.c:1416
+#, c-format
+msgid "Cannot have more than one file generation flag!\n"
+msgstr "îÅÌØÚÑ ÚÁÄÁ×ÁÔØ ÂÏÌÅÅ ÏÄÎÏÇÏ ÆÌÁÇÁ ÇÅÎÅÒÉÒÏ×ÁÎÉÑ ÆÁÊÌÁ!\n"
+
+#: sunrpc/rpc_main.c:1425
+#, c-format
+msgid "usage: %s infile\n"
+msgstr "ÉÓÐÏÌØÚÏ×ÁÎÉÅ: %s ×ÈÏÄÎÏÊ-ÆÁÊÌ\n"
+
+#: sunrpc/rpc_main.c:1426
+#, c-format
+msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+msgstr "\t%s [-abkCLNTM][-Dname[=ÚÎÁÞÅÎÉÅ]] [-i ÒÁÚÍÅÒ] [-I [-K ÓÅËÕÎÄÙ]] [-Y ÐÕÔØ] ×ÈÏÄÎÏÊ-ÆÁÊÌ\n"
+
+#: sunrpc/rpc_main.c:1428
+#, c-format
+msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o ×ÙÈÏÄÎÏÊ-ÆÁÊÌ] [×ÈÏÄÎÏÊ-ÆÁÊÌ]\n"
+
+# ???
+#: sunrpc/rpc_main.c:1430
+#, c-format
+msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+msgstr "\t%s [-s nettype]* [-o ×ÙÈÏÄÎÏÊ-ÆÁÊÌ] [×ÈÏÄÎÏÊ-ÆÁÊÌ]\n"
+
+#: sunrpc/rpc_main.c:1431
+#, c-format
+msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+msgstr "\t%s [-n netid]* [-o ×ÙÈÏÄÎÏÊ-ÆÁÊÌ] [×ÈÏÄÎÏÊ-ÆÁÊÌ]\n"
+
+#: sunrpc/rpc_scan.c:116
+msgid "constant or identifier expected"
+msgstr "ÏÖÉÄÁÅÔÓÑ ËÏÎÓÔÁÎÔÁ ÉÌÉ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
+
+#: sunrpc/rpc_scan.c:312
+msgid "illegal character in file: "
+msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË × ÆÁÊÌÅ: "
+
+#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
+msgid "unterminated string constant"
+msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÓÔÒÏËÏ×ÁÑ ËÏÎÓÔÁÎÔÁ"
+
+#: sunrpc/rpc_scan.c:383
+msgid "empty char string"
+msgstr "ÐÕÓÔÁÑ ÓÔÒÏËÁ"
+
+#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
+msgid "preprocessor error"
+msgstr "ÏÛÉÂËÁ ÐÒÅÐÒÏÃÅÓÓÏÒÁ"
+
+#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#, c-format
+msgid "program %lu is not available\n"
+msgstr "ÐÒÏÇÒÁÍÍÁ %lu ÎÅÄÏÓÔÕÐÎÁ\n"
+
+#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
+#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
+#: sunrpc/rpcinfo.c:510
+#, c-format
+msgid "program %lu version %lu is not available\n"
+msgstr "ÐÒÏÇÒÁÍÍÁ %lu ×ÅÒÓÉÉ %lu ÎÅÄÏÓÔÕÐÎÁ\n"
+
+#: sunrpc/rpcinfo.c:515
+#, c-format
+msgid "program %lu version %lu ready and waiting\n"
+msgstr "ÐÒÏÇÒÁÍÍÁ %lu ×ÅÒÓÉÉ %lu ÇÏÔÏ×Á É ÖÄÅÔ\n"
+
+#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+msgid "rpcinfo: can't contact portmapper"
+msgstr "rpcinfo: ÎÅ×ÏÚÍÏÖÎÏ Ó×ÑÚÁÔØÓÑ Ó ÏÔÏÂÒÁÖÁÔÅÌÅÍ ÐÏÒÔÏ×"
+
+#: sunrpc/rpcinfo.c:570
+msgid "No remote programs registered.\n"
+msgstr "îÅÔ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎÎÙÈ ÕÄÁÌÅÎÎÙÈ ÐÒÏÇÒÁÍÍ.\n"
+
+#: sunrpc/rpcinfo.c:574
+msgid "   program vers proto   port\n"
+msgstr "   ÐÒÏÇ-ÍÁ ×ÅÒÓ ÐÒÏÔÏ   ÐÏÒÔ\n"
+
+#: sunrpc/rpcinfo.c:613
+msgid "(unknown)"
+msgstr "(ÎÅÉÚ×ÅÓÔÎÏ)"
+
+#: sunrpc/rpcinfo.c:637
+#, c-format
+msgid "rpcinfo: broadcast failed: %s\n"
+msgstr "rpcinfo: ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÏÅ ÓÏÏÂÝÅÎÉÅ ÎÅÕÓÐÅÛÎÏ: %s\n"
+
+#: sunrpc/rpcinfo.c:658
+msgid "Sorry. You are not root\n"
+msgstr "éÚ×ÉÎÉÔÅ, ×Ù ÎÅ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌØ.\n"
+
+#: sunrpc/rpcinfo.c:665
+#, c-format
+msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
+msgstr "rpcinfo: îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÒÅÇÉÓÔÒÁÃÉÀ ÐÒÏÇÒÁÍÍÙ %s ×ÅÒÓÉÉ %s\n"
+
+#: sunrpc/rpcinfo.c:674
+msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
+msgstr "Usage: rpcinfo [ -n ÎÏÍÅÒ-ÐÏÒÔÁ ] -u ÈÏÓÔ ÎÏÍÅÒ-ÐÒÏÇÒÁÍÍÙ [ ÎÏÍÅÒ-×ÅÒÓÉÉ ]\n"
+
+#: sunrpc/rpcinfo.c:676
+msgid "       rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
+msgstr "       rpcinfo [ -n ÎÏÍÅÒ-ÐÏÒÔÁ ] -t ÈÏÓÔ ÎÏÍÅÒ-ÐÒÏÇÒÁÍÍÙ [ ÎÏÍÅÒ-×ÅÒÓÉÉ ]\n"
+
+#: sunrpc/rpcinfo.c:678
+msgid "       rpcinfo -p [ host ]\n"
+msgstr "       rpcinfo -p [ ÈÏÓÔ ]\n"
+
+#: sunrpc/rpcinfo.c:679
+msgid "       rpcinfo -b prognum versnum\n"
+msgstr "       rpcinfo -b ÎÏÍÅÒ-ÐÒÏÇÒÁÍÍÙ ÎÏÍÅÒ-×ÅÒÓÉÉ\n"
+
+#: sunrpc/rpcinfo.c:680
+msgid "       rpcinfo -d prognum versnum\n"
+msgstr "       rpcinfo -d ÎÏÍÅÒ-ÐÒÏÇÒÁÍÍÙ ÎÏÍÅÒ-×ÅÒÓÉÉ\n"
+
+#: sunrpc/rpcinfo.c:695
+#, c-format
+msgid "rpcinfo: %s is unknown service\n"
+msgstr "rpcinfo: ÓÌÕÖÂÁ %s ÎÅÉÚ×ÅÓÔÎÁ\n"
+
+#: sunrpc/rpcinfo.c:732
+#, c-format
+msgid "rpcinfo: %s is unknown host\n"
+msgstr "rpcinfo: ÈÏÓÔ %s ÎÅÉÚ×ÅÓÔÅÎ\n"
+
+#: sunrpc/svc_run.c:76
+msgid "svc_run: - poll failed"
+msgstr "svc_run: -- ÏÐÒÏÓ ÎÅÕÓÐÅÛÅÎ"
+
+#: sunrpc/svc_simple.c:87
+#, c-format
+msgid "can't reassign procedure number %ld\n"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÎÁÚÎÁÞÉÔØ ÎÏÍÅÒ ÐÒÏÃÅÄÕÒÙ %ld\n"
+
+#: sunrpc/svc_simple.c:96
+msgid "couldn't create an rpc server\n"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÅÒ×ÅÒ rpc\n"
+
+#: sunrpc/svc_simple.c:104
+#, c-format
+msgid "couldn't register prog %ld vers %ld\n"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÐÒÏÇÒÁÍÍÕ %ld ×ÅÒÓÉÉ %ld\n"
+
+#: sunrpc/svc_simple.c:111
+msgid "registerrpc: out of memory\n"
+msgstr "registerrpc: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/svc_simple.c:175
+#, c-format
+msgid "trouble replying to prog %d\n"
+msgstr "ÐÒÏÂÌÅÍÙ ÐÒÉ ÏÔÐÒÁ×ËÅ ÏÔ×ÅÔÁ ÐÒÏÇÒÁÍÍÅ  %d\n"
+
+#: sunrpc/svc_simple.c:183
+#, c-format
+msgid "never registered prog %d\n"
+msgstr "ÎÉ ÒÁÚÕ ÎÅ ÒÅÇÉÓÔÒÉÒÏ×ÁÎÎÁÑ ÐÒÏÇÒÁÍÍÁ %d\n"
+
+#: sunrpc/svc_tcp.c:155
+msgid "svc_tcp.c - tcp socket creation problem"
+msgstr "svc_tcp.c -- ÐÒÏÂÌÅÍÁ ÐÒÉ ÓÏÚÄÁÎÉÉ tcp-ÓÏËÅÔÁ"
+
+#: sunrpc/svc_tcp.c:170
+msgid "svc_tcp.c - cannot getsockname or listen"
+msgstr "svc_tcp.c -- ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ getsockname ÉÌÉ listen"
+
+#: sunrpc/svc_tcp.c:181 sunrpc/svc_tcp.c:184
+msgid "svctcp_create: out of memory\n"
+msgstr "svctcp_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/svc_tcp.c:225 sunrpc/svc_tcp.c:228
+msgid "svc_tcp: makefd_xprt: out of memory\n"
+msgstr "svc_tcp: makefd_xprt: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/svc_udp.c:128
+msgid "svcudp_create: socket creation problem"
+msgstr "svcudp_create: ÐÒÏÂÌÅÍÁ ÐÒÉ ÓÏÚÄÁÎÉÉ ÓÏËÅÔÁ"
+
+#: sunrpc/svc_udp.c:142
+msgid "svcudp_create - cannot getsockname"
+msgstr "svcudp_create -- ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ getsockname"
+
+#: sunrpc/svc_udp.c:154 sunrpc/svc_udp.c:157
+msgid "svcudp_create: out of memory\n"
+msgstr "svcudp_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/svc_udp.c:182 sunrpc/svc_udp.c:185
+msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
+msgstr "svcudp_create: xp_pad ÓÌÉÛËÏÍ ÍÁÌÏ ÄÌÑ IP_PKTINFO\n"
+
+#: sunrpc/svc_udp.c:493
+msgid "enablecache: cache already enabled"
+msgstr "enablecache: ËÜÛ ÕÖÅ ÚÁÄÅÊÓÔ×Ï×ÁÎ"
+
+#: sunrpc/svc_udp.c:499
+msgid "enablecache: could not allocate cache"
+msgstr "enablecache: ÎÅ ÕÄÁÌÏÓØ ×ÙÄÅÌÉÔØ ÍÅÓÔÏ ÐÏÄ ËÜÛ"
+
+#: sunrpc/svc_udp.c:507
+msgid "enablecache: could not allocate cache data"
+msgstr "enablecache: ÎÅ ÕÄÁÌÏÓØ ×ÙÄÅÌÉÔØ ÍÅÓÔÏ ÐÏÄ ÄÁÎÎÙÅ ËÜÛÁ"
+
+#: sunrpc/svc_udp.c:514
+msgid "enablecache: could not allocate cache fifo"
+msgstr "enablecache: ÎÅ ÕÄÁÌÏÓØ ×ÙÄÅÌÉÔØ ÍÅÓÔÏ ÐÏÄ ÏÞÅÒÅÄØ ËÜÛÁ"
+
+#: sunrpc/svc_udp.c:550
+msgid "cache_set: victim not found"
+msgstr "cache_set: ÖÅÒÔ×Á ÎÅ ÎÁÊÄÅÎÁ"
+
+#: sunrpc/svc_udp.c:561
+msgid "cache_set: victim alloc failed"
+msgstr "cache_set: ÓÂÏÊ ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ ÄÌÑ ÖÅÒÔ×Ù"
+
+#: sunrpc/svc_udp.c:567
+msgid "cache_set: could not allocate new rpc_buffer"
+msgstr "cache_set: ÎÅ ÕÄÁÌÏÓØ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÎÏ×ÙÊ rpc_buffer"
+
+#: sunrpc/svc_unix.c:150
+msgid "svc_unix.c - AF_UNIX socket creation problem"
+msgstr "svc_unix.c -- ÐÒÏÂÌÅÍÁ ÐÒÉ ÓÏÚÄÁÎÉÉ AF_UNIX-ÓÏËÅÔÁ"
+
+#: sunrpc/svc_unix.c:166
+msgid "svc_unix.c - cannot getsockname or listen"
+msgstr "svc_unix.c -- ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ getsockname ÉÌÉ listen"
+
+#: sunrpc/svc_unix.c:178 sunrpc/svc_unix.c:181
+msgid "svcunix_create: out of memory\n"
+msgstr "svcunix_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/svc_unix.c:222 sunrpc/svc_unix.c:225
+msgid "svc_unix: makefd_xprt: out of memory\n"
+msgstr "svc_unix: makefd_xprt: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/xdr.c:570 sunrpc/xdr.c:573
+msgid "xdr_bytes: out of memory\n"
+msgstr "xdr_bytes: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/xdr.c:728 sunrpc/xdr.c:731
+msgid "xdr_string: out of memory\n"
+msgstr "xdr_string: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/xdr_array.c:111 sunrpc/xdr_array.c:114
+msgid "xdr_array: out of memory\n"
+msgstr "xdr_array: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/xdr_rec.c:158 sunrpc/xdr_rec.c:161
+msgid "xdrrec_create: out of memory\n"
+msgstr "xdrrec_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: sunrpc/xdr_ref.c:88 sunrpc/xdr_ref.c:91
+msgid "xdr_reference: out of memory\n"
+msgstr "xdr_reference: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+
+#: nis/nis_callback.c:189
+msgid "unable to free arguments"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ×ÙÓ×ÏÂÏÄÉÔØ ÚÁÎÑÔÕÀ ÁÒÇÕÍÅÎÔÁÍÉ ÐÁÍÑÔØ"
+
+#: nis/nis_error.c:30
+msgid "Probable success"
+msgstr "÷ÅÒÏÑÔÎÙÊ ÕÓÐÅÈ"
+
+#: nis/nis_error.c:31
+msgid "Not found"
+msgstr "îÅ ÎÁÊÄÅÎÏ"
+
+#: nis/nis_error.c:32
+msgid "Probably not found"
+msgstr "÷ÅÒÏÑÔÎÏ, ÎÅ ÎÁÊÄÅÎÏ"
+
+#: nis/nis_error.c:33
+msgid "Cache expired"
+msgstr "÷ÒÅÍÑ ÖÉÚÎÉ ËÜÛÁ ÉÓÔÅËÌÏ "
+
+#: nis/nis_error.c:34
+msgid "NIS+ servers unreachable"
+msgstr "óÌÕÖÂÙ NIS+ ÎÅÄÏÓÔÉÖÉÍÙ"
+
+#: nis/nis_error.c:35
+msgid "Unknown object"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÏÂßÅËÔ"
+
+#: nis/nis_error.c:36
+msgid "Server busy, try again"
+msgstr "óÅÒ×ÅÒ ÚÁÎÑÔ, ÐÏÐÒÏÂÕÊÔÅ ÅÝÅ ÒÁÚ"
+
+#: nis/nis_error.c:37
+msgid "Generic system error"
+msgstr "ïÂÝÁÑ ÏÛÉÂËÁ ÓÉÓÔÅÍÙ"
+
+#: nis/nis_error.c:38
+msgid "First/next chain broken"
+msgstr "òÁÚÏÒ×ÁÎÁ ÃÅÐÏÞËÁ ÐÅÒ×ÙÊ/ÓÌÅÄÕÀÝÉÊ"
+
+#: nis/nis_error.c:41
+msgid "Name not served by this server"
+msgstr "éÍÑ ÎÅ ÏÂÓÌÕÖÉ×ÁÅÔÓÑ ÄÁÎÎÙÍ ÓÅÒ×ÅÒÏÍ"
+
+#: nis/nis_error.c:42
+msgid "Server out of memory"
+msgstr "ðÁÍÑÔØ ÎÁ ÓÅÒ×ÅÒÅ ÉÓÞÅÒÐÁÎÁ"
+
+#: nis/nis_error.c:43
+msgid "Object with same name exists"
+msgstr "óÕÝÅÓÔ×ÕÅÔ ÏÂßÅËÔ Ó ÔÁËÉÍ ÖÅ ÉÍÅÎÅÍ"
+
+#: nis/nis_error.c:44
+msgid "Not master server for this domain"
+msgstr "üÔÏ ÎÅ ÍÁÓÔÅÒ-ÓÅÒ×ÅÒ ÄÌÑ ÄÁÎÎÏÇÏ ÄÏÍÅÎÁ"
+
+#: nis/nis_error.c:45
+msgid "Invalid object for operation"
+msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ÄÁÎÎÏÊ ÏÐÅÒÁÃÉÉ ÏÂßÅËÔ"
+
+#: nis/nis_error.c:46
+msgid "Malformed name, or illegal name"
+msgstr "îÅÐÒÁ×ÉÌØÎÏ ÕËÁÚÁÎÎÏÅ ÉÌÉ ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ"
+
+#: nis/nis_error.c:47
+msgid "Unable to create callback"
+msgstr ""
+
+#: nis/nis_error.c:48
+msgid "Results sent to callback proc"
+msgstr ""
+
+#: nis/nis_error.c:49
+msgid "Not found, no such name"
+msgstr "îÅ ÎÁÊÄÅÎÏ, ÎÅÔ ÔÁËÏÇÏ ÉÍÅÎÉ"
+
+#: nis/nis_error.c:50
+msgid "Name/entry isn't unique"
+msgstr "éÍÑ/ÚÁÐÉÓØ ÎÅ ÕÎÉËÁÌØÎÏ"
+
+#: nis/nis_error.c:51
+msgid "Modification failed"
+msgstr "íÏÄÉÆÉËÁÃÉÑ ÎÅ ÕÄÁÌÁÓØ"
+
+#: nis/nis_error.c:52
+msgid "Database for table does not exist"
+msgstr "âÁÚÁ ÄÁÎÎÙÈ ÄÌÑ ÔÁÂÌÉÃÙ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ"
+
+#: nis/nis_error.c:53
+msgid "Entry/table type mismatch"
+msgstr "îÅÓÏÏÔ×ÅÔÓÔ×ÉÅ ÔÉÐÏ× ÚÁÐÉÓÉ/ÔÁÂÌÉÃÙ"
+
+#: nis/nis_error.c:54
+msgid "Link points to illegal name"
+msgstr "óÓÙÌËÁ ÕËÁÚÙ×ÁÅÔ ÎÁ ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ"
+
+#: nis/nis_error.c:55
+msgid "Partial success"
+msgstr "þÁÓÔÉÞÎÙÊ ÕÓÐÅÈ"
+
+#: nis/nis_error.c:56
+msgid "Too many attributes"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÁÔÒÉÂÕÔÏ×"
+
+#: nis/nis_error.c:57
+msgid "Error in RPC subsystem"
+msgstr "ïÛÉÂËÁ × ÐÏÄÓÉÓÔÅÍÅ RPC"
+
+#: nis/nis_error.c:58
+msgid "Missing or malformed attribute"
+msgstr "ðÒÏÐÕÝÅÎÎÙÊ ÉÌÉ ÎÅÐÒÁ×ÉÌØÎÏ ÕËÁÚÁÎÎÙÊ ÁÔÒÉÂÕÔ"
+
+#: nis/nis_error.c:59
+msgid "Named object is not searchable"
+msgstr ""
+
+#: nis/nis_error.c:60
+msgid "Error while talking to callback proc"
+msgstr ""
+
+#: nis/nis_error.c:61
+msgid "Non NIS+ namespace encountered"
+msgstr "ïÂÎÁÒÕÖÅÎÏ ÎÅ-NIS+ ÐÒÏÓÔÒÁÎÓÔ×Ï ÉÍÅÎ"
+
+#: nis/nis_error.c:62
+msgid "Illegal object type for operation"
+msgstr "îÅ ÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ÏÐÅÒÁÃÉÉ ÔÉÐ ÏÂßÅËÔÁ"
+
+#: nis/nis_error.c:63
+msgid "Passed object is not the same object on server"
+msgstr "ðÅÒÅÄÁÎÎÙÊ ÏÂßÅËÔ ÎÅ ÔÏÇÏ ÖÅ ÔÉÐÁ, ÞÔÏ ÏÂßÅËÔ ÎÁ ÓÅÒ×ÅÒÅ"
+
+#: nis/nis_error.c:64
+msgid "Modify operation failed"
+msgstr "ïÐÅÒÁÃÉÑ ÍÏÄÉÆÉËÁÃÉÉ ÎÅÕÓÐÅÛÎÁ"
+
+#: nis/nis_error.c:65
+msgid "Query illegal for named table"
+msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÚÁÐÒÏÓ ÄÌÑ ÉÍÅÎÏ×ÁÎÎÏÊ ÔÁÂÌÉÃÙ"
+
+#: nis/nis_error.c:66
+msgid "Attempt to remove a non-empty table"
+msgstr "ðÏÐÙÔËÁ ÕÄÁÌÉÔØ ÎÅÐÕÓÔÕÀ ÔÁÂÌÉÃÕ"
+
+#: nis/nis_error.c:67
+msgid "Error in accessing NIS+ cold start file.  Is NIS+ installed?"
+msgstr "ïÛÉÂËÁ ÏÂÒÁÝÅÎÉÑ Ë ÆÁÊÌÕ ÈÏÌÏÄÎÏÇÏ ÚÁÐÕÓËÁ NIS+.  õÓÔÁÎÏ×ÌÅÎ ÌÉ NIS+?"
+
+#: nis/nis_error.c:68
+msgid "Full resync required for directory"
+msgstr "äÌÑ ËÁÔÁÌÏÇÁ ÔÒÅÂÕÅÔÓÑ ÐÏÌÎÁÑ ÒÅÓÉÎÈÒÏÎÉÚÁÃÉÑ"
+
+#: nis/nis_error.c:69
+msgid "NIS+ operation failed"
+msgstr "ïÐÅÒÁÃÉÑ NIS+ ÎÅÕÓÐÅÛÎÁ"
+
+#: nis/nis_error.c:70
+msgid "NIS+ service is unavailable or not installed"
+msgstr "óÌÕÖÂÁ NIS+ ÎÅÄÏÓÔÕÐÎÁ ÉÌÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ"
+
+#: nis/nis_error.c:71
+msgid "Yes, 42 is the meaning of life"
+msgstr "äÁ, 42 -- ÜÔÏ ÓÍÙÓÌ ÖÉÚÎÉ"
+
+#: nis/nis_error.c:72
+msgid "Unable to authenticate NIS+ server"
+msgstr "îÅ ÕÄÁÌÏÓØ ÁÕÔÅÎÆÉÃÉÒÏ×ÁÔØ ÓÅÒ×ÅÒ NIS+"
+
+#: nis/nis_error.c:73
+msgid "Unable to authenticate NIS+ client"
+msgstr "îÅ ÕÄÁÌÏÓØ ÁÕÔÅÎÆÉÃÉÒÏ×ÁÔØ ËÌÉÅÎÔ NIS+"
+
+#: nis/nis_error.c:74
+msgid "No file space on server"
+msgstr "îÁ ÓÅÒ×ÅÒÅ ÎÅÔ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á"
+
+#: nis/nis_error.c:75
+msgid "Unable to create process on server"
+msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÐÒÏÃÅÓÓ ÎÁ ÓÅÒ×ÅÒÅ"
+
+#: nis/nis_error.c:76
+msgid "Master server busy, full dump rescheduled."
+msgstr "íÁÓÔÅÒ-ÓÅÒ×ÅÒ ÚÁÎÑÔ, ÚÁÐÌÁÎÉÒÏ×ÁÎ ÐÏÌÎÙÊ ÄÁÍÐ."
+
+#: nis/nis_local_names.c:126
+#, c-format
+msgid "LOCAL entry for UID %d in directory %s not unique\n"
+msgstr "úÁÐÉÓØ LOCAL ÄÌÑ UID %d × ËÁÔÁÌÏÇÅ %s ÎÅ ÕÎÉËÁÌØÎÁ\n"
+
+#: nis/nis_print.c:51
+msgid "UNKNOWN"
+msgstr "îåéú÷åóôîï"
+
+#: nis/nis_print.c:109
+msgid "BOGUS OBJECT\n"
+msgstr "îåáäåë÷áôîùê ïâÿåëô\n"
+
+#: nis/nis_print.c:112
+msgid "NO OBJECT\n"
+msgstr "îåô ïâÿåëôá\n"
+
+#: nis/nis_print.c:115
+msgid "DIRECTORY\n"
+msgstr "ëáôáìïç\n"
+
+#: nis/nis_print.c:118
+msgid "GROUP\n"
+msgstr "çòõððá\n"
+
+#: nis/nis_print.c:121
+msgid "TABLE\n"
+msgstr "ôáâìéãá\n"
+
+#: nis/nis_print.c:124
+msgid "ENTRY\n"
+msgstr "úáðéóø\n"
+
+#: nis/nis_print.c:127
+msgid "LINK\n"
+msgstr "óóùìëá\n"
+
+#: nis/nis_print.c:130
+msgid "PRIVATE\n"
+msgstr "ðòé÷áôîïå\n"
+
+#: nis/nis_print.c:133
+msgid "(Unknown object)\n"
+msgstr "(îÅÉÚ×ÅÓÔÎÙÊ ÏÂßÅËÔ)\n"
+
+#: nis/nis_print.c:166
+#, c-format
+msgid "Name : `%s'\n"
+msgstr "éÍÑ : `%s'\n"
+
+#: nis/nis_print.c:167
+#, c-format
+msgid "Type : %s\n"
+msgstr "ôÉÐ : %s\n"
+
+#: nis/nis_print.c:172
+msgid "Master Server :\n"
+msgstr "íÁÓÔÅÒ-ÓÅÒ×ÅÒ :\n"
+
+#: nis/nis_print.c:174
+msgid "Replicate :\n"
+msgstr "òÅÐÌÉËÁ :\n"
+
+#: nis/nis_print.c:175
+#, c-format
+msgid "\tName       : %s\n"
+msgstr "\téÍÑ       : %s\n"
+
+#: nis/nis_print.c:176
+msgid "\tPublic Key : "
+msgstr "\tðÕÂÌÉÞÎÙÊ ËÌÀÞ : "
+
+#: nis/nis_print.c:180
+msgid "None.\n"
+msgstr "îÅÔ.\n"
+
+#: nis/nis_print.c:183
+#, c-format
+msgid "Diffie-Hellmann (%d bits)\n"
+msgstr "äÉÆÆÉ-èÅÌÍÁÎ (%d ÂÉÔ)\n"
+
+#: nis/nis_print.c:188
+#, c-format
+msgid "RSA (%d bits)\n"
+msgstr "RSA (%d ÂÉÔ)\n"
+
+#: nis/nis_print.c:191
+msgid "Kerberos.\n"
+msgstr "ëÅÒÂÅÒÏÓ.\n"
+
+#: nis/nis_print.c:194
+#, c-format
+msgid "Unknown (type = %d, bits = %d)\n"
+msgstr "îÅÉÚ×ÅÓÔÎÏ (ÔÉÐ = %d, ÂÉÔÙ = %d)\n"
+
+#: nis/nis_print.c:205
+#, c-format
+msgid "\tUniversal addresses (%u)\n"
+msgstr "\tõÎÉ×ÅÒÓÁÌØÎÙÅ ÁÄÒÅÓÁ (%u)\n"
+
+#: nis/nis_print.c:227
+msgid "Time to live : "
+msgstr "÷ÒÅÍÑ ÖÉÚÎÉ : "
+
+#: nis/nis_print.c:229
+msgid "Default Access rights :\n"
+msgstr "ðÒÁ×Á ÄÏÓÔÕÐÁ ÐÏ ÕÍÏÌÞÁÎÉÀ :\n"
+
+#: nis/nis_print.c:238
+#, c-format
+msgid "\tType         : %s\n"
+msgstr "\tôÉÐ         : %s\n"
+
+#: nis/nis_print.c:239
+msgid "\tAccess rights: "
+msgstr "\tðÒÁ×Á ÄÏÓÔÕÐÁ: "
+
+#: nis/nis_print.c:252
+msgid "Group Flags :"
+msgstr "æÌÁÇÉ ÇÒÕÐÐÙ :"
+
+#: nis/nis_print.c:255
+msgid ""
+"\n"
+"Group Members :\n"
+msgstr ""
+"\n"
+"þÌÅÎÙ ÇÒÕÐÐÙ :\n"
+
+#: nis/nis_print.c:266
+#, c-format
+msgid "Table Type          : %s\n"
+msgstr "ôÉÐ ÔÁÂÌÉÃÙ          : %s\n"
+
+#: nis/nis_print.c:267
+#, c-format
+msgid "Number of Columns   : %d\n"
+msgstr "þÉÓÌÏ ÓÔÏÌÂÃÏ×   : %d\n"
+
+#: nis/nis_print.c:268
+#, c-format
+msgid "Character Separator : %c\n"
+msgstr "úÎÁË-ÒÁÚÄÅÌÉÔÅÌØ : %c\n"
+
+#: nis/nis_print.c:269
+#, c-format
+msgid "Search Path         : %s\n"
+msgstr "ðÕÔØ ÐÏÉÓËÁ         : %s\n"
+
+#: nis/nis_print.c:270
+msgid "Columns             :\n"
+msgstr "óÔÏÌÂÃÙ             :\n"
+
+#: nis/nis_print.c:273
+#, c-format
+msgid "\t[%d]\tName          : %s\n"
+msgstr "\t[%d]\téÍÑ          : %s\n"
+
+#: nis/nis_print.c:275
+msgid "\t\tAttributes    : "
+msgstr "\t\táÔÒÉÂÕÔÙ    : "
+
+#: nis/nis_print.c:277
+msgid "\t\tAccess Rights : "
+msgstr "\t\tðÒÁ×Á ÄÏÓÔÕÐÁ : "
+
+#: nis/nis_print.c:286
+msgid "Linked Object Type : "
+msgstr "ôÉÐ ÏÂßÅËÔÁ ÐÏ ÓÓÙÌËÅ : "
+
+#: nis/nis_print.c:288
+#, c-format
+msgid "Linked to : %s\n"
+msgstr "óÓÙÌËÁ ÎÁ : %s\n"
+
+#: nis/nis_print.c:297
+#, c-format
+msgid "\tEntry data of type %s\n"
+msgstr "\täÁÎÎÙÅ ÚÁÐÉÓÉ ÔÉÐÁ %s\n"
+
+#: nis/nis_print.c:300
+#, c-format
+msgid "\t[%u] - [%u bytes] "
+msgstr "\t[%u] - [%u ÂÁÊÔ] "
+
+#: nis/nis_print.c:303
+msgid "Encrypted data\n"
+msgstr "úÁÛÉÆÒÏ×ÁÎÎÙÅ ÄÁÎÎÙÅ\n"
+
+#: nis/nis_print.c:305
+msgid "Binary data\n"
+msgstr "âÉÎÁÒÎÙÅ ÄÁÎÎÙÅ\n"
+
+#: nis/nis_print.c:320
+#, c-format
+msgid "Object Name   : %s\n"
+msgstr "éÍÑ ÏÂßÅËÔÁ   : %s\n"
+
+#: nis/nis_print.c:321
+#, c-format
+msgid "Directory     : %s\n"
+msgstr "ëÁÔÁÌÏÇ     : %s\n"
+
+#: nis/nis_print.c:322
+#, c-format
+msgid "Owner         : %s\n"
+msgstr "÷ÌÁÄÅÌÅà         : %s\n"
+
+#: nis/nis_print.c:323
+#, c-format
+msgid "Group         : %s\n"
+msgstr "çÒÕÐÐÁ         : %s\n"
+
+# ??? ÚÄÅÓØ, ÎÉÖÅ É ×ÙÛÅ -- ÒÁÓÓÔÁ×ÉÔØ ÐÒÏÂÅÌÙ ËÁË ÎÁÄÏ
+#: nis/nis_print.c:324
+msgid "Access Rights : "
+msgstr "ðÒÁ×Á ÄÏÓÔÕÐÁ : "
+
+#: nis/nis_print.c:326
+#, c-format
+msgid ""
+"\n"
+"Time to Live  : "
+msgstr ""
+"\n"
+"÷ÒÅÍÑ ÖÉÚÎÉ  : "
+
+#: nis/nis_print.c:329
+#, c-format
+msgid "Creation Time : %s"
+msgstr "÷ÒÅÍÑ ÓÏÚÄÁÎÉÑ : %s"
+
+#: nis/nis_print.c:331
+#, c-format
+msgid "Mod. Time     : %s"
+msgstr "÷ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ     : %s"
+
+#: nis/nis_print.c:332
+msgid "Object Type   : "
+msgstr "ôÉÐ ÏÂßÅËÔÁ   : "
+
+#: nis/nis_print.c:352
+#, c-format
+msgid "    Data Length = %u\n"
+msgstr "    äÌÉÎÁ ÄÁÎÎÙÈ = %u\n"
+
+#: nis/nis_print.c:365
+#, c-format
+msgid "Status            : %s\n"
+msgstr "óÔÁÔÕÓ            : %s\n"
+
+#: nis/nis_print.c:366
+#, c-format
+msgid "Number of objects : %u\n"
+msgstr "þÉÓÌÏ ÏÂßÅËÔÏ× : %u\n"
+
+#: nis/nis_print.c:370
+#, c-format
+msgid "Object #%d:\n"
+msgstr "ïÂßÅËÔ #%d:\n"
+
+#: nis/nis_print_group_entry.c:115
+#, c-format
+msgid "Group entry for \"%s.%s\" group:\n"
+msgstr "úÁÐÉÓØ ÇÒÕÐÐÙ ÄÌÑ ÇÒÕÐÐÙ \"%s.%s\":\n"
+
+#: nis/nis_print_group_entry.c:123
+msgid "    Explicit members:\n"
+msgstr "    ñ×ÎÙÅ ÞÌÅÎÙ:\n"
+
+#: nis/nis_print_group_entry.c:128
+msgid "    No explicit members\n"
+msgstr "    îÅÔ Ñ×ÎÙÈ ÞÌÅÎÏ×\n"
+
+#: nis/nis_print_group_entry.c:131
+msgid "    Implicit members:\n"
+msgstr "    îÅÑ×ÎÙÅ ÞÌÅÎÙ:\n"
+
+#: nis/nis_print_group_entry.c:136
+msgid "    No implicit members\n"
+msgstr "    îÅÔ ÎÅÑ×ÎÙÈ ÞÌÅÎÏ×\n"
+
+#: nis/nis_print_group_entry.c:139
+msgid "    Recursive members:\n"
+msgstr "    òÅËÕÒÓÉ×ÎÙÅ ÞÌÅÎÙ:\n"
+
+#: nis/nis_print_group_entry.c:144
+msgid "    No recursive members\n"
+msgstr "    îÅÔ ÒÅËÕÒÓÉ×ÎÙÈ ÞÌÅÎÏ×\n"
+
+#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
+msgid "    Explicit nonmembers:\n"
+msgstr "    ñ×ÎÙÅ ÎÅ-ÞÌÅÎÙ:\n"
+
+#: nis/nis_print_group_entry.c:152
+msgid "    No explicit nonmembers\n"
+msgstr "    îÅÔ Ñ×ÎÙÈ ÎÅ-ÞÌÅÎÏ×\n"
+
+#: nis/nis_print_group_entry.c:155
+msgid "    Implicit nonmembers:\n"
+msgstr "    îÅÑ×ÎÙÅ ÎÅ-ÞÌÅÎÙ:\n"
+
+#: nis/nis_print_group_entry.c:160
+msgid "    No implicit nonmembers\n"
+msgstr "    îÅÔ ÎÅÑ×ÎÙÈ ÎÅ-ÞÌÅÎÏ×\n"
+
+#: nis/nis_print_group_entry.c:168
+msgid "    No recursive nonmembers\n"
+msgstr "    îÅÔ ÒÅËÕÒÓÉ×ÎÙÈ ÎÅ-ÞÌÅÎÏ×\n"
+
+# ???
+#: nis/nss_nisplus/nisplus-publickey.c:101
+#: nis/nss_nisplus/nisplus-publickey.c:182
+#, c-format
+msgid "DES entry for netname %s not unique\n"
+msgstr "úÁÐÉÓØ DES ÄÌÑ netname %s ÎÅ ÕÎÉËÁÌØÎÁ\n"
+
+#: nis/nss_nisplus/nisplus-publickey.c:218
+#, c-format
+msgid "netname2user: missing group id list in `%s'."
+msgstr "netname2user: ÐÒÏÐÕÝÅÎ ÓÐÉÓÏË ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÇÒÕÐÐ × `%s'."
+
+#: nis/nss_nisplus/nisplus-publickey.c:300
+#: nis/nss_nisplus/nisplus-publickey.c:306
+#: nis/nss_nisplus/nisplus-publickey.c:370
+#: nis/nss_nisplus/nisplus-publickey.c:379
+#, c-format
+msgid "netname2user: (nis+ lookup): %s\n"
+msgstr "netname2user: (ÐÏÉÓË × nis+): %s\n"
+
+#: nis/nss_nisplus/nisplus-publickey.c:319
+#, c-format
+msgid "netname2user: DES entry for %s in directory %s not unique"
+msgstr "netname2user: ÚÁÐÉÓØ DES ÄÌÑ %s × ËÁÔÁÌÏÇÅ %s ÎÅ ÕÎÉËÁÌØÎÁ"
+
+#: nis/nss_nisplus/nisplus-publickey.c:337
+#, c-format
+msgid "netname2user: principal name `%s' too long"
+msgstr "netname2user: ÉÍÑ ÐÒÉÎÃÉÐÁÌÁ `%s' ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+
+#: nis/nss_nisplus/nisplus-publickey.c:392
+#, c-format
+msgid "netname2user: LOCAL entry for %s in directory %s not unique"
+msgstr "netname2user: ÚÁÐÉÓØ LOCAL ÄÌÑ %s × ËÁÔÁÌÏÇÅ %s ÎÅ ÕÎÉËÁÌØÎÁ"
+
+#: nis/nss_nisplus/nisplus-publickey.c:399
+msgid "netname2user: should not have uid 0"
+msgstr "netname2user: ÎÅ ÄÏÌÖÅÎ ÉÍÅÔØ ÎÕÌÅ×ÏÊ uid"
+
+#: nis/ypclnt.c:171
+#, c-format
+msgid "YPBINDPROC_DOMAIN: %s\n"
+msgstr "YPBINDPROC_DOMAIN: %s\n"
+
+#: nis/ypclnt.c:780
+msgid "Request arguments bad"
+msgstr "îÅÐÒÁ×ÉÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÚÁÐÒÏÓÁ"
+
+#: nis/ypclnt.c:782
+msgid "RPC failure on NIS operation"
+msgstr "óÂÏÊ RPC ÐÒÉ ÏÐÅÒÁÃÉÉ NIS"
+
+#: nis/ypclnt.c:784
+msgid "Can't bind to server which serves this domain"
+msgstr "îÅ ÕÄÁÅÔÓÑ ÓÏÅÄÉÎÉÔØÓÑ Ó ÓÅÒ×ÅÒÏÍ, ÏÂÓÌÕÖÉ×ÁÀÝÉÍ ÜÔÏÔ ÄÏÍÅÎ"
+
+#: nis/ypclnt.c:786
+msgid "No such map in server's domain"
+msgstr ""
+
+#: nis/ypclnt.c:788
+msgid "No such key in map"
+msgstr ""
+
+#: nis/ypclnt.c:790
+msgid "Internal NIS error"
+msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ NIS"
+
+#: nis/ypclnt.c:792
+msgid "Local resource allocation failure"
+msgstr "óÂÏÊ ÐÒÉ ×ÙÄÅÌÅÎÉÉ ÌÏËÁÌØÎÏÇÏ ÒÅÓÕÒÓÁ"
+
+#: nis/ypclnt.c:794
+msgid "No more records in map database"
+msgstr ""
+
+#: nis/ypclnt.c:796
+msgid "Can't communicate with portmapper"
+msgstr "îÅ×ÏÚÍÏÖÎÏ Ó×ÑÚÁÔØÓÑ Ó ÏÔÏÂÒÁÖÁÔÅÌÅÍ ÐÏÒÔÏ×"
+
+#: nis/ypclnt.c:798
+msgid "Can't communicate with ypbind"
+msgstr "îÅ×ÏÚÍÏÖÎÏ Ó×ÑÚÁÔØÓÑ Ó ypbind"
+
+#: nis/ypclnt.c:800
+msgid "Can't communicate with ypserv"
+msgstr "îÅ×ÏÚÍÏÖÎÏ Ó×ÑÚÁÔØÓÑ Ó ypserv"
+
+#: nis/ypclnt.c:802
+msgid "Local domain name not set"
+msgstr "ìÏËÁÌØÎÏÅ ÉÍÑ ÄÏÍÅÎÁ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÏ"
+
+#: nis/ypclnt.c:804
+msgid "NIS map database is bad"
+msgstr ""
+
+#: nis/ypclnt.c:806
+msgid "NIS client/server version mismatch - can't supply service"
+msgstr "îÅÓÏÏÔ×ÅÔÓÔ×ÉÅ ×ÅÒÓÉÊ ËÌÉÅÎÔÁ/ÓÅÒ×ÅÒÁ NIS -- ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÄÏÓÔÁ×ÉÔØ ÓÌÕÖÂÕ"
+
+#: nis/ypclnt.c:810
+msgid "Database is busy"
+msgstr "âÁÚÁ ÄÁÎÎÙÈ ÚÁÎÑÔÁ"
+
+#: nis/ypclnt.c:812
+msgid "Unknown NIS error code"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÛÉÂËÉ NIS"
+
+#: nis/ypclnt.c:854
+msgid "Internal ypbind error"
+msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ ypbind"
+
+#: nis/ypclnt.c:856
+msgid "Domain not bound"
+msgstr "äÏÍÅÎ ÎÅ ÎÁÊÄÅÎ"
+
+#: nis/ypclnt.c:858
+msgid "System resource allocation failure"
+msgstr "óÂÏÊ ×ÙÄÅÌÅÎÉÑ ÓÉÓÔÅÍÎÏÇÏ ÒÅÓÕÒÓÁ"
+
+#: nis/ypclnt.c:860
+msgid "Unknown ypbind error"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ypbind"
+
+#: nis/ypclnt.c:899
+msgid "yp_update: cannot convert host to netname\n"
+msgstr "yp_update: ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÈÏÓÔ × netname\n"
+
+#: nis/ypclnt.c:911
+msgid "yp_update: cannot get server address\n"
+msgstr "yp_update: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÁÄÒÅÓ ÓÅÒ×ÅÒÁ\n"
+
+#: nscd/cache.c:94
+msgid "while allocating hash table entry"
+msgstr "ÐÒÉ ×ÙÄÅÌÅÎÉÉ ÍÅÓÔÁ ÐÏÄ ÚÁÐÉÓØ ÈÜÛ-ÔÁÂÌÉÃÙ"
+
+#: nscd/cache.c:162 nscd/connections.c:184
+#, c-format
+msgid "cannot stat() file `%s': %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat() ÄÌÑ ÆÁÊÌÁ `%s': %s"
+
+#: nscd/connections.c:150
+msgid "Cannot run nscd in secure mode as unprivileged user"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÕÓÔÉÔØ nscd × ÂÅÚÏÐÁÓÎÏÍ ÒÅÖÉÍÅ ÐÏÄ ÎÅÐÒÉ×ÅÌÉÇÅÒÏ×ÁÎÎÙÍ ÐÏÌØÚÏ×ÁÔÅÌÅÍ"
+
+#: nscd/connections.c:172
+#, c-format
+msgid "while allocating cache: %s"
+msgstr "ÐÒÉ ×ÙÄÅÌÅÎÉÉ ÐÁÍÑÔÉ ÐÏÄ ËÜÛ: %s"
+
+#: nscd/connections.c:197
+#, c-format
+msgid "cannot open socket: %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÓÏËÅÔ: %s"
+
+#: nscd/connections.c:215
+#, c-format
+msgid "cannot enable socket to accept connections: %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÓÏËÅÔ ÐÒÉÎÉÍÁÀÝÉÍ ÓÏÅÄÉÎÅÎÉÑ: %s"
+
+#: nscd/connections.c:260
+#, c-format
+msgid "cannot handle old request version %d; current version is %d"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÂÒÁÂÏÔÁÔØ ÚÁÐÒÏÓ ÓÔÁÒÏÊ ×ÅÒÓÉÉ %d; ÔÅËÕÝÁÑ ×ÅÒÓÉÑ %d"
+
+#: nscd/connections.c:298 nscd/connections.c:324
+#, c-format
+msgid "cannot write result: %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÒÅÚÕÌØÔÁÔ: %s"
+
+#: nscd/connections.c:392 nscd/connections.c:514
+#, c-format
+msgid "error getting callers id: %s"
+msgstr "ÏÛÉÂËÁ ÐÒÉ ÐÏÌÕÞÅÎÉÉ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ×ÙÚÙ×ÁÀÝÅÊ ÓÔÏÒÏÎÙ: %s"
+
+#: nscd/connections.c:485
+#, c-format
+msgid "while accepting connection: %s"
+msgstr "ÐÒÉ ÐÒÉÅÍÅ ÓÏÅÄÉÎÅÎÉÑ: %s"
+
+#: nscd/connections.c:498
+#, fuzzy, c-format
+msgid "short read while reading request: %s"
+msgstr "ÎÅÐÏÌÎÙÊ ÓÞÉÔÁÎÎÙÊ ÂÌÏË ÐÒÉ ÞÔÅÎÉÉ ÚÁÐÒÏÓÁ: %s"
+
+#: nscd/connections.c:542
+#, c-format
+msgid "key length in request too long: %d"
+msgstr "ÄÌÉÎÁ ËÌÀÞÁ × ÚÁÐÒÏÓÅ ÓÌÉÛËÏÍ ×ÅÌÉËÁ: %d"
+
+#: nscd/connections.c:556
+#, c-format
+msgid "short read while reading request key: %s"
+msgstr ""
+
+#: nscd/connections.c:566
+#, c-format
+msgid "handle_request: request received (Version = %d) from PID %ld"
+msgstr "handle_request: ÐÏÌÕÞÅÎ ÚÁÐÒÏÓ (×ÅÒÓÉÑ = %d) ÏÔ PID %ld"
+
+#: nscd/connections.c:571
+#, c-format
+msgid "handle_request: request received (Version = %d)"
+msgstr "handle_request: ÐÏÌÕÞÅÎ ÚÁÐÒÏÓ (×ÅÒÓÉÑ = %d)"
+
+#: nscd/connections.c:635 nscd/connections.c:636 nscd/connections.c:655
+#: nscd/connections.c:668 nscd/connections.c:674 nscd/connections.c:681
+#, c-format
+msgid "Failed to run nscd as user '%s'"
+msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ nscd ÏÔ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ '%s'"
+
+#: nscd/connections.c:656
+msgid "getgrouplist failed"
+msgstr "getgrouplist ÎÅÕÓÐÅÛÎÁ"
+
+#: nscd/connections.c:669
+msgid "setgroups failed"
+msgstr "setgroups ÎÅÕÓÐÅÛÎÁ"
+
+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+msgid "while allocating key copy"
+msgstr "ÐÒÉ ×ÙÄÅÌÅÎÉÉ ÐÁÍÑÔÉ ÐÏÄ ËÏÐÉÀ ËÌÀÞÁ"
+
+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+msgid "while allocating cache entry"
+msgstr "ÐÒÉ ×ÙÄÅÌÅÎÉÉ ÐÁÍÑÔÉ ÐÏÄ ÚÁÐÉÓØ ËÜÛÁ"
+
+#: nscd/grpcache.c:197 nscd/hstcache.c:283 nscd/pwdcache.c:193
+#, fuzzy, c-format
+msgid "short write in %s: %s"
+msgstr "ÎÅÐÏÌÎÁÑ ÚÁÐÉÓØ × %s: %s"
+
+#: nscd/grpcache.c:219
+#, c-format
+msgid "Haven't found \"%s\" in group cache!"
+msgstr "îÅ ÎÁÊÄÅÎÏ \"%s\" × ËÜÛÅ ÇÒÕÐÐ!"
+
+#: nscd/grpcache.c:285
+#, c-format
+msgid "Invalid numeric gid \"%s\"!"
+msgstr "îÅ×ÅÒÎÙÊ ÞÉÓÌÏ×ÏÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ \"%s\"!"
+
+#: nscd/grpcache.c:292
+#, c-format
+msgid "Haven't found \"%d\" in group cache!"
+msgstr "îÅ ÎÁÊÄÅÎÏ \"%d\" × ËÜÛÅ ÇÒÕÐÐ!"
+
+#: nscd/hstcache.c:305 nscd/hstcache.c:371 nscd/hstcache.c:436
+#: nscd/hstcache.c:501
+#, c-format
+msgid "Haven't found \"%s\" in hosts cache!"
+msgstr "îÅ ÎÁÊÄÅÎÏ \"%s\" × ËÜÛÅ ÈÏÓÔÏ×!"
+
+#: nscd/nscd.c:89
+msgid "Read configuration data from NAME"
+msgstr "þÉÔÁÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÅ ÄÁÎÎÙÅ ÉÚ æáêìá"
+
+#: nscd/nscd.c:91
+msgid "Do not fork and display messages on the current tty"
+msgstr "îÅ ÐÏÒÏÖÄÁÔØ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ, ÐÅÞÁÔÁÔØ ÓÏÏÂÝÅÎÉÑ ÎÁ ÔÅËÕÝÉÊ ÔÅÒÍÉÎÁÌ"
+
+#: nscd/nscd.c:92
+msgid "NUMBER"
+msgstr "þéóìï"
+
+#: nscd/nscd.c:92
+msgid "Start NUMBER threads"
+msgstr "úÁÐÕÓÔÉÔØ ÕËÁÚÁÎÎÏÅ þéóìï ÎÉÔÅÊ"
+
+#: nscd/nscd.c:93
+msgid "Shut the server down"
+msgstr "÷ÙËÌÀÞÉÔØ ÓÅÒ×ÅÒ"
+
+#: nscd/nscd.c:94
+msgid "Print current configuration statistic"
+msgstr "îÁÐÅÞÁÔÁÔØ ÓÔÁÔÉÓÔÉËÕ ÐÏ ÔÅËÕÝÅÊ ËÏÎÆÉÇÕÒÁÃÉÉ"
+
+#: nscd/nscd.c:95
+msgid "TABLE"
+msgstr "ôáâìéãá"
+
+#: nscd/nscd.c:96
+msgid "Invalidate the specified cache"
+msgstr "ïÂßÑ×ÉÔØ ÕËÁÚÁÎÎÙÊ ËÜÛ ÎÅÄÅÊÓÔ×ÉÔÅÌØÎÙÍ"
+
+#: nscd/nscd.c:97
+msgid "TABLE,yes"
+msgstr "ôáâìéãá,yes"
+
+#: nscd/nscd.c:97
+msgid "Use separate cache for each user"
+msgstr "éÓÐÏÌØÚÏ×ÁÔØ ÏÔÄÅÌØÎÙÊ ËÜÛ ÄÌÑ ËÁÖÄÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ"
+
+#: nscd/nscd.c:102
+msgid "Name Service Cache Daemon."
+msgstr "äÅÍÏÎ ËÜÛÁ ÓÌÕÖÂÙ ÉÍÅÎ."
+
+#: nscd/nscd.c:141
+msgid "cannot read configuration file; this is fatal"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ; ÜÔÏ ÆÁÔÁÌØÎÙÊ ÓÂÏÊ"
+
+#: nscd/nscd.c:152
+msgid "already running"
+msgstr "ÕÖÅ ÚÁÐÕÝÅÎ"
+
+#: nscd/nscd.c:270 nscd/nscd.c:294 nscd/nscd_stat.c:132
+msgid "Only root is allowed to use this option!"
+msgstr "ôÏÌØËÏ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌØ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏÔ ËÌÀÞ!"
+
+#: nscd/nscd_conf.c:88
+#, c-format
+msgid "Parse error: %s"
+msgstr "ïÛÉÂËÁ ÒÁÚÂÏÒÁ: %s"
+
+#: nscd/nscd_conf.c:171
+#, c-format
+msgid "Could not create log file \"%s\""
+msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÆÁÊÌ ÐÒÏÔÏËÏÌÁ \"%s\""
+
+#: nscd/nscd_conf.c:187
+msgid "Must specify user name for server-user option"
+msgstr "îÕÖÎÏ ÕËÁÚÁÔØ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ËÌÀÞÁ server-user"
+
+#: nscd/nscd_conf.c:194
+msgid "Must specify user name for stat-user option"
+msgstr "îÕÖÎÏ ÕËÁÚÁÔØ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ËÌÀÞÁ stat-user"
+
+#: nscd/nscd_conf.c:205
+#, c-format
+msgid "Unknown option: %s %s %s"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ: %s %s %s"
+
+#: nscd/nscd_stat.c:103
+#, c-format
+msgid "cannot write statistics: %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÓÔÁÔÉÓÔÉËÕ: %s"
+
+#: nscd/nscd_stat.c:128
+#, c-format
+msgid "Only root or %s is allowed to use this option!"
+msgstr "ôÏÌØËÏ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌØ ÉÌÉ %s ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏÔ ËÌÀÞ!"
+
+#: nscd/nscd_stat.c:139
+msgid "nscd not running!\n"
+msgstr "nscd ÎÅ ÚÁÐÕÝÅÎ!\n"
+
+#: nscd/nscd_stat.c:150
+msgid "write incomplete"
+msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÚÁÐÉÓØ"
+
+#: nscd/nscd_stat.c:162
+msgid "cannot read statistics data"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÓÔÁÔÉÓÔÉÞÅÓËÉÅ ÄÁÎÎÙÅ"
+
+#: nscd/nscd_stat.c:165
+#, c-format
+msgid ""
+"nscd configuration:\n"
+"\n"
+"%15d  server debug level\n"
+msgstr ""
+"ëÏÎÆÉÇÕÒÁÃÉÑ nscd:\n"
+"\n"
+"%15d  ÕÒÏ×ÅÎØ ÏÔÌÁÄËÉ ÓÅÒ×ÅÒÁ\n"
+
+#: nscd/nscd_stat.c:189
+#, c-format
+msgid "%3ud %2uh %2um %2lus  server runtime\n"
+msgstr "%3ud %2uh %2um %2lus  ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÅÒ×ÅÒÁ\n"
+
+#: nscd/nscd_stat.c:192
+#, c-format
+msgid "    %2uh %2um %2lus  server runtime\n"
+msgstr "    %2uh %2um %2lus  ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÅÒ×ÅÒÁ\n"
+
+#: nscd/nscd_stat.c:194
+#, c-format
+msgid "        %2um %2lus  server runtime\n"
+msgstr "        %2um %2lus  ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÅÒ×ÅÒÁ\n"
+
+#: nscd/nscd_stat.c:196
+#, c-format
+msgid "            %2lus  server runtime\n"
+msgstr "            %2lus  ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÅÒ×ÅÒÁ\n"
+
+#: nscd/nscd_stat.c:198
+#, c-format
+msgid "%15lu  number of times clients had to wait\n"
+msgstr "%15lu  ÓËÏÌØËÏ ÒÁÚ ËÌÉÅÎÔÁÍ ÐÒÉÛÌÏÓØ ÖÄÁÔØ\n"
+
+#: nscd/nscd_stat.c:213 nscd/nscd_stat.c:215
+msgid "      no"
+msgstr "      ÎÅÔ"
+
+#: nscd/nscd_stat.c:213 nscd/nscd_stat.c:215
+msgid "     yes"
+msgstr "     ÄÁ"
+
+#: nscd/nscd_stat.c:221
+#, c-format
+msgid ""
+"\n"
+"%s cache:\n"
+"\n"
+"%15s  cache is enabled\n"
+"%15Zu  suggested size\n"
+"%15lu  seconds time to live for positive entries\n"
+"%15lu  seconds time to live for negative entries\n"
+"%15lu  cache hits on positive entries\n"
+"%15lu  cache hits on negative entries\n"
+"%15lu  cache misses on positive entries\n"
+"%15lu  cache misses on negative entries\n"
+"%15lu%% cache hit rate\n"
+"%15lu  current number of cached values\n"
+"%15lu  maximum number of cached values\n"
+"%15lu  maximum chain length searched\n"
+"%15lu  number of delays on rdlock\n"
+"%15lu  number of delays on wrlock\n"
+"%15s  check /etc/%s for changes\n"
+msgstr ""
+"\n"
+"ëÜÛ %s:\n"
+"\n"
+"%15s  ËÜÛ ÚÁÄÅÊÓÔ×Ï×ÁÎ\n"
+"%15Zu  ÐÒÅÄÌÁÇÁÅÍÙÊ ÒÁÚÍÅÒ\n"
+"%15lu  ÓÅËÕÎÄÙ ÖÉÚÎÉ ÄÌÑ ÐÏÌÏÖÉÔÅÌØÎÙÈ ÚÁÐÉÓÅÊ\n"
+"%15lu  ÓÅËÕÎÄÙ ÖÉÚÎÉ ÄÌÑ ÏÔÒÉÃÁÔÅÌØÎÙÈ ÚÁÐÉÓÅÊ\n"
+"%15lu  ÐÏÐÁÄÁÎÉÑ ÎÁ ÐÏÌÏÖÉÔÅÌØÎÙÅ ÚÁÐÉÓÉ\n"
+"%15lu  ÐÏÐÁÄÁÎÉÑ ÎÁ ÏÔÒÉÃÁÔÅÌØÎÙÅ ÚÁÐÉÓÉ\n"
+"%15lu  ÐÒÏÍÁÈÉ ÎÁ ÐÏÌÏÖÉÔÅÌØÎÙÅ ÚÁÐÉÓÉ\n"
+"%15lu  ÐÒÏÍÁÈÉ ÎÁ ÏÔÒÉÃÁÔÅÌØÎÙÅ ÚÁÐÉÓÉ\n"
+"%15lu%% ÐÏËÁÚÁÔÅÌØ ÐÏÐÁÄÁÎÉÑ ÎÁ ËÜÛ\n"
+"%15lu  ÔÅËÕÝÅÅ ÞÉÓÌÏ ËÜÛÉÒÏ×ÁÎÎÙÈ ÚÎÁÞÅÎÉÊ\n"
+"%15lu  ÍÁËÓÉÍÁÌØÎÏÅ ÞÉÓÌÏ ËÜÛÉÒÏ×ÁÎÎÙÈ ÚÎÁÞÅÎÉÊ\n"
+"%15lu  ÍÁËÓÉÍÁÌØÎÁÑ ÄÌÉÎÁ ÃÅÐÏÞËÉ ÐÏÉÓËÁ\n"
+"%15lu  ÞÉÓÌÏ ÚÁÄÅÒÖÅË ÎÁ rdlock\n"
+"%15lu  ÞÉÓÌÏ ÚÁÄÅÒÖÅË ÎÁ wrlock\n"
+"%15s  ÏÔÓÌÅÖÉ×ÁÀÔÓÑ ÌÉ ÉÚÍÅÎÅÎÉÑ /etc/%s \n"
+
+#: nscd/pwdcache.c:215
+#, c-format
+msgid "Haven't found \"%s\" in password cache!"
+msgstr "îÅ ÎÁÊÄÅÎÏ \"%s\" × ËÜÛÅ ÐÁÒÏÌÅÊ!"
+
+#: nscd/pwdcache.c:281
+#, c-format
+msgid "Invalid numeric uid \"%s\"!"
+msgstr "îÅ×ÅÒÎÙÊ ÞÉÓÌÏ×ÏÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ \"%s\"!"
+
+#: nscd/pwdcache.c:288
+#, c-format
+msgid "Haven't found \"%d\" in password cache!"
+msgstr "îÅ ÎÁÊÄÅÎÏ \"%d\" × ËÜÛÅ ÐÁÒÏÌÅÊ!"
+
+#: elf/../sysdeps/generic/dl-sysdep.c:422
+msgid "cannot create capability list"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÐÉÓÏË ×ÏÚÍÏÖÎÏÓÔÅÊ"
+
+#: elf/../sysdeps/generic/readelflib.c:35
+#, c-format
+msgid "file %s is truncated\n"
+msgstr "ÆÁÊÌ %s ÕÓÅÞÅÎ\n"
+
+#: elf/../sysdeps/generic/readelflib.c:67
+#, c-format
+msgid "%s is a 32 bit ELF file.\n"
+msgstr "%s Ñ×ÌÑÅÔÓÑ 32-ÂÉÔÎÙÍ ELF-ÆÁÊÌÏÍ.\n"
+
+#: elf/../sysdeps/generic/readelflib.c:69
+#, c-format
+msgid "%s is a 64 bit ELF file.\n"
+msgstr "%s Ñ×ÌÑÅÔÓÑ 64-ÂÉÔÎÙÍ ELF-ÆÁÊÌÏÍ.\n"
+
+#: elf/../sysdeps/generic/readelflib.c:71
+#, c-format
+msgid "Unknown ELFCLASS in file %s.\n"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ELFCLASS × ÆÁÊÌÅ %s.\n"
+
+#: elf/../sysdeps/generic/readelflib.c:78
+#, c-format
+msgid "%s is not a shared object file (Type: %d).\n"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÒÁÚÄÅÌÑÅÍÙÍ ÏÂßÅËÔÎÙÍ ÆÁÊÌÏÍ (ôÉÐ: %d).\n"
+
+#: elf/../sysdeps/generic/readelflib.c:109
+msgid "more than one dynamic segment\n"
+msgstr "ÂÏÌÅÅ ÏÄÎÏÇÏ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÅÇÍÅÎÔÏ×\n"
+
+#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:49
+#, c-format
+msgid "%s is for unknown machine %d.\n"
+msgstr "%s ÐÒÅÄÎÁÚÎÁÞÅÎ ÄÌÑ ÎÅÉÚ×ÅÓÔÎÏÊ ÍÁÛÉÎÙ %d.\n"
+
+#: elf/cache.c:70
+msgid "unknown"
+msgstr "ÎÅÉÚ×ÅÓÔÎÏ"
+
+#: elf/cache.c:111
+msgid "Unknown OS"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ïó"
+
+#: elf/cache.c:116
+#, c-format
+msgid ", OS ABI: %s %d.%d.%d"
+msgstr ", ABI ïó: %s %d.%d.%d"
+
+#: elf/cache.c:142 elf/ldconfig.c:1078
+#, c-format
+msgid "Can't open cache file %s\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÜÛ-ÆÁÊÌ %s\n"
+
+#: elf/cache.c:154
+msgid "mmap of cache file failed.\n"
+msgstr "ÏÔÏÂÒÁÖÅÎÉÅ ËÜÛ-ÆÁÊÌÁ × ÐÁÍÑÔØ ÎÅ ÕÄÁÌÏÓØ.\n"
+
+#: elf/cache.c:158 elf/cache.c:168
+msgid "File is not a cache file.\n"
+msgstr "üÔÏ ÎÅ ËÜÛ-ÆÁÊÌ.\n"
+
+#: elf/cache.c:201 elf/cache.c:211
+#, c-format
+msgid "%d libs found in cache `%s'\n"
+msgstr "%d ÂÉÂÌÉÏÔÅË ÎÁÊÄÅÎÏ × ËÜÛÅ `%s'\n"
+
+#: elf/cache.c:410
+#, c-format
+msgid "Can't remove old temporary cache file %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÓÔÁÒÙÊ ×ÒÅÍÅÎÎÙÊ ËÜÛ-ÆÁÊÌ %s"
+
+#: elf/cache.c:417
+#, c-format
+msgid "Can't create temporary cache file %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ËÜÛ-ÆÁÊÌ %s"
+
+#: elf/cache.c:425 elf/cache.c:434 elf/cache.c:438
+msgid "Writing of cache data failed"
+msgstr "úÁÐÉÓØ ÄÁÎÎÙÈ ËÜÛÁ ÎÅÕÓÐÅÛÎÁ"
+
+#: elf/cache.c:442
+msgid "Writing of cache data failed."
+msgstr "úÁÐÉÓØ ÄÁÎÎÙÈ ËÜÛÁ ÎÅÕÓÐÅÛÎÁ."
+
+#: elf/cache.c:449
+#, c-format
+msgid "Changing access rights of %s to %#o failed"
+msgstr "éÚÍÅÎÅÎÉÅ ÐÒÁ× ÄÏÓÔÕÐÁ ÄÌÑ %s ÎÁ %#o ÎÅÕÓÐÅÛÎÏ"
+
+#: elf/cache.c:454
+#, c-format
+msgid "Renaming of %s to %s failed"
+msgstr "ðÅÒÅÉÍÅÎÏ×ÁÎÉÅ %s × %s ÎÅÕÓÐÅÛÎÏ"
+
+#: elf/dl-close.c:128
+msgid "shared object not open"
+msgstr "ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔ ÎÅ ÏÔËÒÙÔ"
+
+#: elf/dl-close.c:531 elf/dl-open.c:454
+msgid "TLS generation counter wrapped!  Please send report with the 'glibcbug' script."
+msgstr ""
+
+#: elf/dl-deps.c:111 elf/dl-open.c:183
+msgid "DST not allowed in SUID/SGID programs"
+msgstr "DST ÎÅ ÄÏÐÕÓËÁÅÔÓÑ × ÐÒÏÇÒÁÍÍÁÈ Ó SUID/SGID"
+
+#: elf/dl-deps.c:124
+msgid "empty dynamics string token substitution"
+msgstr ""
+
+#: elf/dl-deps.c:130
+#, c-format
+msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
+msgstr ""
+
+#: elf/dl-deps.c:461
+msgid "cannot allocate dependency list"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÓÐÉÓÏË ÚÁ×ÉÓÉÍÏÓÔÅÊ"
+
+#: elf/dl-deps.c:494 elf/dl-deps.c:549
+msgid "cannot allocate symbol search list"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÓÐÉÓÏË ÐÏÉÓËÁ ÓÉÍ×ÏÌÏ×"
+
+#: elf/dl-deps.c:534
+msgid "Filters not supported with LD_TRACE_PRELINKING"
+msgstr "æÉÌØÔÒÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ Ó LD_TRACE_PRELINKING"
+
+#: elf/dl-error.c:75
+msgid "DYNAMIC LINKER BUG!!!"
+msgstr "ïûéâëá äéîáíéþåóëïçï ëïíðïîï÷ýéëá!!!"
+
+#: elf/dl-error.c:108
+msgid "error while loading shared libraries"
+msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁÇÒÕÚËÅ ÒÁÚÄÅÌÑÅÍÙÈ ÂÉÂÌÉÏÔÅË"
+
+#: elf/dl-load.c:347
+msgid "cannot allocate name record"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÚÁÐÉÓØ ÉÍÅÎÉ"
+
+#: elf/dl-load.c:449 elf/dl-load.c:528 elf/dl-load.c:648 elf/dl-load.c:743
+msgid "cannot create cache for search path"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÜÛ ÄÌÑ ÐÕÔÅÊ ÐÏÉÓËÁ"
+
+#: elf/dl-load.c:551
+msgid "cannot create RUNPATH/RPATH copy"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÏÐÉÀ RUNPATH/RPATH"
+
+#: elf/dl-load.c:634
+msgid "cannot create search path array"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÍÁÓÓÉ× ÐÕÔÅÊ ÐÏÉÓËÁ"
+
+#: elf/dl-load.c:830
+msgid "cannot stat shared object"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat ÄÌÑ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ"
+
+#: elf/dl-load.c:874
+msgid "cannot open zero fill device"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ-ÉÓÔÏÞÎÉË ÎÕÌÅÊ"
+
+#: elf/dl-load.c:883 elf/dl-load.c:1929
+msgid "cannot create shared object descriptor"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÄÅÓËÒÉÐÔÏÒ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ"
+
+#: elf/dl-load.c:902 elf/dl-load.c:1470 elf/dl-load.c:1553
+msgid "cannot read file data"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÄÁÎÎÙÅ ÆÁÊÌÁ"
+
+#: elf/dl-load.c:946
+msgid "ELF load command alignment not page-aligned"
+msgstr "×ÙÒÁ×ÎÉ×ÁÎÉÅ ËÏÍÁÎÄÙ ÚÁÇÒÕÚËÉ ELF ÎÅ ×ÙÒÏ×ÎÅÎÏ ÐÏ ÓÔÒÁÎÉÃÅ"
+
+#: elf/dl-load.c:953
+msgid "ELF load command address/offset not properly aligned"
+msgstr "ÁÄÒÅÓ/ÓÍÅÝÅÎÉÅ ËÏÍÁÎÄÙ ÚÁÇÒÕÚËÉ ELF ÎÅ ×ÙÒÏ×ÎÅÎÏ ÐÒÁ×ÉÌØÎÏ"
+
+#: elf/dl-load.c:1037
+msgid "cannot allocate TLS data structures for initial thread"
+msgstr ""
+
+#: elf/dl-load.c:1061
+msgid "cannot handle TLS data"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÂÒÁÂÏÔÁÔØ ÄÁÎÎÙÅ TLS"
+
+#: elf/dl-load.c:1075
+msgid "object file has no loadable segments"
+msgstr "× ÏÂßÅËÔÎÏÍ ÆÁÊÌÅ ÎÅÔ ÚÁÇÒÕÖÁÅÍÙÈ ÓÅÇÍÅÎÔÏ×"
+
+#: elf/dl-load.c:1110
+msgid "failed to map segment from shared object"
+msgstr "ÓÂÏÊ ÏÔÏÂÒÁÖÅÎÉÑ ÓÅÇÍÅÎÔÁ ÉÚ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ"
+
+#: elf/dl-load.c:1135
+msgid "cannot dynamically load executable"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÄÉÎÁÍÉÞÅÓËÉ ÚÁÇÒÕÚÉÔØ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ"
+
+#: elf/dl-load.c:1191
+msgid "cannot change memory protections"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÚÁÝÉÔÕ ÐÁÍÑÔÉ"
+
+#: elf/dl-load.c:1210
+msgid "cannot map zero-fill pages"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÒÁÎÉÃÙ ÚÁÐÏÌÎÅÎÉÑ ÎÕÌÑÍÉ"
+
+#: elf/dl-load.c:1228
+msgid "cannot allocate memory for program header"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÚÁÇÏÌÏ×ÏË ÐÒÏÇÒÁÍÍÙ"
+
+#: elf/dl-load.c:1259
+msgid "object file has no dynamic section"
+msgstr "× ÏÂßÅËÔÎÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÏÊ ÓÅËÃÉÉ"
+
+#: elf/dl-load.c:1299
+msgid "shared object cannot be dlopen()ed"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÉÍÅÎÉÔØ dlopen() Ë ÒÁÚÄÅÌÑÅÍÏÍÕ ÏÂßÅËÔÕ"
+
+#: elf/dl-load.c:1322
+msgid "cannot create searchlist"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÐÉÓÏË ÐÏÉÓËÁ"
+
+#: elf/dl-load.c:1352
+msgid "cannot enable executable stack as shared object requires"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÄÅÊÓÔ×Ï×ÁÔØ ÉÓÐÏÌÎÑÅÍÙÊ ÓÔÅË, ËÁË ÔÒÅÂÕÅÔ ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔ"
+
+#: elf/dl-load.c:1470
+msgid "file too short"
+msgstr "ÆÁÊÌ ÓÌÉÛËÏÍ ÍÁÌ"
+
+#: elf/dl-load.c:1493
+msgid "invalid ELF header"
+msgstr "ÎÅ×ÅÒÎÙÊ ÚÁÇÏÌÏ×ÏË ELF"
+
+#: elf/dl-load.c:1502
+msgid "ELF file data encoding not big-endian"
+msgstr "ËÏÄÉÒÏ×ËÁ ÄÁÎÎÙÈ × ELF-ÆÁÊÌÅ ÎÅ ÔÕÐÏËÏÎÅÞÎÁÑ"
+
+#: elf/dl-load.c:1504
+msgid "ELF file data encoding not little-endian"
+msgstr "ËÏÄÉÒÏ×ËÁ ÄÁÎÎÙÈ × ELF-ÆÁÊÌÅ ÎÅ ÏÓÔÒÏËÏÎÅÞÎÁÑ"
+
+#: elf/dl-load.c:1508
+msgid "ELF file version ident does not match current one"
+msgstr "ÉÄÅÎÔÉÆÉËÁÔÏÒ ×ÅÒÓÉÉ ELF-ÆÁÊÌÁ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÔÅËÕÝÅÊ ×ÅÒÓÉÉ"
+
+#: elf/dl-load.c:1512
+msgid "ELF file OS ABI invalid"
+msgstr "ÎÅ×ÅÒÎÙÊ ABI ïó ELF-ÆÁÊÌÁ"
+
+#: elf/dl-load.c:1514
+msgid "ELF file ABI version invalid"
+msgstr "ÎÅ×ÅÒÎÁÑ ×ÅÒÓÉÑ ABI ELF-ÆÁÊÌÁ"
+
+#: elf/dl-load.c:1517
+msgid "internal error"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ"
+
+#: elf/dl-load.c:1524
+msgid "ELF file version does not match current one"
+msgstr "×ÅÒÓÉÑ ELF-ÆÁÊÌÁ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÔÅËÕÝÅÊ ×ÅÒÓÉÉ"
+
+# ???
+#: elf/dl-load.c:1532
+msgid "ELF file's phentsize not the expected size"
+msgstr "phentsize ELF-ÆÁÊÌÁ ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó ÏÖÉÄÁÅÍÙÍ ÒÁÚÍÅÒÏÍ"
+
+#: elf/dl-load.c:1538
+msgid "only ET_DYN and ET_EXEC can be loaded"
+msgstr "ÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÔÏÌØËÏ ET_DYN É ET_EXEC"
+
+#: elf/dl-load.c:1944
+msgid "cannot open shared object file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔÎÙÊ ÆÁÊÌ"
+
+#: elf/dl-lookup.c:265 elf/dl-lookup.c:443
+msgid "relocation error"
+msgstr "ÏÛÉÂËÁ ÐÅÒÅÍÅÝÅÎÉÑ"
+
+#: elf/dl-open.c:111
+msgid "cannot extend global scope"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÒÁÓÛÉÒÉÔØ ÇÌÏÂÁÌØÎÕÀ ÏÂÌÁÓÔØ"
+
+#: elf/dl-open.c:214
+msgid "empty dynamic string token substitution"
+msgstr ""
+
+#: elf/dl-open.c:361 elf/dl-open.c:372
+msgid "cannot create scope list"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÐÉÓÏË ÏÂÌÁÓÔÅÊ"
+
+#: elf/dl-open.c:434
+msgid "cannot create TLS data structures"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÔÒÕËÔÕÒÙ ÄÁÎÎÙÈ TLS"
+
+#: elf/dl-open.c:496
+msgid "invalid mode for dlopen()"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÅÖÉÍ ÄÌÑ dlopen()"
+
+#: elf/dl-reloc.c:57
+msgid "cannot allocate memory in static TLS block"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ × ÓÔÁÔÉÞÎÏÍ ÂÌÏËÅ TLS"
+
+#: elf/dl-reloc.c:176
+msgid "cannot make segment writable for relocation"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÓÅÇÍÅÎÔ ÚÁÐÉÓÙ×ÁÅÍÙÍ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÑ"
+
+#: elf/dl-reloc.c:277
+#, c-format
+msgid "%s: profiler found no PLTREL in object %s\n"
+msgstr "%s: ÐÒÏÆÁÊÌÅÒ ÎÅ ÎÁÛÅÌ PLTREL × ÏÂßÅËÔÅ %s\n"
+
+#: elf/dl-reloc.c:289
+#, c-format
+msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+msgstr ""
+
+#: elf/dl-reloc.c:304
+msgid "cannot restore segment prot after reloc"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÏÓÓÔÁÎÏ×ÉÔØ ÚÁÝÉÔÕ ÓÅÇÍÅÎÔÁ ÐÏÓÌÅ ÐÅÒÅÍÅÝÅÎÉÑ"
+
+#: elf/dl-sym.c:74 elf/dl-sym.c:145
+msgid "RTLD_NEXT used in code not dynamically loaded"
+msgstr "RTLD_NEXT ÉÓÐÏÌØÚÏ×ÁÎÏ × ÎÅ ÄÉÎÁÍÉÞÅÓËÉ ÚÁÇÒÕÖÅÎÎÏÍ ËÏÄÅ"
+
+#: elf/dl-version.c:303
+msgid "cannot allocate version reference table"
+msgstr ""
+
+#: elf/ldconfig.c:122
+msgid "Print cache"
+msgstr "îÁÐÅÞÁÔÁÔØ ËÜÛ"
+
+#: elf/ldconfig.c:123
+msgid "Generate verbose messages"
+msgstr "çÅÎÅÒÉÒÏ×ÁÔØ ÐÏÄÒÏÂÎÙÅ ÓÏÏÂÝÅÎÉÑ"
+
+#: elf/ldconfig.c:124
+msgid "Don't build cache"
+msgstr "îÅ ÓÔÒÏÉÔØ ËÜÛ"
+
+#: elf/ldconfig.c:125
+msgid "Don't generate links"
+msgstr "îÅ ÇÅÎÅÒÉÒÏ×ÁÔØ ÓÓÙÌËÉ"
+
+#: elf/ldconfig.c:126
+msgid "Change to and use ROOT as root directory"
+msgstr "ðÅÒÅÊÔÉ × ROOT É ÉÓÐÏÌØÚÏ×ÁÔØ ÅÇÏ ËÁË ËÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ"
+
+#: elf/ldconfig.c:127
+msgid "Use CACHE as cache file"
+msgstr "éÓÐÏÌØÚÏ×ÁÔØ CACHE × ËÁÞÅÓÔ×Å ËÜÛ-ÆÁÊÌÁ"
+
+#: elf/ldconfig.c:128
+msgid "Use CONF as configuration file"
+msgstr "éÓÐÏÌØÚÏ×ÁÔØ CONF × ËÁÞÅÓÔ×Å ËÏÎÆÉÇÕÒÁÃÉÏÎÎÏÇÏ ÆÁÊÌÁ"
+
+#: elf/ldconfig.c:129
+msgid "Only process directories specified on the command line.  Don't build cache."
+msgstr "ïÂÒÁÂÏÔÁÔØ ÔÏÌØËÏ ËÁÔÁÌÏÇÉ, ÕËÁÚÁÎÎÙÅ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ.  îÅ ÓÔÒÏÉÔØ ËÜÛ."
+
+#: elf/ldconfig.c:130
+msgid "Manually link individual libraries."
+msgstr "÷ÒÕÞÎÕÀ ÓËÏÍÐÏÎÏ×ÁÔØ ÏÔÄÅÌØÎÙÅ ÂÉÂÌÉÏÔÅËÉ."
+
+#: elf/ldconfig.c:131
+msgid "Format to use: new, old or compat (default)"
+msgstr "éÓÐÏÌØÚÕÅÍÙÊ ÆÏÒÍÁÔ: new, old ÉÌÉ compat (ÐÏ ÕÍÏÌÞÁÎÉÀ)"
+
+#: elf/ldconfig.c:139
+msgid "Configure Dynamic Linker Run Time Bindings."
+msgstr "ëÏÎÆÉÇÕÒÉÒÕÅÔ Ó×ÑÚÉ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ ÄÌÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÁ."
+
+#: elf/ldconfig.c:297
+#, c-format
+msgid "Path `%s' given more than once"
+msgstr "ðÕÔØ `%s' ÚÁÄÁÎ ÎÅÓËÏÌØËÏ ÒÁÚ"
+
+#: elf/ldconfig.c:341
+#, c-format
+msgid "%s is not a known library type"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÉÚ×ÅÓÔÎÙÍ ÔÉÐÏÍ ÂÉÂÌÉÏÔÅËÉ"
+
+#: elf/ldconfig.c:361
+#, c-format
+msgid "Can't stat %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat %s"
+
+#: elf/ldconfig.c:431
+#, c-format
+msgid "Can't stat %s\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat %s\n"
+
+#: elf/ldconfig.c:441
+#, c-format
+msgid "%s is not a symbolic link\n"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÏÊ\n"
+
+#: elf/ldconfig.c:460
+#, c-format
+msgid "Can't unlink %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÓÓÙÌËÕ %s"
+
+#: elf/ldconfig.c:466
+#, c-format
+msgid "Can't link %s to %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÓÙÌËÕ Ó %s ÎÁ %s"
+
+#: elf/ldconfig.c:472
+msgid " (changed)\n"
+msgstr " (ÉÍÅÎÅÎÏ)\n"
+
+#: elf/ldconfig.c:474
+msgid " (SKIPPED)\n"
+msgstr " (ðòïðõýåîï)\n"
+
+#: elf/ldconfig.c:529
+#, c-format
+msgid "Can't find %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ %s"
+
+#: elf/ldconfig.c:545
+#, c-format
+msgid "Can't lstat %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ lstat %s"
+
+#: elf/ldconfig.c:552
+#, c-format
+msgid "Ignored file %s since it is not a regular file."
+msgstr "æÁÊÌ %s ÉÇÎÏÒÉÒÏ×ÁÎ, ÐÏÓËÏÌØËÕ ÜÔÏ ÎÅ ÏÂÙÞÎÙÊ ÆÁÊÌ"
+
+#: elf/ldconfig.c:560
+#, c-format
+msgid "No link created since soname could not be found for %s"
+msgstr "óÓÙÌËÁ ÎÅ ÓÏÚÄÁÎÁ, ÐÏÓËÏÌØËÕ ÄÌÑ %s ÎÅ ÂÙÌÏ ÎÁÊÄÅÎÏ soname"
+
+#: elf/ldconfig.c:651
+#, c-format
+msgid "Can't open directory %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ %s"
+
+#: elf/ldconfig.c:706 elf/ldconfig.c:753
+#, c-format
+msgid "Cannot lstat %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ lstat %s"
+
+#: elf/ldconfig.c:718
+#, c-format
+msgid "Cannot stat %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat %s"
+
+#: elf/ldconfig.c:775 elf/readlib.c:92
+#, c-format
+msgid "Input file %s not found.\n"
+msgstr "÷ÈÏÄÎÏÊ ÆÁÊÌ %s ÎÅ ÎÁÊÄÅÎ.\n"
+
+#: elf/ldconfig.c:826
+#, c-format
+msgid "libc5 library %s in wrong directory"
+msgstr "libc5-ÂÉÂÌÉÏÔÅËÁ %s × ÎÅÐÒÁ×ÉÌØÎÏÍ ËÁÔÁÌÏÇÅ"
+
+#: elf/ldconfig.c:829
+#, c-format
+msgid "libc6 library %s in wrong directory"
+msgstr "libc6-ÂÉÂÌÉÏÔÅËÁ %s × ÎÅÐÒÁ×ÉÌØÎÏÍ ËÁÔÁÌÏÇÅ"
+
+#: elf/ldconfig.c:832
+#, c-format
+msgid "libc4 library %s in wrong directory"
+msgstr "libc4-ÂÉÂÌÉÏÔÅËÁ %s × ÎÅÐÒÁ×ÉÌØÎÏÍ ËÁÔÁÌÏÇÅ"
+
+#: elf/ldconfig.c:859
+#, c-format
+msgid "libraries %s and %s in directory %s have same soname but different type."
+msgstr "ÂÉÂÌÉÏÔÅËÉ %s É %s × ËÁÔÁÌÏÇÅ %s ÉÍÅÀÔ ÏÄÉÎÁËÏ×ÙÊ soname, ÎÏ ÒÁÚÎÙÅ ÔÉÐÙ."
+
+#: elf/ldconfig.c:962
+#, c-format
+msgid "Can't open configuration file %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ %s"
+
+#: elf/ldconfig.c:1033
+#, c-format
+msgid "relative path `%s' used to build cache"
+msgstr "ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ ËÜÛÁ ÉÓÐÏÌØÚÏ×ÁÎ ÏÔÎÏÓÉÔÅÌØÎÙÊ ÐÕÔØ `%s'"
+
+#: elf/ldconfig.c:1057
+msgid "Can't chdir to /"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ × ËÁÔÁÌÏÇ /"
+
+#: elf/ldconfig.c:1099
+#, c-format
+msgid "Can't open cache file directory %s\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ ËÜÛ-ÆÁÊÌÁ %s\n"
+
+#: elf/readlib.c:98
+#, c-format
+msgid "Cannot fstat file %s.\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ fstat ÄÌÑ ÆÁÊÌÁ %s.\n"
+
+#: elf/readlib.c:108
+#, c-format
+msgid "File %s is too small, not checked."
+msgstr "æÁÊÌ %s ÓÌÉÛËÏÍ ÍÁÌ; ÎÅ ÂÙÌ ÐÒÏ×ÅÒÅÎ."
+
+#: elf/readlib.c:117
+#, c-format
+msgid "Cannot mmap file %s.\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ × ÐÁÍÑÔØ ÆÁÊÌ %s.\n"
+
+#: elf/readlib.c:155
+#, c-format
+msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ELF-ÆÁÊÌÏÍ -- Õ ÎÅÇÏ × ÎÁÞÁÌÅ ÎÅÐÒÁ×ÉÌØÎÙÅ ×ÏÌÛÅÂÎÙÅ ÂÁÊÔÙ.\n"
+
+#: elf/sprof.c:72
+msgid "Output selection:"
+msgstr "÷ÙÂÏÒ ÔÉÐÁ ×Ù×ÏÄÁ:"
+
+#: elf/sprof.c:74
+msgid "print list of count paths and their number of use"
+msgstr ""
+
+#: elf/sprof.c:76
+msgid "generate flat profile with counts and ticks"
+msgstr "ÇÅÎÅÒÉÒÏ×ÁÔØ ÐÌÏÓËÉÊ ÐÒÏÆÉÌØ ÓÏ ÓÞÅÔÞÉËÁÍÉ É ÍÅÔËÁÍÉ"
+
+#: elf/sprof.c:77
+msgid "generate call graph"
+msgstr "ÇÅÎÅÒÉÒÏ×ÁÔØ ÇÒÁÆ ×ÙÚÏ×Ï×"
+
+#: elf/sprof.c:84
+msgid "Read and display shared object profiling data"
+msgstr "óÞÉÔÙ×ÁÅÔ É ÏÔÏÂÒÁÖÁÅÔ ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÅ ÄÁÎÎÙÅ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ"
+
+#: elf/sprof.c:87
+msgid "SHOBJ [PROFDATA]"
+msgstr "òáúä-ïâÿåëô [ðòïæ-äáîîùå]"
+
+#: elf/sprof.c:398
+#, c-format
+msgid "failed to load shared object `%s'"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔ `%s'"
+
+#: elf/sprof.c:407
+msgid "cannot create internal descriptors"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÎÕÔÒÅÎÎÉÅ ÄÅÓËÒÉÐÔÏÒÙ"
+
+#: elf/sprof.c:526
+#, c-format
+msgid "Reopening shared object `%s' failed"
+msgstr "óÂÏÊ ÐÏ×ÔÏÒÎÏÇÏ ÏÔËÒÙÔÉÑ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ `%s'"
+
+#: elf/sprof.c:534
+msgid "mapping of section headers failed"
+msgstr "ÏÔÏÂÒÁÖÅÎÉÅ ÚÁÇÏÌÏ×ËÏ× ÓÅËÃÉÊ ÎÅÕÓÐÅÛÎÏ"
+
+#: elf/sprof.c:544
+msgid "mapping of section header string table failed"
+msgstr "ÏÔÏÂÒÁÖÅÎÉÅ ÔÁÂÌÉÃÙ ÓÔÒÏË ÉÚ ÚÁÇÏÌÏ×ËÁ ÓÅËÃÉÉ ÎÅÕÓÐÅÛÎÏ"
+
+#: elf/sprof.c:564
+#, c-format
+msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
+msgstr "*** æÁÊÌ `%s' ÏÞÉÝÅÎ: ÐÏÄÒÏÂÎÙÊ ÁÎÁÌÉÚ ÎÅ×ÏÚÍÏÖÅÎ\n"
+
+#: elf/sprof.c:594
+msgid "failed to load symbol data"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÄÁÎÎÙÅ Ï ÓÉÍ×ÏÌÁÈ"
+
+#: elf/sprof.c:664
+msgid "cannot load profiling data"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÅ ÄÁÎÎÙÅ"
+
+#: elf/sprof.c:673
+msgid "while stat'ing profiling data file"
+msgstr "ÐÒÉ ÏÐÅÒÁÃÉÉ stat ÎÁÄ ÆÁÊÌÏÍ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ"
+
+#: elf/sprof.c:681
+#, c-format
+msgid "profiling data file `%s' does not match shared object `%s'"
+msgstr "ÆÁÊÌ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ `%s' ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÒÁÚÄÅÌÑÅÍÏÍÕ ÏÂßÅËÔÕ `%s'"
+
+#: elf/sprof.c:692
+msgid "failed to mmap the profiling data file"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÔÏÂÒÁÚÉÔØ × ÐÁÍÑÔØ ÆÁÊÌ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ"
+
+#: elf/sprof.c:700
+msgid "error while closing the profiling data file"
+msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁËÒÙÔÉÉ ÆÁÊÌÁ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ"
+
+#: elf/sprof.c:709 elf/sprof.c:779
+msgid "cannot create internal descriptor"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÎÕÔÒÅÎÎÉÊ ÄÅÓËÒÉÐÔÏÒ"
+
+#: elf/sprof.c:755
+#, c-format
+msgid "`%s' is no correct profile data file for `%s'"
+msgstr "`%s' ÎÅ Ñ×ÌÑÅÔÓÑ ×ÅÒÎÙÍ ÆÁÊÌÏÍ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ ÄÌÑ `%s'"
+
+#: elf/sprof.c:936 elf/sprof.c:988
+msgid "cannot allocate symbol data"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÄÁÎÎÙÅ ÓÉÍ×ÏÌÁ"
diff --git a/po/tr.po b/po/tr.po
index 1e74e7c1bf..9271c3c087 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,13 +1,13 @@
 # Turkish translations for GNU libc messages.
-# Copyright © 2004 Free Software Foundation, Inc.
-# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, ..., 2004.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, ..., 2005.
 # Onur Tolga ÅžehitoÄŸlu <onur@lcsl.metu.edu.tr>, 1998.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: libc 2.3.3\n"
 "POT-Creation-Date: 2004-08-05 09:16+0200\n"
-"PO-Revision-Date: 2004-08-06 11:21+0300\n"
+"PO-Revision-Date: 2005-02-27 11:10+0300\n"
 "Last-Translator: Nilgün Belma Bugüner <nilgun@superonline.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -2090,7 +2090,7 @@ msgstr "Sayısal sonuç kapsam dışı"
 #: stdio-common/../sysdeps/gnu/errlist.c:408
 #: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
 msgid "Resource temporarily unavailable"
-msgstr "Özkaynak geçici olarak kullanışsız"
+msgstr "Özkaynak geçici olarak kullanılamaz durumda"
 
 #. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
 #. TRANS The values are always the same, on every operating system.
diff --git a/posix/Makefile b/posix/Makefile
index 3af9e6681d..f08ec9f1f8 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -28,7 +28,7 @@ headers	:= sys/utsname.h sys/times.h sys/wait.h sys/types.h unistd.h	      \
 	   bits/local_lim.h tar.h bits/utsname.h bits/confname.h	      \
 	   bits/waitflags.h bits/waitstatus.h sys/unistd.h sched.h	      \
 	   bits/sched.h re_comp.h wait.h bits/environments.h cpio.h	      \
-	   sys/sysmacros.h spawn.h
+	   sys/sysmacros.h spawn.h bits/unistd.h
 
 distribute := confstr.h TESTS TESTS2C.sed testcases.h \
 	      PTESTS PTESTS2C.sed ptestcases.h \
@@ -83,7 +83,10 @@ tests		:= tstgetopt testfnm runtests runptests	     \
 		   tst-nice tst-nanosleep tst-regex2 \
 		   transbug tst-rxspencer tst-pcre tst-boost \
 		   bug-ga1 tst-vfork1 tst-vfork2 tst-waitid \
-		   tst-getaddrinfo2 bug-glob1 bug-glob2 tst-sysconf
+		   tst-getaddrinfo2 bug-glob1 bug-glob2 tst-sysconf \
+		   tst-execvp1 tst-execvp2 tst-execlp1 tst-execlp2 \
+		   tst-execv1 tst-execv2 tst-execl1 tst-execl2 \
+		   tst-execve1 tst-execve2 tst-execle1 tst-execle2
 xtests		:= bug-ga2
 ifeq (yes,$(build-shared))
 test-srcs	:= globtest
diff --git a/posix/bits/unistd.h b/posix/bits/unistd.h
new file mode 100644
index 0000000000..215063f07d
--- /dev/null
+++ b/posix/bits/unistd.h
@@ -0,0 +1,84 @@
+/* Checking macros for unistd functions.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   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 _UNISTD_H
+# error "Never include <bits/unistd.h> directly; use <unistd.h> instead."
+#endif
+
+extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
+			   size_t __buflen) __wur;
+#define read(fd, buf, nbytes) \
+  (__bos0 (buf) != (size_t) -1						      \
+   && (!__builtin_constant_p (nbytes) || (nbytes) > __bos0 (buf))	      \
+   ? __read_chk (fd, buf, nbytes, __bos0 (buf))				      \
+   : read (fd, buf, nbytes))
+
+#ifdef __USE_UNIX98
+extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
+			    __off_t __offset, size_t __bufsize) __wur;
+extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,
+			      __off64_t __offset, size_t __bufsize) __wur;
+# ifndef __USE_FILE_OFFSET64
+#  define pread(fd, buf, nbytes, offset) \
+  (__bos0 (buf) != (size_t) -1						      \
+   && (!__builtin_constant_p (nbytes) || (nbytes) > __bos0 (buf))	      \
+   ? __pread64_chk (fd, buf, nbytes, offset, __bos0 (buf))		      \
+   : pread (fd, buf, offset, nbytes))
+# else
+#  define pread(fd, buf, nbytes, offset) \
+  (__bos0 (buf) != (size_t) -1						      \
+   && (!__builtin_constant_p (nbytes) || (nbytes) > __bos0 (buf))	      \
+   ? __pread_chk (fd, buf, nbytes, offset, __bos0 (buf))		      \
+   : pread (fd, buf, offset, nbytes))
+# endif
+
+# ifdef __USE_LARGEFILE64
+#  define pread64(fd, buf, nbytes, offset) \
+  (__bos0 (buf) != (size_t) -1						      \
+   && (!__builtin_constant_p (nbytes) || (nbytes) > __bos0 (buf))	      \
+   ? __pread64_chk (fd, buf, nbytes, offset, __bos0 (buf))		      \
+   : pread64 (fd, buf, offset, nbytes))
+# endif
+#endif
+
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
+extern int __readlink_chk (__const char *__restrict __path,
+			   char *__restrict __buf, size_t __len,
+			   size_t __buflen)
+     __THROW __nonnull ((1, 2)) __wur;
+# define readlink(path, buf, len) \
+  (__bos (buf) != (size_t) -1						      \
+   && (!__builtin_constant_p (len) || (len) > __bos (buf))		      \
+   ? __readlink_chk (path, buf, len, __bos (buf))			      \
+   : readlink (path, buf, len))
+#endif
+
+extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
+     __THROW __wur;
+#define getcwd(buf, size) \
+  (__bos (buf) != (size_t) -1						      \
+   && (!__builtin_constant_p (size) || (size) > __bos (buf))		      \
+   ? __getcwd_chk (buf, size, buflen) : getcwd (buf, size))
+
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+extern char *__getwd_chk (char *__buf, size_t buflen)
+     __THROW __nonnull ((1)) __attribute_deprecated__ __wur;
+#define getwd(buf) \
+  (__bos (buf) != (size_t) -1 ? __getwd_chk (buf, buflen) : getwd (buf))
+#endif
diff --git a/posix/execvp.c b/posix/execvp.c
index 9ccfd7fc22..0abfa7007c 100644
--- a/posix/execvp.c
+++ b/posix/execvp.c
@@ -189,7 +189,7 @@ execvp (file, argv)
 	__set_errno (EACCES);
 
       free (script_argv);
-      free (name);
+      free (name - pathlen);
       if (path_malloc)
 	free (path);
     }
diff --git a/posix/regcomp.c b/posix/regcomp.c
index 1a5f7952c3..a7112cffdd 100644
--- a/posix/regcomp.c
+++ b/posix/regcomp.c
@@ -1321,6 +1321,11 @@ lower_subexp (err, preg, node)
   bin_tree_t *op, *cls, *tree1, *tree;
 
   if (preg->no_sub
+      /* We do not optimize empty subexpressions, because otherwise we may
+	 have bad CONCAT nodes with NULL children.  This is obviously not
+	 very common, so we do not lose much.  An example that triggers
+	 this case is the sed "script" /\(\)/x.  */
+      && node->left != NULL
       && (node->token.opr.idx >= 8 * sizeof (dfa->used_bkref_map)
 	  || !(dfa->used_bkref_map & (1 << node->token.opr.idx))))
     return node->left;
diff --git a/posix/regex_internal.h b/posix/regex_internal.h
index f065cf449d..58fa749e90 100644
--- a/posix/regex_internal.h
+++ b/posix/regex_internal.h
@@ -60,7 +60,7 @@
 # ifdef _LIBC
 #  undef gettext
 #  define gettext(msgid) \
-  INTUSE(__dcgettext) (INTUSE(_libc_intl_domainname), msgid, LC_MESSAGES)
+  INTUSE(__dcgettext) (_libc_intl_domainname, msgid, LC_MESSAGES)
 # endif
 #else
 # define gettext(msgid) (msgid)
diff --git a/posix/rxspencer/tests b/posix/rxspencer/tests
index a8b6e4baa8..b84a270cda 100644
--- a/posix/rxspencer/tests
+++ b/posix/rxspencer/tests
@@ -376,6 +376,7 @@ a(b?c)+d	-	accd	accd
 a[bc]d		-	xyzaaabcaababdacd	abd
 a[ab]c		-	aaabc	abc
 abc		s	abc	abc
+()		s	abc	@abc
 a*		&	b	@b
 
 # Let's have some fun -- try to match a C comment.
diff --git a/posix/tst-execl1.c b/posix/tst-execl1.c
new file mode 100644
index 0000000000..1cfa36df12
--- /dev/null
+++ b/posix/tst-execl1.c
@@ -0,0 +1,22 @@
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+  static const char prog[] = "does-not-exist";
+  errno = 0;
+  execl (prog, prog, NULL);
+
+  if (errno != ENOENT)
+    {
+      printf ("errno = %d (%m), expected ENOENT\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-execl2.c b/posix/tst-execl2.c
new file mode 100644
index 0000000000..5b74959ef8
--- /dev/null
+++ b/posix/tst-execl2.c
@@ -0,0 +1,58 @@
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+
+static void prepare (int argc, char *argv[]);
+static int do_test (void);
+#define PREPARE(argc, argv) prepare (argc, argv)
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
+
+
+static char *copy;
+
+static void
+prepare (int argc, char *argv[])
+{
+  char *buf;
+  int off;
+  asprintf (&buf, "cp %s %n%s-copy", argv[0], &off, argv[0]);
+  if (buf == NULL)
+    {
+      puts ("asprintf  failed");
+      exit (1);
+    }
+  if (system (buf) != 0)
+    {
+      puts ("system  failed");
+      exit (1);
+    }
+
+  /* Make it not executable.  */
+  copy = buf + off;
+  if (chmod (copy, 0666) != 0)
+    {
+      puts ("chmod  failed");
+      exit (1);
+    }
+
+  add_temp_file (copy);
+}
+
+
+static int
+do_test (void)
+{
+  errno = 0;
+  execl (copy, copy, NULL);
+
+  if (errno != EACCES)
+    {
+      printf ("errno = %d (%m), expected EACCES\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/posix/tst-execle1.c b/posix/tst-execle1.c
new file mode 100644
index 0000000000..adea0a8d46
--- /dev/null
+++ b/posix/tst-execle1.c
@@ -0,0 +1,22 @@
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+  static const char prog[] = "does-not-exist";
+  errno = 0;
+  execle (prog, prog, NULL, "FOO=BAR", NULL);
+
+  if (errno != ENOENT)
+    {
+      printf ("errno = %d (%m), expected ENOENT\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-execle2.c b/posix/tst-execle2.c
new file mode 100644
index 0000000000..fb9b09b423
--- /dev/null
+++ b/posix/tst-execle2.c
@@ -0,0 +1,58 @@
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+
+static void prepare (int argc, char *argv[]);
+static int do_test (void);
+#define PREPARE(argc, argv) prepare (argc, argv)
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
+
+
+static char *copy;
+
+static void
+prepare (int argc, char *argv[])
+{
+  char *buf;
+  int off;
+  asprintf (&buf, "cp %s %n%s-copy", argv[0], &off, argv[0]);
+  if (buf == NULL)
+    {
+      puts ("asprintf  failed");
+      exit (1);
+    }
+  if (system (buf) != 0)
+    {
+      puts ("system  failed");
+      exit (1);
+    }
+
+  /* Make it not executable.  */
+  copy = buf + off;
+  if (chmod (copy, 0666) != 0)
+    {
+      puts ("chmod  failed");
+      exit (1);
+    }
+
+  add_temp_file (copy);
+}
+
+
+static int
+do_test (void)
+{
+  errno = 0;
+  execle (copy, copy, NULL, "FOO=BAR", NULL);
+
+  if (errno != EACCES)
+    {
+      printf ("errno = %d (%m), expected EACCES\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/posix/tst-execlp1.c b/posix/tst-execlp1.c
new file mode 100644
index 0000000000..1be4dbcb1b
--- /dev/null
+++ b/posix/tst-execlp1.c
@@ -0,0 +1,34 @@
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+  char *cwd = get_current_dir_name ();
+  if (cwd == NULL)
+    {
+      puts ("get_current_dir_name failed");
+      return 1;
+    }
+
+  /* Make sure we do not find a binary with the name we are going to
+     use.  */
+  setenv ("PATH", cwd, 1);
+
+  static const char prog[] = "does-not-exist";
+  errno = 0;
+  execlp (prog, prog, NULL);
+
+  if (errno != ENOENT)
+    {
+      printf ("errno = %d (%m), expected ENOENT\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-execlp2.c b/posix/tst-execlp2.c
new file mode 100644
index 0000000000..81a723dda4
--- /dev/null
+++ b/posix/tst-execlp2.c
@@ -0,0 +1,82 @@
+#include <errno.h>
+#include <libgen.h>
+#undef basename
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+
+static void prepare (int argc, char *argv[]);
+static int do_test (void);
+#define PREPARE(argc, argv) prepare (argc, argv)
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
+
+
+static char *copy;
+
+static void
+prepare (int argc, char *argv[])
+{
+  char *buf;
+  int off;
+  asprintf (&buf, "cp %s %n%s-copy", argv[0], &off, argv[0]);
+  if (buf == NULL)
+    {
+      puts ("asprintf  failed");
+      exit (1);
+    }
+  if (system (buf) != 0)
+    {
+      puts ("system  failed");
+      exit (1);
+    }
+
+  /* Make it not executable.  */
+  copy = buf + off;
+  if (chmod (copy, 0666) != 0)
+    {
+      puts ("chmod  failed");
+      exit (1);
+    }
+
+  add_temp_file (copy);
+}
+
+
+static int
+do_test (void)
+{
+  /* Make sure we do not find a binary with the name we are going to
+     use.  */
+  char *bindir = strdupa (copy);
+  bindir = canonicalize_file_name (dirname (bindir));
+  if (bindir == NULL)
+    {
+      puts ("canonicalize_file_name failed");
+      return 1;
+    }
+  char *path;
+  asprintf (&path, "%s:../libio:../elf", bindir);
+  if (path == NULL)
+    {
+      puts ("asprintf  failed");
+      return 1;
+    }
+
+  setenv ("PATH", path, 1);
+
+  char *prog = basename (copy);
+  errno = 0;
+  execlp (prog, prog, NULL);
+
+  if (errno != EACCES)
+    {
+      printf ("errno = %d (%m), expected EACCES\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/posix/tst-execv1.c b/posix/tst-execv1.c
new file mode 100644
index 0000000000..57ed1add6e
--- /dev/null
+++ b/posix/tst-execv1.c
@@ -0,0 +1,22 @@
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+  char *argv[] = { (char *) "does-not-exist", NULL };
+  errno = 0;
+  execv (argv[0], argv);
+
+  if (errno != ENOENT)
+    {
+      printf ("errno = %d (%m), expected ENOENT\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-execv2.c b/posix/tst-execv2.c
new file mode 100644
index 0000000000..a5168a269c
--- /dev/null
+++ b/posix/tst-execv2.c
@@ -0,0 +1,60 @@
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+
+static void prepare (int argc, char *argv[]);
+static int do_test (void);
+#define PREPARE(argc, argv) prepare (argc, argv)
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
+
+
+static char *copy;
+
+static void
+prepare (int argc, char *argv[])
+{
+  char *buf;
+  int off;
+  asprintf (&buf, "cp %s %n%s-copy", argv[0], &off, argv[0]);
+  if (buf == NULL)
+    {
+      puts ("asprintf  failed");
+      exit (1);
+    }
+  if (system (buf) != 0)
+    {
+      puts ("system  failed");
+      exit (1);
+    }
+
+  /* Make it not executable.  */
+  copy = buf + off;
+  if (chmod (copy, 0666) != 0)
+    {
+      puts ("chmod  failed");
+      exit (1);
+    }
+
+  add_temp_file (copy);
+}
+
+
+static int
+do_test (void)
+{
+  char *argv[] = { copy, NULL };
+
+  errno = 0;
+  execv (copy, argv);
+
+  if (errno != EACCES)
+    {
+      printf ("errno = %d (%m), expected EACCES\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/posix/tst-execve1.c b/posix/tst-execve1.c
new file mode 100644
index 0000000000..356610f635
--- /dev/null
+++ b/posix/tst-execve1.c
@@ -0,0 +1,23 @@
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+  char *argv[] = { (char *) "does-not-exist", NULL };
+  char *envp[] = { (char *) "FOO=BAR", NULL };
+  errno = 0;
+  execve (argv[0], argv, envp);
+
+  if (errno != ENOENT)
+    {
+      printf ("errno = %d (%m), expected ENOENT\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-execve2.c b/posix/tst-execve2.c
new file mode 100644
index 0000000000..1a804e94fd
--- /dev/null
+++ b/posix/tst-execve2.c
@@ -0,0 +1,61 @@
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+
+static void prepare (int argc, char *argv[]);
+static int do_test (void);
+#define PREPARE(argc, argv) prepare (argc, argv)
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
+
+
+static char *copy;
+
+static void
+prepare (int argc, char *argv[])
+{
+  char *buf;
+  int off;
+  asprintf (&buf, "cp %s %n%s-copy", argv[0], &off, argv[0]);
+  if (buf == NULL)
+    {
+      puts ("asprintf  failed");
+      exit (1);
+    }
+  if (system (buf) != 0)
+    {
+      puts ("system  failed");
+      exit (1);
+    }
+
+  /* Make it not executable.  */
+  copy = buf + off;
+  if (chmod (copy, 0666) != 0)
+    {
+      puts ("chmod  failed");
+      exit (1);
+    }
+
+  add_temp_file (copy);
+}
+
+
+static int
+do_test (void)
+{
+  char *argv[] = { copy, NULL };
+  char *envp[] = { (char *) "FOO=BAR", NULL };
+
+  errno = 0;
+  execve (copy, argv, envp);
+
+  if (errno != EACCES)
+    {
+      printf ("errno = %d (%m), expected EACCES\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/posix/tst-execvp1.c b/posix/tst-execvp1.c
new file mode 100644
index 0000000000..ecc673d124
--- /dev/null
+++ b/posix/tst-execvp1.c
@@ -0,0 +1,34 @@
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+  char *cwd = get_current_dir_name ();
+  if (cwd == NULL)
+    {
+      puts ("get_current_dir_name failed");
+      return 1;
+    }
+
+  /* Make sure we do not find a binary with the name we are going to
+     use.  */
+  setenv ("PATH", cwd, 1);
+
+  char *argv[] = { (char *) "does-not-exist", NULL };
+  errno = 0;
+  execvp (argv[0], argv);
+
+  if (errno != ENOENT)
+    {
+      printf ("errno = %d (%m), expected ENOENT\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/tst-execvp2.c b/posix/tst-execvp2.c
new file mode 100644
index 0000000000..7e0f5d882c
--- /dev/null
+++ b/posix/tst-execvp2.c
@@ -0,0 +1,82 @@
+#include <errno.h>
+#include <libgen.h>
+#undef basename
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+
+static void prepare (int argc, char *argv[]);
+static int do_test (void);
+#define PREPARE(argc, argv) prepare (argc, argv)
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
+
+
+static char *copy;
+
+static void
+prepare (int argc, char *argv[])
+{
+  char *buf;
+  int off;
+  asprintf (&buf, "cp %s %n%s-copy", argv[0], &off, argv[0]);
+  if (buf == NULL)
+    {
+      puts ("asprintf  failed");
+      exit (1);
+    }
+  if (system (buf) != 0)
+    {
+      puts ("system  failed");
+      exit (1);
+    }
+
+  /* Make it not executable.  */
+  copy = buf + off;
+  if (chmod (copy, 0666) != 0)
+    {
+      puts ("chmod  failed");
+      exit (1);
+    }
+
+  add_temp_file (copy);
+}
+
+
+static int
+do_test (void)
+{
+  /* Make sure we do not find a binary with the name we are going to
+     use.  */
+  char *bindir = strdupa (copy);
+  bindir = canonicalize_file_name (dirname (bindir));
+  if (bindir == NULL)
+    {
+      puts ("canonicalize_file_name failed");
+      return 1;
+    }
+  char *path;
+  asprintf (&path, "%s:../libio:../elf", bindir);
+  if (path == NULL)
+    {
+      puts ("asprintf  failed");
+      return 1;
+    }
+
+  setenv ("PATH", path, 1);
+
+  char *argv[] = { basename (copy), NULL };
+  errno = 0;
+  execvp (argv[0], argv);
+
+  if (errno != EACCES)
+    {
+      printf ("errno = %d (%m), expected EACCES\n", errno);
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/posix/unistd.h b/posix/unistd.h
index 744c10c50b..d6cd152b46 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -734,7 +734,7 @@ extern int ttyslot (void) __THROW;
 extern int link (__const char *__from, __const char *__to)
      __THROW __nonnull ((1, 2)) __wur;
 
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
 /* Make a symbolic link to FROM named TO.  */
 extern int symlink (__const char *__from, __const char *__to)
      __THROW __nonnull ((1, 2)) __wur;
@@ -1046,6 +1046,12 @@ extern void swab (__const void *__restrict __from, void *__restrict __to,
 extern char *ctermid (char *__s) __THROW __nonnull ((1));
 #endif
 
+
+/* Define some macros helping to catch buffer overflows.  */
+#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
+# include <bits/unistd.h>
+#endif
+
 __END_DECLS
 
 #endif /* unistd.h  */
diff --git a/resolv/nss_dns/dns-network.c b/resolv/nss_dns/dns-network.c
index 6ff60f3119..97d9263895 100644
--- a/resolv/nss_dns/dns-network.c
+++ b/resolv/nss_dns/dns-network.c
@@ -262,14 +262,14 @@ getanswer_r (const querybuf *answer, int anslen, struct netent *result,
     char linebuffer[0];
   } *net_data = (struct net_data *) buffer;
   int linebuflen = buflen - offsetof (struct net_data, linebuffer);
-  const char *end_of_message = &answer->buf[anslen];
+  const unsigned char *end_of_message = &answer->buf[anslen];
   const HEADER *header_pointer = &answer->hdr;
   /* #/records in the answer section.  */
   int answer_count =  ntohs (header_pointer->ancount);
   /* #/entries in the question section.  */
   int question_count = ntohs (header_pointer->qdcount);
   char *bp = net_data->linebuffer;
-  const char *cp = &answer->buf[HFIXEDSZ];
+  const unsigned char *cp = &answer->buf[HFIXEDSZ];
   char **alias_pointer;
   int have_answer;
   char *ans;
diff --git a/resolv/res_send.c b/resolv/res_send.c
index 8fb21a9446..1a53e5be9e 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -632,7 +632,7 @@ send_vc(res_state statp,
 	/* Are we still talking to whom we want to talk to? */
 	if (statp->_vcsock >= 0 && (statp->_flags & RES_F_VC) != 0) {
 		struct sockaddr_in6 peer;
-		int size = sizeof peer;
+		socklen_t size = sizeof peer;
 
 		if (getpeername(statp->_vcsock,
 				(struct sockaddr *)&peer, &size) < 0 ||
@@ -809,7 +809,8 @@ send_dg(res_state statp,
         int ptimeout;
 	struct sockaddr_in6 from;
 	static int socket_pf = 0;
-	int fromlen, resplen, seconds, n;
+	socklen_t fromlen;
+	int resplen, seconds, n;
 
 	if (EXT(statp).nssocks[ns] == -1) {
 		/* only try IPv6 if IPv6 NS and if not failed before */
@@ -1033,6 +1034,10 @@ send_dg(res_state statp,
 		res_nclose(statp);
 		return (0);
 	}
+	else {
+	  	/* poll should not have returned > 0 in this case.  */
+		abort ();
+	}
 }
 
 #ifdef DEBUG
diff --git a/socket/Makefile b/socket/Makefile
index 594e609db5..aa0776e5bf 100644
--- a/socket/Makefile
+++ b/socket/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
+# Copyright (C) 1991,1995-2001,2005 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -22,7 +22,7 @@
 subdir	:= socket
 
 headers	:= sys/socket.h sys/un.h bits/sockaddr.h bits/socket.h \
-	   sys/socketvar.h net/if.h
+	   bits/socket2.h sys/socketvar.h net/if.h
 
 routines := accept bind connect getpeername getsockname getsockopt	\
 	    listen recv recvfrom recvmsg send sendmsg sendto		\
diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h
new file mode 100644
index 0000000000..0ccb24ca31
--- /dev/null
+++ b/socket/bits/socket2.h
@@ -0,0 +1,38 @@
+/* Checking macros for socket functions.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   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 _SYS_SOCKET_H
+# error "Never include <bits/socket2.h> directly; use <sys/socket.h> instead."
+#endif
+
+extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen,
+			   int __flags);
+#define recv(fd, buf, n, flags) \
+  (__bos0 (buf) != (size_t) -1						      \
+   ? __recv_chk (fd, buf, n, __bos0 (buf), flags)			      \
+   : recv (fd, buf, n, flags))
+
+extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n,
+			       size_t __buflen, int __flags,
+			       __SOCKADDR_ARG __addr,
+			       socklen_t *__restrict __addr_len);
+#define recvfrom(fd, buf, n, flags, addr, addr_len) \
+  (__bos0 (buf) != (size_t) -1						      \
+   ? __recvfrom_chk (fd, buf, n, __bos0 (buf), flags, addr, addr_len)	      \
+   : recvfrom (fd, buf, n, flags, addr, addr_len))
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 4ae1ea9808..4112852ebb 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -1,5 +1,5 @@
 /* Declarations of socket constants, types, and functions.
-   Copyright (C) 1991,92,1994-2001,2003 Free Software Foundation, Inc.
+   Copyright (C) 1991,92,1994-2001,2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -231,6 +231,12 @@ extern int sockatmark (int __fd) __THROW;
 extern int isfdtype (int __fd, int __fdtype) __THROW;
 #endif
 
+
+/* Define some macros helping to catch buffer overflows.  */
+#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
+# include <bits/socket2.h>
+#endif
+
 __END_DECLS
 
 #endif /* sys/socket.h */
diff --git a/string/bits/string3.h b/string/bits/string3.h
index 87cbe35bb1..6c027c23a0 100644
--- a/string/bits/string3.h
+++ b/string/bits/string3.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -80,10 +80,19 @@ __mempcpy_ichk (void *__restrict __dest, const void *__restrict __src,
 #endif
 
 
+/* The first two tests here help to catch a somewhat common problem
+   where the second and third parameter are transposed.  This is
+   especially problematic if the intended fill value is zero.  In this
+   case no work is done at all.  We detect these problems by referring
+   non-existing functions.  */
+__warndecl (__warn_memset_zero_len,
+	    "memset used with constant zero length parameter; this could be due to transposed parameters");
 #define memset(dest, ch, len) \
-  ((__bos0 (dest) != (size_t) -1)					\
-   ? __builtin___memset_chk (dest, ch, len, __bos0 (dest))		\
-   : __memset_ichk (dest, ch, len))
+  (__builtin_constant_p (len) && (len) == 0				      \
+   ? (__warn_memset_zero_len (), (void) (ch), (void) (len), (void *) (dest))  \
+   : ((__bos0 (dest) != (size_t) -1)					      \
+      ? __builtin___memset_chk (dest, ch, len, __bos0 (dest))		      \
+      : __memset_ichk (dest, ch, len)))
 static __inline__ void *
 __attribute__ ((__always_inline__))
 __memset_ichk (void *__dest, int __ch, size_t __len)
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index 284e355cc3..2a3a22496e 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -107,19 +107,19 @@ librpcsvc-inhibit-o = .os # Build no shared rpcsvc library.
 omit-deps = $(librpcsvc-routines)
 endif
 
-CFLAGS-xbootparam_prot.c = -Wno-unused
-CFLAGS-xnlm_prot.c = -Wno-unused
-CFLAGS-xrstat.c = -Wno-unused
-CFLAGS-xyppasswd.c = -Wno-unused
-CFLAGS-xklm_prot.c = -Wno-unused
-CFLAGS-xrex.c = -Wno-unused
-CFLAGS-xsm_inter.c = -Wno-unused
-CFLAGS-xmount.c = -Wno-unused
-CFLAGS-xrusers.c = -Wno-unused
-CFLAGS-xspray.c = -Wno-unused
-CFLAGS-xnfs_prot.c = -Wno-unused
-CFLAGS-xrquota.c = -Wno-unused
-CFLAGS-xkey_prot.c = -Wno-unused
+CFLAGS-xbootparam_prot.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xnlm_prot.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xrstat.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xyppasswd.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xklm_prot.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xrex.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xsm_inter.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xmount.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xrusers.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xspray.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xnfs_prot.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xrquota.c = -Wno-unused $(PIC-ccflag)
+CFLAGS-xkey_prot.c = -Wno-unused $(PIC-ccflag)
 CFLAGS-auth_unix.c = -fexceptions
 CFLAGS-key_call.c = -fexceptions
 CFLAGS-pmap_rmt.c = -fexceptions
diff --git a/sunrpc/auth_des.c b/sunrpc/auth_des.c
index fc5956dcd7..7fe96ca765 100644
--- a/sunrpc/auth_des.c
+++ b/sunrpc/auth_des.c
@@ -107,14 +107,14 @@ authdes_create (const char *servername, u_int window,
   /* syncaddr   - optional addr of host to sync with */
   /* ckey       - optional conversation key to use */
 {
-  u_char pkey_data[1024];
+  char pkey_data[1024];
   netobj pkey;
 
   if (!getpublickey (servername, pkey_data))
     return NULL;
 
-  pkey.n_bytes = (char *) pkey_data;
-  pkey.n_len = strlen ((char *) pkey_data) + 1;
+  pkey.n_bytes = pkey_data;
+  pkey.n_len = strlen (pkey_data) + 1;
   return INTUSE(authdes_pk_create) (servername, &pkey, window, syncaddr, ckey);
 }
 
@@ -237,7 +237,7 @@ authdes_marshal (AUTH *auth, XDR *xdrs)
   des_block cryptbuf[2];
   des_block ivec;
   int status;
-  unsigned int len;
+  int len;
   register int32_t *ixdr;
   struct timeval tval;
 
diff --git a/sunrpc/create_xid.c b/sunrpc/create_xid.c
index 21b83a7656..4e76918644 100644
--- a/sunrpc/create_xid.c
+++ b/sunrpc/create_xid.c
@@ -33,7 +33,7 @@ static struct drand48_data __rpc_lrand48_data;
 unsigned long
 _create_xid (void)
 {
-  unsigned long res;
+  long int res;
 
   __libc_lock_lock (createxid_lock);
 
diff --git a/sunrpc/key_call.c b/sunrpc/key_call.c
index 211f61db70..506a99767c 100644
--- a/sunrpc/key_call.c
+++ b/sunrpc/key_call.c
@@ -386,7 +386,7 @@ getkeyserv_handle (int vers)
   struct timeval wait_time;
   int fd;
   struct sockaddr_un name;
-  int namelen = sizeof(struct sockaddr_un);
+  socklen_t namelen = sizeof(struct sockaddr_un);
 
 #define TOTAL_TIMEOUT   30      /* total timeout talking to keyserver */
 #define TOTAL_TRIES     5       /* Number of tries */
diff --git a/sunrpc/rtime.c b/sunrpc/rtime.c
index 4996f01ba9..ff71a55aeb 100644
--- a/sunrpc/rtime.c
+++ b/sunrpc/rtime.c
@@ -80,7 +80,7 @@ rtime (struct sockaddr_in *addrp, struct rpc_timeval *timep,
   /* RFC 868 says the time is transmitted as a 32-bit value.  */
   uint32_t thetime;
   struct sockaddr_in from;
-  int fromlen;
+  socklen_t fromlen;
   int type;
 
   if (timeout == NULL)
diff --git a/sunrpc/svcauth_des.c b/sunrpc/svcauth_des.c
index 07d7bd0122..becdd5066d 100644
--- a/sunrpc/svcauth_des.c
+++ b/sunrpc/svcauth_des.c
@@ -315,7 +315,7 @@ _svcauth_des (register struct svc_req *rqst, register struct rpc_msg *msg)
   /*
    * xdr the timestamp before encrypting
    */
-  ixdr = (int32_t *) cryptbuf;
+  ixdr = (uint32_t *) cryptbuf;
   IXDR_PUT_INT32 (ixdr, timestamp.tv_sec - 1);
   IXDR_PUT_INT32 (ixdr, timestamp.tv_usec);
 
diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c
index d99a9985c4..2f894fbba7 100644
--- a/sunrpc/xdr.c
+++ b/sunrpc/xdr.c
@@ -225,8 +225,7 @@ INTDEF(xdr_u_long)
 bool_t
 xdr_hyper (XDR *xdrs, quad_t *llp)
 {
-  long t1;
-  unsigned long int t2;
+  long int t1, t2;
 
   if (xdrs->x_op == XDR_ENCODE)
     {
@@ -240,7 +239,7 @@ xdr_hyper (XDR *xdrs, quad_t *llp)
       if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2))
 	return FALSE;
       *llp = ((quad_t) t1) << 32;
-      *llp |= t2;
+      *llp |= (unsigned long int) t2;
       return TRUE;
     }
 
@@ -259,8 +258,7 @@ INTDEF(xdr_hyper)
 bool_t
 xdr_u_hyper (XDR *xdrs, u_quad_t *ullp)
 {
-  unsigned long t1;
-  unsigned long t2;
+  long int t1, t2;
 
   if (xdrs->x_op == XDR_ENCODE)
     {
@@ -274,7 +272,7 @@ xdr_u_hyper (XDR *xdrs, u_quad_t *ullp)
       if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2))
 	return FALSE;
       *ullp = ((u_quad_t) t1) << 32;
-      *ullp |= t2;
+      *ullp |= (unsigned long int) t2;
       return TRUE;
     }
 
@@ -332,7 +330,7 @@ INTDEF(xdr_short)
 bool_t
 xdr_u_short (XDR *xdrs, u_short *usp)
 {
-  u_long l;
+  long l;
 
   switch (xdrs->x_op)
     {
@@ -345,7 +343,7 @@ xdr_u_short (XDR *xdrs, u_short *usp)
 	{
 	  return FALSE;
 	}
-      *usp = (u_short) l;
+      *usp = (u_short) (u_long) l;
       return TRUE;
 
     case XDR_FREE:
diff --git a/sunrpc/xdr_intXX_t.c b/sunrpc/xdr_intXX_t.c
index 9d2f92e10d..6c1fca2b23 100644
--- a/sunrpc/xdr_intXX_t.c
+++ b/sunrpc/xdr_intXX_t.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 1999, 2000, 2004 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 1999, 2000, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
 
@@ -31,10 +31,7 @@
 bool_t
 xdr_int64_t (XDR *xdrs, int64_t *ip)
 {
-  int32_t t1;
-  /* This must be unsigned, otherwise we get problems with sign
-     extension in the DECODE case.  */
-  uint32_t t2;
+  int32_t t1, t2;
 
   switch (xdrs->x_op)
     {
@@ -46,7 +43,7 @@ xdr_int64_t (XDR *xdrs, int64_t *ip)
       if (!XDR_GETINT32(xdrs, &t1) || !XDR_GETINT32(xdrs, &t2))
         return FALSE;
       *ip = ((int64_t) t1) << 32;
-      *ip |= t2;
+      *ip |= (uint32_t) t2;	/* Avoid sign extension.  */
       return TRUE;
     case XDR_FREE:
       return TRUE;
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
index 761f8daeaa..e8015ac5fe 100644
--- a/sysdeps/arm/dl-machine.h
+++ b/sysdeps/arm/dl-machine.h
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  ARM version.
-   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005
 	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -350,13 +350,14 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
 
 #endif /* !dl_machine_h */
 
-#ifdef RESOLVE
 
 /* ARM never uses Elf32_Rela relocations for the dynamic linker.
    Prelinked libraries may use Elf32_Rela though.  */
-# ifdef RTLD_BOOTSTRAP
-#  define ELF_MACHINE_NO_RELA 1
-# endif
+#ifdef RTLD_BOOTSTRAP
+# define ELF_MACHINE_NO_RELA 1
+#endif
+
+#ifdef RESOLVE
 
 /* Deal with an out-of-range PC24 reloc.  */
 static Elf32_Addr
diff --git a/sysdeps/generic/bits/byteswap.h b/sysdeps/generic/bits/byteswap.h
index 38d8540130..5f08fed613 100644
--- a/sysdeps/generic/bits/byteswap.h
+++ b/sysdeps/generic/bits/byteswap.h
@@ -1,5 +1,5 @@
 /* Macros to swap the order of bytes in integer values.
-   Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -29,28 +29,28 @@
 # define __bswap_16(x) \
     (__extension__							      \
      ({ unsigned short int __bsx = (x);					      \
-        ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); }))
+        ((((__bsx) >> 8) & 0xffu) | (((__bsx) & 0xffu) << 8)); }))
 #else
 static __inline unsigned short int
 __bswap_16 (unsigned short int __bsx)
 {
-  return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8));
+  return ((((__bsx) >> 8) & 0xffu) | (((__bsx) & 0xffu) << 8));
 }
 #endif
 
 /* Swap bytes in 32 bit value.  */
 #ifdef __GNUC__
 # define __bswap_32(x) \
-    (__extension__							      \
-     ({ unsigned int __bsx = (x);					      \
-        ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >>  8) |    \
-	 (((__bsx) & 0x0000ff00) <<  8) | (((__bsx) & 0x000000ff) << 24)); }))
+  (__extension__							      \
+   ({ unsigned int __bsx = (x);						      \
+      ((((__bsx) & 0xff000000u) >> 24) | (((__bsx) & 0x00ff0000u) >>  8) |    \
+       (((__bsx) & 0x0000ff00u) <<  8) | (((__bsx) & 0x000000ffu) << 24)); }))
 #else
 static __inline unsigned int
 __bswap_32 (unsigned int __bsx)
 {
-  return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >>  8) |
-	  (((__bsx) & 0x0000ff00) <<  8) | (((__bsx) & 0x000000ff) << 24));
+  return ((((__bsx) & 0xff000000u) >> 24) | (((__bsx) & 0x00ff0000u) >>  8) |
+	  (((__bsx) & 0x0000ff00u) <<  8) | (((__bsx) & 0x000000ffu) << 24));
 }
 #endif
 
diff --git a/sysdeps/generic/bits/types.h b/sysdeps/generic/bits/types.h
index ce48964f14..65c8a9fe90 100644
--- a/sysdeps/generic/bits/types.h
+++ b/sysdeps/generic/bits/types.h
@@ -1,5 +1,5 @@
 /* bits/types.h -- definitions of __*_t types underlying *_t types.
-   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -114,6 +114,9 @@ typedef struct
 # define __ULONG32_TYPE		unsigned long int
 # define __S64_TYPE		__quad_t
 # define __U64_TYPE		__u_quad_t
+/* We want __extension__ before typedef's that use nonstandard base types
+   such as `long long' in C89 mode.  */
+# define __STD_TYPE		__extension__ typedef
 #elif __WORDSIZE == 64
 # define __SQUAD_TYPE		long int
 # define __UQUAD_TYPE		unsigned long int
@@ -123,15 +126,13 @@ typedef struct
 # define __ULONG32_TYPE		unsigned int
 # define __S64_TYPE		long int
 # define __U64_TYPE		unsigned long int
+/* No need to mark the typedef with __extension__.   */
+# define __STD_TYPE		typedef
 #else
 # error
 #endif
 #include <bits/typesizes.h>	/* Defines __*_T_TYPE macros.  */
 
-/* We want __extension__ before typedef's that use nonstandard base types
-   such as `long long' in C89 mode.  */
-#define __STD_TYPE __extension__ typedef
-
 
 __STD_TYPE __DEV_T_TYPE __dev_t;	/* Type of device numbers.  */
 __STD_TYPE __UID_T_TYPE __uid_t;	/* Type of user identifications.  */
diff --git a/sysdeps/generic/dl-hash.h b/sysdeps/generic/dl-hash.h
index a84bf2416d..243ae14b51 100644
--- a/sysdeps/generic/dl-hash.h
+++ b/sysdeps/generic/dl-hash.h
@@ -1,5 +1,5 @@
 /* Compute hash value for given string according to ELF standard.
-   Copyright (C) 1995, 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1995,1996,1997,1998,2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,8 +25,9 @@
    first five operations no overflow is possible so we optimized it a
    bit.  */
 static unsigned int
-_dl_elf_hash (const unsigned char *name)
+_dl_elf_hash (const char *name_arg)
 {
+  const unsigned char *name = (const unsigned char *) name_arg;
   unsigned long int hash = 0;
   if (*name != '\0')
     {
diff --git a/sysdeps/generic/dl-tls.c b/sysdeps/generic/dl-tls.c
index 099742ceff..fdd569b587 100644
--- a/sysdeps/generic/dl-tls.c
+++ b/sysdeps/generic/dl-tls.c
@@ -52,7 +52,6 @@ oom (void)
 # endif
 
 
-
 size_t
 internal_function
 _dl_next_tls_modid (void)
@@ -98,7 +97,6 @@ _dl_next_tls_modid (void)
 	  /* The new index must indeed be exactly one higher than the
 	     previous high.  */
 	  assert (result == GL(dl_tls_max_dtv_idx) + 1);
-
 	  /* There is no gap anymore.  */
 	  GL(dl_tls_dtv_gaps) = false;
 
@@ -109,14 +107,15 @@ _dl_next_tls_modid (void)
     {
       /* No gaps, allocate a new entry.  */
     nogaps:
+
       result = ++GL(dl_tls_max_dtv_idx);
     }
 
   return result;
 }
 
-# ifdef SHARED
 
+# ifdef SHARED
 void
 internal_function
 _dl_determine_tlsoffset (void)
diff --git a/sysdeps/generic/libc-start.c b/sysdeps/generic/libc-start.c
index 5bb8a9b352..f0d69b443b 100644
--- a/sysdeps/generic/libc-start.c
+++ b/sysdeps/generic/libc-start.c
@@ -81,9 +81,9 @@ STATIC int LIBC_START_MAIN (int (*main) (int, char **, char **
      __attribute__ ((noreturn));
 
 
-/* Note: the fini parameter is ignored here.  It used to be registered
-   with __cxa_atexit.  This had the disadvantage that finalizers were
-   called in more than one place.  */
+/* Note: the fini parameter is ignored here for shared library.  It
+   is registered with __cxa_atexit.  This had the disadvantage that
+   finalizers were called in more than one place.  */
 STATIC int
 LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
 		 int argc, char *__unbounded *__unbounded ubp_av,
@@ -98,7 +98,6 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
 		 void (*fini) (void),
 		 void (*rtld_fini) (void), void *__unbounded stack_end)
 {
-  char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];
 #if __BOUNDED_POINTERS__
   char **argv;
 #else
@@ -111,6 +110,8 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
   __libc_multiple_libcs = &_dl_starting_up && !_dl_starting_up;
 
 #ifndef SHARED
+  char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];
+
   INIT_ARGV_and_ENVIRON;
 
   /* Store the lowest stack address.  This is done in ld.so if this is
@@ -155,14 +156,16 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
   if (__builtin_expect (rtld_fini != NULL, 1))
     __cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);
 
+#ifndef SHARED
   /* Call the initializer of the libc.  This is only needed here if we
      are compiling for the static library in which case we haven't
      run the constructors in `_dl_start_user'.  */
-#ifndef SHARED
   __libc_init_first (argc, argv, __environ);
-#endif
 
-#ifndef SHARED
+  /* Register the destructor of the program, if any.  */
+  if (fini)
+    __cxa_atexit ((void (*) (void *)) fini, NULL, NULL);
+
   /* Some security at this point.  Prevent starting a SUID binary where
      the standard file descriptors are not opened.  We have to do this
      only for statically linked applications since otherwise the dynamic
@@ -238,10 +241,10 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
 	 terminate the entire process.  */
       result = 0;
 # ifdef SHARED
-      int *const ptr = __libc_pthread_functions.ptr_nthreads;
+      unsigned int *const ptr = __libc_pthread_functions.ptr_nthreads;
 # else
-      extern int __nptl_nthreads __attribute ((weak));
-      int *const ptr = &__nptl_nthreads;
+      extern unsigned int __nptl_nthreads __attribute ((weak));
+      unsigned int *const ptr = &__nptl_nthreads;
 # endif
 
       if (! atomic_decrement_and_test (ptr))
diff --git a/sysdeps/generic/libc-tls.c b/sysdeps/generic/libc-tls.c
index b88ede06a2..0cf884ca08 100644
--- a/sysdeps/generic/libc-tls.c
+++ b/sysdeps/generic/libc-tls.c
@@ -1,5 +1,5 @@
 /* Initialization code for TLS in statically linked application.
-   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -34,8 +34,7 @@ extern ElfW(Phdr) *_dl_phdr;
 extern size_t _dl_phnum;
 
 
-/* DTV with just one element plus overhead.  */
-static dtv_t static_dtv[3];
+static dtv_t static_dtv[2 + TLS_SLOTINFO_SURPLUS];
 
 
 static struct
@@ -173,7 +172,7 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
 		       & ~(max_align - 1));
 
   /* Initialize the dtv.  [0] is the length, [1] the generation counter.  */
-  static_dtv[0].counter = 1;
+  static_dtv[0].counter = (sizeof (static_dtv) / sizeof (static_dtv[0])) - 2;
   // static_dtv[1].counter = 0;		would be needed if not already done
 
   /* Initialize the TLS block.  */
diff --git a/sysdeps/generic/memset_chk.c b/sysdeps/generic/memset_chk.c
index c311914395..d6206ffc99 100644
--- a/sysdeps/generic/memset_chk.c
+++ b/sysdeps/generic/memset_chk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1997, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
diff --git a/sysdeps/generic/recv.c b/sysdeps/generic/recv.c
index 9c28b4b306..62af8fedf2 100644
--- a/sysdeps/generic/recv.c
+++ b/sysdeps/generic/recv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1997,2001,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -22,7 +22,7 @@
 /* Read N bytes into BUF from socket FD.
    Returns the number read or -1 for errors.  */
 ssize_t
-recv (fd, buf, n, flags)
+__recv (fd, buf, n, flags)
      int fd;
      void *buf;
      size_t n;
@@ -31,7 +31,7 @@ recv (fd, buf, n, flags)
   __set_errno (ENOSYS);
   return -1;
 }
-
+weak_alias (__recv, recv)
 
 stub_warning (recv)
 #include <stub-tag.h>
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
index 78c083f6ab..a965a4a5fc 100644
--- a/sysdeps/i386/dl-machine.h
+++ b/sysdeps/i386/dl-machine.h
@@ -299,14 +299,14 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
 
 #endif /* !dl_machine_h */
 
-#ifdef RESOLVE_MAP
-
 /* The i386 never uses Elf32_Rela relocations for the dynamic linker.
    Prelinked libraries may use Elf32_Rela though.  */
 #ifdef RTLD_BOOTSTRAP
 # define ELF_MACHINE_NO_RELA 1
 #endif
 
+#ifdef RESOLVE_MAP
+
 /* Perform the relocation specified by RELOC and SYM (which is fully resolved).
    MAP is the object containing the reloc.  */
 
diff --git a/sysdeps/i386/i686/dl-hash.h b/sysdeps/i386/i686/dl-hash.h
index 61183d80da..4bdd998aa8 100644
--- a/sysdeps/i386/i686/dl-hash.h
+++ b/sysdeps/i386/i686/dl-hash.h
@@ -1,5 +1,5 @@
 /* Compute hash alue for given string according to ELF standard.
-   Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -27,7 +27,7 @@
    would be much slower than the generic C implementation.  So don't
    use it.  */
 static unsigned int
-_dl_elf_hash (const unsigned char *name)
+_dl_elf_hash (const char *name)
 {
   unsigned int result;
   unsigned int temp0;
@@ -71,7 +71,7 @@ _dl_elf_hash (const unsigned char *name)
      "jnz 2b\n"
      "1:\t"
      : "=&r" (result), "=r" (name), "=&c" (temp0), "=&r" (temp1)
-     : "0" (0), "1" (name));
+     : "0" (0), "1" ((const unsigned char *) name));
 
   return result;
 }
diff --git a/sysdeps/i386/i686/memset.S b/sysdeps/i386/i686/memset.S
index 561188ffec..0b47547141 100644
--- a/sysdeps/i386/i686/memset.S
+++ b/sysdeps/i386/i686/memset.S
@@ -1,6 +1,6 @@
 /* memset/bzero -- set memory area to CH/0
    Highly optimized version for ix86, x>=6.
-   Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
 
@@ -101,3 +101,9 @@ ENTRY (BP_SYM (memset))
 #endif
 END (BP_SYM (memset))
 libc_hidden_builtin_def (memset)
+
+#if defined PIC && !defined NOT_IN_libc && !BZERO_P
+strong_alias (__memset_chk, __memset_zero_constant_len_parameter)
+	.section .gnu.warning.__memset_zero_constant_len_parameter
+	.string "memset used with constant zero length parameter; this could be due to transposed parameters"
+#endif
diff --git a/sysdeps/i386/i686/memset_chk.S b/sysdeps/i386/i686/memset_chk.S
index d178654994..cd93d5ee10 100644
--- a/sysdeps/i386/i686/memset_chk.S
+++ b/sysdeps/i386/i686/memset_chk.S
@@ -1,5 +1,5 @@
-/* Checking memset for x86-64.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+/* Checking memset for i686.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
diff --git a/sysdeps/mach/hurd/recv.c b/sysdeps/mach/hurd/recv.c
index a2b8fd5be5..b001729d18 100644
--- a/sysdeps/mach/hurd/recv.c
+++ b/sysdeps/mach/hurd/recv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1994,1997,2001,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -26,9 +26,8 @@
 /* Read N bytes into BUF from socket FD.
    Returns the number read or -1 for errors.  */
 
-/* XXX should be __recv ? */
 ssize_t
-recv (fd, buf, n, flags)
+__recv (fd, buf, n, flags)
      int fd;
      void *buf;
      size_t n;
@@ -62,3 +61,4 @@ recv (fd, buf, n, flags)
 
   return nread;
 }
+weak_alias (__recv, recv)
diff --git a/sysdeps/mach/hurd/setresgid.c b/sysdeps/mach/hurd/setresgid.c
index d0ee412b46..5e3c7f0836 100644
--- a/sysdeps/mach/hurd/setresgid.c
+++ b/sysdeps/mach/hurd/setresgid.c
@@ -1,5 +1,5 @@
 /* setresgid -- set effective group ID, real group ID, and saved-set group ID
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -75,3 +75,4 @@ __setresgid (gid_t egid, gid_t rgid, gid_t sgid)
   return err;
 }
 libc_hidden_def (__setresgid)
+weak_alias (__setresgid, setresgid)
diff --git a/sysdeps/mach/hurd/setresuid.c b/sysdeps/mach/hurd/setresuid.c
index 2d05dbc850..f9d76a95ca 100644
--- a/sysdeps/mach/hurd/setresuid.c
+++ b/sysdeps/mach/hurd/setresuid.c
@@ -1,5 +1,5 @@
 /* setresuid -- set effective user ID, real user ID, and saved-set user ID
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -75,3 +75,4 @@ __setresuid (uid_t euid, uid_t ruid, uid_t suid)
   return err;
 }
 libc_hidden_def (__setresuid)
+weak_alias (__setresuid, setresuid)
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index c9081345ab..5ec7262157 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -680,7 +680,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 				    h->h_length);
 			  else
 			    {
-			      int32_t *addr = (uint32_t *) (*pat)->addr;
+			      uint32_t *addr = (uint32_t *) (*pat)->addr;
 			      addr[3] = *(uint32_t *) h->h_addr_list[i];
 			      addr[2] = htonl (0xffff);
 			      addr[1] = 0;
diff --git a/sysdeps/powerpc/powerpc32/dl-machine.h b/sysdeps/powerpc/powerpc32/dl-machine.h
index de3b9e923a..545c19b300 100644
--- a/sysdeps/powerpc/powerpc32/dl-machine.h
+++ b/sysdeps/powerpc/powerpc32/dl-machine.h
@@ -204,7 +204,7 @@ extern void _dl_reloc_overflow (struct link_map *map,
    LOADADDR is the load address of the object; INFO is an array indexed
    by DT_* of the .dynamic section info.  */
 
-inline void
+auto inline void __attribute__ ((always_inline))
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
 		  void *const reloc_addr_arg)
@@ -298,7 +298,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
     }
 }
 
-static inline void
+auto inline void __attribute__ ((always_inline))
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
 			   void *const reloc_addr_arg)
 {
@@ -306,7 +306,7 @@ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
-static inline void
+auto inline void __attribute__ ((always_inline))
 elf_machine_lazy_rel (struct link_map *map,
 		      Elf32_Addr l_addr, const Elf32_Rela *reloc)
 {
diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h
index 5ddc22e3c9..33fc1b6a9c 100644
--- a/sysdeps/powerpc/powerpc64/dl-machine.h
+++ b/sysdeps/powerpc/powerpc64/dl-machine.h
@@ -487,7 +487,7 @@ extern void _dl_reloc_overflow (struct link_map *map,
                                 const Elf64_Sym *refsym)
                                 attribute_hidden;
 
-static inline void
+auto inline void __attribute__ ((always_inline))
 elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
 			   void *const reloc_addr_arg)
 {
@@ -497,7 +497,7 @@ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
 
 #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
 /* This computes the value used by TPREL* relocs.  */
-static Elf64_Addr __attribute__ ((const))
+auto inline Elf64_Addr __attribute__ ((always_inline, const))
 elf_machine_tprel (struct link_map *map,
 		   struct link_map *sym_map,
 		   const Elf64_Sym *sym,
@@ -518,7 +518,7 @@ elf_machine_tprel (struct link_map *map,
 
 /* Perform the relocation specified by RELOC and SYM (which is fully
    resolved).  MAP is the object containing the reloc.  */
-static inline void
+auto inline void __attribute__ ((always_inline))
 elf_machine_rela (struct link_map *map,
 		  const Elf64_Rela *reloc,
 		  const Elf64_Sym *sym,
@@ -803,11 +803,12 @@ elf_machine_rela (struct link_map *map,
   MODIFIED_CODE_NOQUEUE (reloc_addr);
 }
 
-static inline void
+auto inline void __attribute__ ((always_inline))
 elf_machine_lazy_rel (struct link_map *map,
 		      Elf64_Addr l_addr, const Elf64_Rela *reloc)
 {
   /* elf_machine_runtime_setup handles this.  */
 }
 
+
 #endif /* RESOLVE */
diff --git a/sysdeps/sh/dl-machine.h b/sysdeps/sh/dl-machine.h
index b66b4f0e42..e73c6d79c3 100644
--- a/sysdeps/sh/dl-machine.h
+++ b/sysdeps/sh/dl-machine.h
@@ -256,11 +256,11 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
 
 #endif /* !dl_machine_h */
 
-#ifdef RESOLVE_MAP
-
 /* SH never uses Elf32_Rel relocations.	 */
 #define ELF_MACHINE_NO_REL 1
 
+#ifdef RESOLVE_MAP
+
 /* Perform the relocation specified by RELOC and SYM (which is fully resolved).
    MAP is the object containing the reloc.  */
 
diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list
index 3bbce1c6fd..7b3f233566 100644
--- a/sysdeps/unix/sysv/linux/alpha/syscalls.list
+++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list
@@ -16,7 +16,6 @@ oldsemctl	EXTRA	semctl		i:iiii	__old_semctl	semctl@GLIBC_2.0
 sigstack	-	sigstack	2	sigstack
 vfork		-	vfork		0	__vfork		vfork
 
-getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 getpriority	-	getpriority	i:ii	__getpriority	getpriority
 open		-	open		Ci:siv	__libc_open	__open open !__libc_open64 __open64 open64
 open64		open	-
diff --git a/sysdeps/unix/sysv/linux/ia64/syscalls.list b/sysdeps/unix/sysv/linux/ia64/syscalls.list
index 31c7718d8b..c55c70ef54 100644
--- a/sysdeps/unix/sysv/linux/ia64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/ia64/syscalls.list
@@ -2,7 +2,6 @@
 
 umount2		-	umount		2	__umount2	umount2
 
-getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 getpriority	-	getpriority	i:ii	__getpriority	getpriority
 
 # semaphore and shm system calls
diff --git a/sysdeps/unix/sysv/linux/libc_fatal.c b/sysdeps/unix/sysv/linux/libc_fatal.c
index a79cfbabb9..c7fac6ab51 100644
--- a/sysdeps/unix/sysv/linux/libc_fatal.c
+++ b/sysdeps/unix/sysv/linux/libc_fatal.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993-1995,1997,2000,2002-2004 Free Software Foundation, Inc.
+/* Copyright (C) 1993-1995,1997,2000,2002-2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -27,6 +27,7 @@
 #include <sysdep.h>
 #include <unistd.h>
 #include <sys/syslog.h>
+#include <execinfo.h>
 
 /* Abort with an error message.  */
 #include <not-cancel.h>
@@ -141,8 +142,33 @@ __libc_message (int do_abort, const char *fmt, ...)
   va_end (ap_copy);
 
   if (do_abort)
-    /* Terminate the process.  */
-    abort ();
+    {
+      if (do_abort > 1 && written)
+	{
+	  void *addrs[64];
+#define naddrs (sizeof (addrs) / sizeof (addrs[0]))
+	  int n = __backtrace (addrs, naddrs);
+	  if (n > 2)
+	    {
+#define strnsize(str) str, strlen (str)
+#define writestr(str) write_not_cancel (fd, str)
+	      writestr (strnsize ("======= Backtrace: =========\n"));
+	      __backtrace_symbols_fd (addrs + 1, n - 1, fd);
+
+	      writestr (strnsize ("======= Memory map: ========\n"));
+	      int fd2 = open_not_cancel_2 ("/proc/self/maps", O_RDONLY);
+	      char buf[1024];
+	      ssize_t n2;
+	      while ((n2 = read_not_cancel (fd2, buf, sizeof (buf))) > 0)
+		if (write_not_cancel (fd, buf, n2) != n2)
+		  break;
+	      close_not_cancel_no_status (fd2);
+	    }
+	}
+
+      /* Terminate the process.  */
+      abort ();
+    }
 }
 
 
diff --git a/sysdeps/unix/sysv/linux/mips/Makefile b/sysdeps/unix/sysv/linux/mips/Makefile
index d5e4f6b72d..72fa87b3ff 100644
--- a/sysdeps/unix/sysv/linux/mips/Makefile
+++ b/sysdeps/unix/sysv/linux/mips/Makefile
@@ -9,11 +9,73 @@ sysdep_headers += sys/cachectl.h sys/sysmips.h sys/tas.h
 
 no_syscall_list_h = 1
 
-# Generate the list of SYS_* macros for the system calls (__NR_* macros).
-# We generate not only SYS_<syscall>, pointing at SYS_<abi>_<syscall> if
-# it exists, but also define SYS_<abi>_<syscall> for all ABIs.
+# A callable macro that expands to a shell command.  Preprocess file $(1)
+# using ABI option $(2) and see which macros it defines.  Print FOO for each
+# macro of the form __NR$(3)_FOO, filtering out ABI-specific __NR macros
+# that have a prefix other than $(3).
+mips_list_syscalls =	$(filter-out -m%,$(CC)) -E -x c $(+includes) \
+			    $(sysincludes) -D_LIBC -dM -mabi=$(2) $(1) | \
+			sed -n 's@^\#define __NR$(3)_\([^ ]*\) .*@\1@p' | \
+			sed -e '/^[ON]32_/d' -e '/^N64_/d' -e '/^64_/d' | \
+			LC_ALL=C sort
+
+# Generate a list of SYS_* macros from the linux __NR macros.
+#
+# Before version 2.6, linux had separate 32-bit and 64-bit MIPS ports,
+# each with its own set of headers.  The ports were merged for 2.6 and
+# this merged port defines the syscalls in a slightly different way.
+# There are therefore three sets of headers that we need to consider:
+#
+#    (1) Headers from the separate 32-bit MIPS port.  They just define
+#	 a single list of __NR macros.
+#
+#    (2) Headers from the separate 64-bit MIPS port.  They unconditionally
+#	 define syscalls for all three ABIs, with o32 syscalls prefixed
+#	 by __NR_O32, n32 syscalls prefixed by __NR_N32 and n64 syscalls
+#	 prefixed by plain __NR.
+#
+#    (3) Headers from the combined port.  They use the _MIPS_SIM macro to
+#	 define the right set of syscalls for the current ABI.  The syscalls
+#	 themselves have no special ABI prefix, but the headers also define:
+#
+#	    __NR_O32_Linux{,_syscalls}
+#	    __NR_N32_Linux{,_syscalls}
+#	    __NR_64_Linux{,_syscalls}
+#
+# In case (1) we just want a simple list of SYS_* macros.  In cases (2)
+# and (3) we want a file that will work for all three ABIs, regardless
+# of which ABI we are currently using.  We also want the file to work
+# if the user later moves from (2) to (3).  Thus the file we create
+# for (2) and (3) has the form:
+#
+#    #if _MIPS_SIM == _ABIN32
+#    # ifdef __NR_N32_open
+#    #  define SYS_n32syscall1 __NR_N32_n32syscall1
+#    #  ...
+#    # else
+#    #  define SYS_n32syscall1 __NR_n32syscall1
+#    #  ...
+#    # endif
+#    #elif _MIPS_SIM == _ABI64
+#    # define SYS_n64syscall1 __NR_n64syscall1
+#    # ...
+#    #else
+#    # ifdef __NR_O32_open
+#    #  define SYS_o32syscall1 __NR_O32_o32syscall1
+#    #  ...
+#    # else
+#    #  define SYS_o32syscall1 __NR_o32syscall1
+#    #  ...
+#    # endif
+#    #endif
+#
+# Here, __NR_N32_open and __NR_O32_open are used to detect case (2)
+# over case (3).  The n64 SYS_* macros can always use the normal
+# ABI-less names.
 $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/syscall.h
 	$(make-target-directory)
+	$(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC $< -MD -MP \
+	      -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' > /dev/null
 	{ \
 	 echo '/* Generated at libc build time from kernel syscall list.  */';\
 	 echo ''; \
@@ -22,28 +84,38 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/s
 	 echo '#endif'; \
 	 echo ''; \
 	 echo '#include <sgidefs.h>'; \
-	 rm -f $(@:.d=.h).newt; \
-	 $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \
-	       -x c $(+includes) $(sysincludes) $< -D_LIBC -dM | \
-	 sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' \
-	     > $(@:.d=.h).newt; \
-	 if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \
+	 rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \
+	 $(call mips_list_syscalls,$<,n32,_N32) > $(@:.d=.h).newn32; \
+	 if test -s $(@:.d=.h).newn32; then \
+	   if grep open $(@:.d=.h).newn32 > /dev/null; then \
+	     $(call mips_list_syscalls,$<,32,_O32) > $(@:.d=.h).new32; \
+	     $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \
+	   else \
+	     $(call mips_list_syscalls,$<,32,) > $(@:.d=.h).new32; \
+	     $(call mips_list_syscalls,$<,n32,) > $(@:.d=.h).newn32; \
+	     $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \
+	   fi; \
 	   echo '#if _MIPS_SIM == _ABIN32'; \
-	   sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt | \
-		LC_ALL=C sort; \
+	   echo '# ifdef __NR_N32_open'; \
+	   sed 's@\(.*\)@#  define SYS_\1 __NR_N32_\1@' < $(@:.d=.h).newn32; \
+	   echo '# else'; \
+	   sed 's@\(.*\)@#  define SYS_\1 __NR_\1@' < $(@:.d=.h).newn32; \
+	   echo '# endif'; \
 	   echo '#elif _MIPS_SIM == _ABI64'; \
-	   sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt | \
-		LC_ALL=C sort; \
+	   sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).new64; \
 	   echo '#else'; \
-	   sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt | \
-		LC_ALL=C sort; \
+	   echo '# ifdef __NR_O32_open'; \
+	   sed 's@\(.*\)@#  define SYS_\1 __NR_O32_\1@' < $(@:.d=.h).new32; \
+	   echo '# else'; \
+	   sed 's@\(.*\)@#  define SYS_\1 __NR_\1@' < $(@:.d=.h).new32; \
+	   echo '# endif'; \
 	   echo '#endif'; \
-	   sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt | \
-		LC_ALL=C sort +1.8; \
 	 else \
-	   cat $(@:.d=.h).newt; \
+	   $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC -dM $< | \
+	   sed -n 's@^\#define __NR_\([^ ]*\) .*@\#define SYS_\1 __NR_\1@p' | \
+	   LC_ALL=C sort; \
 	 fi; \
-	 rm $(@:.d=.h).newt; \
+	 rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \
 	} > $(@:.d=.h).new
 	mv -f $(@:.d=.h).new $(@:.d=.h)
 ifneq (,$(objpfx))
diff --git a/sysdeps/unix/sysv/linux/mips/configure b/sysdeps/unix/sysv/linux/mips/configure
index c081795aa1..4d9568f001 100755
--- a/sysdeps/unix/sysv/linux/mips/configure
+++ b/sysdeps/unix/sysv/linux/mips/configure
@@ -18,7 +18,7 @@ mips*64*)
     { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&5
 echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&2;}
     echo '#include <asm/unistd.h>' > asm-unistd.h
-  else
+  elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then
     # The point of this preprocessing is to turn __NR_<syscall> into
     # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
     # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
@@ -68,6 +68,8 @@ BEGIN { print "#include <sgidefs.h>"; }
 {
 	print;
 }'
+  else
+    echo '#include <asm/unistd.h>' > asm-unistd.h
   fi ;;
 mips*)
   rm -f asm-unistd.h
diff --git a/sysdeps/unix/sysv/linux/mips/configure.in b/sysdeps/unix/sysv/linux/mips/configure.in
index 67d965dfda..e2e5d16c55 100644
--- a/sysdeps/unix/sysv/linux/mips/configure.in
+++ b/sysdeps/unix/sysv/linux/mips/configure.in
@@ -18,7 +18,7 @@ mips*64*)
   if test ! -f "$asm_unistd_h"; then
     AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed])
     echo '#include <asm/unistd.h>' > asm-unistd.h
-  else
+  elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then
     # The point of this preprocessing is to turn __NR_<syscall> into
     # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
     # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
@@ -68,6 +68,8 @@ BEGIN { print "#include <sgidefs.h>"; }
 {
 	print;
 }'
+  else
+    echo '#include <asm/unistd.h>' > asm-unistd.h
   fi ;;
 mips*)
   rm -f asm-unistd.h
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h
index b0316b657b..e69de29bb2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h
@@ -1,36 +0,0 @@
-/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H
-#define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1
-
-/* There is some commonality.  */
-#include <sysdeps/unix/sysv/linux/mips/mips32/sysdep.h>
-
-/* For Linux we can use the system call table in the header file
-	/usr/include/asm/unistd.h
-   of the kernel.  But these symbols do not follow the SYS_* syntax
-   so we have to redefine the `SYS_ify' macro here.  */
-#undef SYS_ify
-#ifdef __STDC__
-# define SYS_ify(syscall_name)	__NR_O32_##syscall_name
-#else
-# define SYS_ify(syscall_name)	__NR_O32_/**/syscall_name
-#endif
-
-#endif /* linux/mips/mips32/kern64/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
index be343aabca..e6013669a4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,9 +28,9 @@
    so we have to redefine the `SYS_ify' macro here.  */
 #undef SYS_ify
 #ifdef __STDC__
-# define SYS_ify(syscall_name)	__NR_N32_##syscall_name
+# define SYS_ify(syscall_name)	__NR_##syscall_name
 #else
-# define SYS_ify(syscall_name)	__NR_N32_/**/syscall_name
+# define SYS_ify(syscall_name)	__NR_/**/syscall_name
 #endif
 
 #ifdef __ASSEMBLER__
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
index f30a465081..dc0a1a0edc 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,9 +28,9 @@
    so we have to redefine the `SYS_ify' macro here.  */
 #undef SYS_ify
 #ifdef __STDC__
-# define SYS_ify(syscall_name)	__NR_N64_##syscall_name
+# define SYS_ify(syscall_name)	__NR_##syscall_name
 #else
-# define SYS_ify(syscall_name)	__NR_N64_/**/syscall_name
+# define SYS_ify(syscall_name)	__NR_/**/syscall_name
 #endif
 
 #ifdef __ASSEMBLER__
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
index 2ee3e60229..81f37c5103 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992,1997-2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1992,1997-2003,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -109,7 +109,7 @@
 
 # undef INTERNAL_SYSCALL_ERROR_P
 # define INTERNAL_SYSCALL_ERROR_P(val, err) \
-  (__builtin_expect (err & (1 << 28), 0))
+  ((void) (val), __builtin_expect ((err) & (1 << 28), 0))
 
 # undef INTERNAL_SYSCALL_ERRNO
 # define INTERNAL_SYSCALL_ERRNO(val, err)     (val)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
index 38a376fa90..17bfa9014f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-   Free Software Foundation, Inc.
+/* Copyright (C) 1992,1997,1998,1999,2000,2001,2002,2003,2004,2005
+	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -122,7 +122,7 @@
 
 #undef INTERNAL_SYSCALL_ERROR_P
 #define INTERNAL_SYSCALL_ERROR_P(val, err) \
-  (__builtin_expect (err & (1 << 28), 0))
+  ((void) (err), __builtin_expect ((err) & (1 << 28), 0))
 
 #undef INTERNAL_SYSCALL_ERRNO
 #define INTERNAL_SYSCALL_ERRNO(val, err)     (val)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
index 477f8a9f09..791ab9ba52 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
@@ -1,6 +1,5 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
-getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 vfork		-	vfork		0	__vfork		vfork
 
 # semaphore and shm system calls
diff --git a/sysdeps/unix/sysv/linux/sys/kd.h b/sysdeps/unix/sysv/linux/sys/kd.h
index e0d2e869cf..d459c079ed 100644
--- a/sysdeps/unix/sysv/linux/sys/kd.h
+++ b/sysdeps/unix/sysv/linux/sys/kd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -21,9 +21,15 @@
 
 /* Make sure the <linux/types.h> header is not loaded.  */
 #ifndef _LINUX_TYPES_H
-# define _LINUX_TYPES_H	1
+# define _LINUX_TYPES_H		1
+# define __undef_LINUX_TYPES_H
 #endif
 
 #include <linux/kd.h>
 
+#ifdef __undef_LINUX_TYPES_H
+# undef _LINUX_TYPES_H
+# undef __undef_LINUX_TYPES_H
+#endif
+
 #endif	/* sys/kd.h */
diff --git a/sysdeps/x86_64/memset.S b/sysdeps/x86_64/memset.S
index 6c47f4c863..6b718b7126 100644
--- a/sysdeps/x86_64/memset.S
+++ b/sysdeps/x86_64/memset.S
@@ -1,6 +1,6 @@
 /* memset/bzero -- set memory area to CH/0
    Optimized version for x86-64.
-   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>.
 
@@ -138,3 +138,9 @@ END (memset)
 #if !BZERO_P
 libc_hidden_builtin_def (memset)
 #endif
+
+#if !BZERO_P && defined PIC && !defined NOT_IN_libc
+strong_alias (__memset_chk, __memset_zero_constant_len_parameter)
+	.section .gnu.warning.__memset_zero_constant_len_parameter
+	.string "memset used with constant zero length parameter; this could be due to transposed parameters"
+#endif
diff --git a/sysdeps/x86_64/memset_chk.S b/sysdeps/x86_64/memset_chk.S
index e62cb58cc0..c1c8c23f90 100644
--- a/sysdeps/x86_64/memset_chk.S
+++ b/sysdeps/x86_64/memset_chk.S
@@ -1,5 +1,5 @@
 /* Checking memset for x86-64.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or