summaryrefslogtreecommitdiff
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)
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 differ
diff --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 differ
diff --git a/iconvdata/testdata/IBM1137 b/iconvdata/testdata/IBM1137
new file mode 100644
index 0000000000..30994bfe6b
--- /dev/null
+++ b/iconvdata/testdata/IBM1137
Binary files differ
diff --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 differ
diff --git a/iconvdata/testdata/IBM1153 b/iconvdata/testdata/IBM1153
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1153
Binary files differ
diff --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 differ
diff --git a/iconvdata/testdata/IBM1154 b/iconvdata/testdata/IBM1154
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1154
Binary files differ
diff --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 differ
diff --git a/iconvdata/testdata/IBM1155 b/iconvdata/testdata/IBM1155
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1155
Binary files differ
diff --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 differ
diff --git a/iconvdata/testdata/IBM1156 b/iconvdata/testdata/IBM1156
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1156
Binary files differ
diff --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 differ
diff --git a/iconvdata/testdata/IBM1157 b/iconvdata/testdata/IBM1157
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1157
Binary files differ
diff --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 differ
diff --git a/iconvdata/testdata/IBM1158 b/iconvdata/testdata/IBM1158
new file mode 100644
index 0000000000..a67fa4ccd3
--- /dev/null
+++ b/iconvdata/testdata/IBM1158
Binary files differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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