about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1996-10-31 02:57:12 +0000
committerUlrich Drepper <drepper@redhat.com>1996-10-31 02:57:12 +0000
commitba1ffaa1c6989873b57edc84491bfd1308b2190d (patch)
tree77274c1136f21a58e60397fdd62ad03846bc5888
parentf0f4432f46882d22f61a89f4130a697313f53901 (diff)
downloadglibc-ba1ffaa1c6989873b57edc84491bfd1308b2190d.tar.gz
glibc-ba1ffaa1c6989873b57edc84491bfd1308b2190d.tar.xz
glibc-ba1ffaa1c6989873b57edc84491bfd1308b2190d.zip
update from main archive 961030 cvs/libc-961031
Thu Oct 31 00:01:39 1996  Ulrich Drepper  <drepper@cygnus.com>

	* signal/Makefile (routines): Add sigwait.
	* signal/signal.h: Add prototype for sigwait.
	* sysdeps/posix/sigwait.c: New file.  Implementation of sigwait
	function from POSIX.1c.
	* sysdeps/stub/sigwait.c: New file.  Stub version of sigwait.

Wed Oct 30 02:01:17 1996  Richard Henderson  <rth@tamu.edu>

	* sunrpc/xdr_float.c (xdr_float): Handle sizeof(float)!=sizeof(long),
	but don't bother going farther than sizeof(float)==sizeof(int).
	(xdr_double): Handle little-endian machines!  Handle sizeof(double)
	!= 2*sizeof(long), though again don't bother with more than int.

Thu Oct 29 16:09:42 1996  Craig Metz  <cmetz@inner.net>

	* sysdeps/posix/getaddrinfo.c: Use buffer limits for inet_ntop
	function.

Tue Oct 29 12:37:22 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makerules: Create symbolic links for linking in $(libdir).
	(make-link): Use absolute path for destination if this is not in
	the same directory.

	* elf/rtld.c (dl_main): When verifying don't check the name of
	the dynamic linker.

	* shlib-versions: Change entries for Hurd specific libs from
	*-*-gnu* to *-*-gnu?* so that i586-pc-linux-gnu does not match
	these entries.

	* assert/assert.h: Reformat copyright.
	Change reference to ANSI into reference to ISO C.
	* ctype/ctype.h: Likewise.
	* errno.h: Likewise.
	* limits.h: Likewise.
	* math/math.h: Likewise.
	* setjmp/setjmp.h: Likewise.
	* stdio/stdio.h: Likewise.
	* libio/stdio.h: Likewise.
	* stdlib/stdlib.h: Likewise.
	* string/string.h: Likewise.
	* time/time.h: Likewise.

	* string/argz.h: Use __const is definitions.

	* elf/dlfcn.h: Use __const and __P.  Reformat copyright.
	* misc/err.h: Likewise.

	* wctype/wctype.h (wctrans_t): Use __const instead of const.

	* Makeconfig ($(common-objpfx)soversions.mk): Generate list of
	sonames for versioned libraries.
	* Makefile: Remove code to generate libc-version.h.
	Generate gnu/lib-names.h with info from soversions.mk.
	* features.h: Define __GLIBC__ and __GLIBC_MINOR__.

	* dirent/tst-seekdir.c: Initialize save3.
	* grp/testgrp.c: Initialize my_group.

	* grp/fgetgrent_r.c: Change interface to follow POSIX.1c.
	* grp/grp.h: Likewise.
	* nss/getXXbyYY.c: Likewise.
	* nss/getXXbyYY_r.c: Likewise.
	* nss/getXXent.c: Likewise.
	* nss/getXXent_r.c: Likewise.
	* pwd/fgetpwent_r.c: Likewise.
	* pwd/pwd.h: Likewise.
	* shadow/fgetspent_r.c: Likewise.
	* shadow/sgetspent.c: Likewise.
	* shadow/sgetspent_r.c: Likewise.
	* grp/fgetgrent.c: Adapt for change in interface of fgetgrent_r.
	* pwd/fgetpwent.c: Likewise, for fgetpwent_r.c.
	* shadow/fgetspent.c: Likewise, for fgetpwent_r.c.
	* resolv/netdb.h: Adapt prototypes for reentrant functions to
	follow POSIX.1c.
	* sunrpc/rpc/netdb.h: Likewise,
	* shadow/shadow.h: Likewise.

	* inet/getnetgrent_r.c: Follow change in pwd/grp function interface.

	* sysdeps/unix/getlogin_r.c: Return ERANGE when buffer is too small.

	* inet/herrno.c: Don't define __h_errno.  Only h_errno otherwise the
	ELF aliasing creates strange situations.
	* sysdeps/unix/sysv/linux/errnos.H: Define __set_errno as inline
	function.
	* sysdeps/unix/sysv/linux/i386/sysdep.S: Don't define __errno.
	* sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.

	* libio/libio.h: Don't declare _IO_flockfile and _IO_funlockfile
	weak.

	* locale/programs/charmap.c: Add casts to prevent warnings.
	* locale/programs/linereader.h: Likewise.
	* locale/programs/ld-collate.c: Likewise.
	* locale/programs/stringtrans.c: Likewise.
	Change types for various variables to prevent warnings.
	* locale/programs/ld-ctype.c: Likewise.
	* locale/programs/linereader.h (lr_ungetc): Likewise.
	* locale/programs/charset.h (struct charset): Use `unsigned int'
	as type for width_default.
	* posix/regex.c: Change type of `this_reg' variables.
	* stdio-common/Makefile: Use -Wno-format for tstdiomisc.c.
	* stdio-common/bug5.c: De-ANSI-fy.  Use correct types for
	variables.
	* stdio-common/printf_fp.c: Initialize to_shift.
	* stdio-common/test_rdwr.c: Add cast.
	* stdio-common/vfprintf.c: Add casts and use correct types to
	prevent warnings.
	* stdio-common/vfscanf.c: Initialize str and strptr.
	* sysdeps/libm-ieee754/e_jnf.c: Use correct types to prevent warnings.
	* sysdeps/libm-ieee754/e_pow.c: Likewise.
	* sysdeps/libm-ieee754/e_powf.c: Likewise.
	* sysdeps/libm-ieee754/e_rem_pio2f.c: Likewise.
	* time/test-tz.c: Likewise.

	* manual/creature.texi: Document _REENTRANT and _THREAD_SAFE.
	* manual/libc.texinfo: Prevent makeinfo failure by avoiding
	libc.cp index.  This must be fixed.
	* manual/nss.texi: Adapt for correct POSIX.1c interface of
	reentrant functions.
	* manual/users.texi: Document netgroup functions.

	* po/es.po: Updated.
	* po/fr.po: Updated.

	* posix/fnmatch.c: Change to match libit version.

	* posix/unistd.h: Change prototype for ttyname_r to match POSIX.1c.
	* sysdep/posix/ttyname_r.c: Likewise.

	* stdlib/atexit.h (__new_exitfn): Add internal locking.
	* stdlib/exit.c: De-ANSI-fy.  Handle new ef_us value for flavor.
	* stdlib/exit.h: De-ANSI-fy.  Define new ef_us value for flavor.
	* stdlib/random.c (__srandom): Add internal locking.
	(__initstate): Likewise.
	(__setstate): Likewise.
	(__random): Likewise.

Mon Oct 28 22:28:37 1996  NIIBE Yutaka  <gniibe@mri.co.jp>

	* sysdeps/generic/crypt-entry.c (crypt_r): Use __set_errno.
	(crypt): Likewise.
	* resolv/gethnamaddr.c (gethostbyname2): Likewise.
	* sysdeps/generic/uname.c: Likewise.
	* sysdeps/posix/rename.c: Likewise.
	* sysdeps/stub/setrlimit.c: Likewise.

	* nss/nss_db/db-netgrp.c (_nss_db_setnetgrent): Fix typo.

Sun Oct 27 11:12:50 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* locale/programs/ld-collate.c (collate_order_elem): Fix format
	string.
	(collate_element_to): Cast field width argument to `int' for
	format string.
	(collate_symbol): Likewise.
	(collate_order_elem): Likewise.
	(collate_weight_bsymbol): Likewise.
	(collate_simple_weight): Likewise.

	* locale/programs/ld-time.c (STRARR_ELEM): Fix format string.

	* locale/programs/ld-ctype.c (ctype_class_newP): Add missing
	argument for format string.
	(ctype_map_newP): Likewise.
	(set_class_defaults): Fix format string.

	* locale/programs/localedef.c (construct_output_path): Putting an
	explicit \0 into the format string does not work, use %c.

Sat Oct 26 20:38:36 1996  Richard Henderson  <rth@tamu.edu>

	* Makerules: Install all shared libraries in $(slibdir).

	* login/Makefile: Build libutil.so in others pass after
	libc.so is created.

	* misc/mntent.h: Include <paths.h> for _PATH_MNTTAB & _PATH_MOUNTED.

	* string/stratcliff.c: Allocate 3 pages instead of one, then use
	mprotect so that we know that the adjacent pages are inaccessible.

	* resource/sys/resource.h: Move all structures and enums to ...
	* sysdeps/generic/resourcebits.h: ... here ...
	* sysdeps/unix/bsd/sun/sunos4/resourcebits.h: ... and here.
	* sysdeps/unix/sysv/linux/alpha/resourcebits.h: Remove.
	* sysdeps/unix/sysv/linux/i386/resourcebits.h: Remove.
	* sysdeps/unix/sysv/linux/m68k/resourcebits.h: Remove.
	* sysdeps/unix/sysv/linux/mips/resourcebits.h: Remove.
	* sysdeps/unix/sysv/linux/resourcebits.h: New file.  Use kernel
	header for RLIMIT_* definitions.  The members of struct rlimit
	are longs.


Thu Oct 24 17:43:34 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* MakeTAGS (sysdep-dirs): Fix typo.

Wed Oct 23 03:45:22 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile (headers): Don't mention libc-version.h.
	(install-others): ...but here.

	* time/strptime.c: Recognize %s, %u, %g, and %G format.
 	nothing is found.  This guarantees all subsequent calls behave
	* sysdeps/unix/sysv/linux/syscalls.list: Change function name for
	* io/getwd.c (getwd) [! PATH_MAX]: Don't assume that the user's
	buffer is any longer than the amount necessary to hold the
	filename; the Hurd getcwd uses the *entire* contents of the
	buffer, however long it is specified to be.
	* posix/getconf.c: De-ANSI-fy.  Recognize POSIX.2 constant names.
	since these do not depend on the platform.
-rw-r--r--ChangeLog225
-rw-r--r--FAQ39
-rw-r--r--MakeTAGS2
-rw-r--r--Makeconfig6
-rw-r--r--Makefile60
-rw-r--r--Makerules27
-rw-r--r--assert/assert.h28
-rw-r--r--ctype/ctype.h30
-rw-r--r--dirent/tst-seekdir.c2
-rw-r--r--elf/dlfcn.h45
-rw-r--r--elf/rtld.c4
-rw-r--r--errno.h28
-rw-r--r--features.h15
-rw-r--r--grp/fgetgrent.c8
-rw-r--r--grp/fgetgrent_r.c15
-rw-r--r--grp/grp.h36
-rw-r--r--grp/testgrp.c2
-rw-r--r--inet/getnetgrent_r.c8
-rw-r--r--inet/herrno.c7
-rw-r--r--libio/libio.h5
-rw-r--r--libio/stdio.h2
-rw-r--r--limits.h28
-rw-r--r--locale/programs/charmap.c8
-rw-r--r--locale/programs/charset.h2
-rw-r--r--locale/programs/ld-collate.c53
-rw-r--r--locale/programs/ld-ctype.c50
-rw-r--r--locale/programs/ld-time.c2
-rw-r--r--locale/programs/linereader.c6
-rw-r--r--locale/programs/linereader.h2
-rw-r--r--locale/programs/localedef.c6
-rw-r--r--locale/programs/stringtrans.c2
-rw-r--r--login/Makefile2
-rw-r--r--manual/creature.texi14
-rw-r--r--manual/libc.texinfo9
-rw-r--r--manual/nss.texi45
-rw-r--r--manual/users.texi360
-rw-r--r--math/math.h30
-rw-r--r--misc/err.h46
-rw-r--r--misc/mntent.h1
-rw-r--r--nss/getXXbyYY.c17
-rw-r--r--nss/getXXbyYY_r.c11
-rw-r--r--nss/getXXent.c15
-rw-r--r--nss/getXXent_r.c11
-rw-r--r--nss/nss_db/db-netgrp.c2
-rw-r--r--po/es.po2327
-rw-r--r--po/fr.po917
-rw-r--r--posix/fnmatch.c23
-rw-r--r--posix/regex.c7
-rw-r--r--posix/unistd.h4
-rw-r--r--pwd/fgetpwent.c8
-rw-r--r--pwd/fgetpwent_r.c15
-rw-r--r--pwd/pwd.h50
-rw-r--r--resolv/gethnamaddr.c2
-rw-r--r--resolv/netdb.h232
-rw-r--r--resource/sys/resource.h87
-rw-r--r--setjmp/setjmp.h28
-rw-r--r--shadow/fgetspent.c6
-rw-r--r--shadow/fgetspent_r.c12
-rw-r--r--shadow/sgetspent.c6
-rw-r--r--shadow/sgetspent_r.c12
-rw-r--r--shadow/shadow.h50
-rw-r--r--shlib-versions8
-rw-r--r--signal/Makefile2
-rw-r--r--signal/signal.h5
-rw-r--r--stdio-common/Makefile1
-rw-r--r--stdio-common/bug5.c8
-rw-r--r--stdio-common/printf_fp.c2
-rw-r--r--stdio-common/test_rdwr.c11
-rw-r--r--stdio-common/vfprintf.c10
-rw-r--r--stdio-common/vfscanf.c5
-rw-r--r--stdio/stdio.h28
-rw-r--r--stdlib/atexit.c57
-rw-r--r--stdlib/exit.c23
-rw-r--r--stdlib/exit.h12
-rw-r--r--stdlib/random.c30
-rw-r--r--stdlib/stdlib.h28
-rw-r--r--string/argz.h9
-rw-r--r--string/stratcliff.c19
-rw-r--r--string/string.h28
-rw-r--r--sunrpc/rpc/netdb.h36
-rw-r--r--sunrpc/xdr_float.c82
-rw-r--r--sysdeps/generic/crypt-entry.c4
-rw-r--r--sysdeps/generic/resourcebits.h87
-rw-r--r--sysdeps/generic/uname.c2
-rw-r--r--sysdeps/libm-ieee754/e_jnf.c31
-rw-r--r--sysdeps/libm-ieee754/e_pow.c46
-rw-r--r--sysdeps/libm-ieee754/e_powf.c26
-rw-r--r--sysdeps/libm-ieee754/e_rem_pio2f.c50
-rw-r--r--sysdeps/posix/getaddrinfo.c10
-rw-r--r--sysdeps/posix/rename.c2
-rw-r--r--sysdeps/posix/sigwait.c92
-rw-r--r--sysdeps/posix/ttyname_r.c30
-rw-r--r--sysdeps/stub/setrlimit.c2
-rw-r--r--sysdeps/stub/sigwait.c31
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/resourcebits.h85
-rw-r--r--sysdeps/unix/getlogin_r.c14
-rw-r--r--sysdeps/unix/sysv/linux/errnos.h46
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.S5
-rw-r--r--sysdeps/unix/sysv/linux/m68k/sysdep.S5
-rw-r--r--time/test-tz.c4
-rw-r--r--time/time.h28
-rw-r--r--wctype/wctype.h62
102 files changed, 4303 insertions, 1865 deletions
diff --git a/ChangeLog b/ChangeLog
index 00165e258a..68f5ea8836 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,210 @@
+Thu Oct 31 00:01:39 1996  Ulrich Drepper  <drepper@cygnus.com>
+
+	* signal/Makefile (routines): Add sigwait.
+	* signal/signal.h: Add prototype for sigwait.
+	* sysdeps/posix/sigwait.c: New file.  Implementation of sigwait
+	function from POSIX.1c.
+	* sysdeps/stub/sigwait.c: New file.  Stub version of sigwait.
+
+Wed Oct 30 02:01:17 1996  Richard Henderson  <rth@tamu.edu>
+
+	* sunrpc/xdr_float.c (xdr_float): Handle sizeof(float)!=sizeof(long),
+	but don't bother going farther than sizeof(float)==sizeof(int).
+	(xdr_double): Handle little-endian machines!  Handle sizeof(double)
+	!= 2*sizeof(long), though again don't bother with more than int.
+
+Thu Oct 29 16:09:42 1996  Craig Metz  <cmetz@inner.net>
+
+	* sysdeps/posix/getaddrinfo.c: Use buffer limits for inet_ntop
+	function.
+
+Tue Oct 29 12:37:22 1996  Ulrich Drepper  <drepper@cygnus.com>
+
+	* Makerules: Create symbolic links for linking in $(libdir).
+	(make-link): Use absolute path for destination if this is not in
+	the same directory.
+
+	* elf/rtld.c (dl_main): When verifying don't check the name of
+	the dynamic linker.
+
+	* shlib-versions: Change entries for Hurd specific libs from
+	*-*-gnu* to *-*-gnu?* so that i586-pc-linux-gnu does not match
+	these entries.
+
+	* assert/assert.h: Reformat copyright.
+	Change reference to ANSI into reference to ISO C.
+	* ctype/ctype.h: Likewise.
+	* errno.h: Likewise.
+	* limits.h: Likewise.
+	* math/math.h: Likewise.
+	* setjmp/setjmp.h: Likewise.
+	* stdio/stdio.h: Likewise.
+	* libio/stdio.h: Likewise.
+	* stdlib/stdlib.h: Likewise.
+	* string/string.h: Likewise.
+	* time/time.h: Likewise.
+
+	* string/argz.h: Use __const is definitions.
+
+	* elf/dlfcn.h: Use __const and __P.  Reformat copyright.
+	* misc/err.h: Likewise.
+
+	* wctype/wctype.h (wctrans_t): Use __const instead of const.
+
+	* Makeconfig ($(common-objpfx)soversions.mk): Generate list of
+	sonames for versioned libraries.
+	* Makefile: Remove code to generate libc-version.h.
+	Generate gnu/lib-names.h with info from soversions.mk.
+	* features.h: Define __GLIBC__ and __GLIBC_MINOR__.
+
+	* dirent/tst-seekdir.c: Initialize save3.
+	* grp/testgrp.c: Initialize my_group.
+
+	* grp/fgetgrent_r.c: Change interface to follow POSIX.1c.
+	* grp/grp.h: Likewise.
+	* nss/getXXbyYY.c: Likewise.
+	* nss/getXXbyYY_r.c: Likewise.
+	* nss/getXXent.c: Likewise.
+	* nss/getXXent_r.c: Likewise.
+	* pwd/fgetpwent_r.c: Likewise.
+	* pwd/pwd.h: Likewise.
+	* shadow/fgetspent_r.c: Likewise.
+	* shadow/sgetspent.c: Likewise.
+	* shadow/sgetspent_r.c: Likewise.
+	* grp/fgetgrent.c: Adapt for change in interface of fgetgrent_r.
+	* pwd/fgetpwent.c: Likewise, for fgetpwent_r.c.
+	* shadow/fgetspent.c: Likewise, for fgetpwent_r.c.
+	* resolv/netdb.h: Adapt prototypes for reentrant functions to
+	follow POSIX.1c.
+	* sunrpc/rpc/netdb.h: Likewise,
+	* shadow/shadow.h: Likewise.
+
+	* inet/getnetgrent_r.c: Follow change in pwd/grp function interface.
+
+	* sysdeps/unix/getlogin_r.c: Return ERANGE when buffer is too small.
+
+	* inet/herrno.c: Don't define __h_errno.  Only h_errno otherwise the
+	ELF aliasing creates strange situations.
+	* sysdeps/unix/sysv/linux/errnos.H: Define __set_errno as inline
+	function.
+	* sysdeps/unix/sysv/linux/i386/sysdep.S: Don't define __errno.
+	* sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.
+
+	* libio/libio.h: Don't declare _IO_flockfile and _IO_funlockfile
+	weak.
+
+	* locale/programs/charmap.c: Add casts to prevent warnings.
+	* locale/programs/linereader.h: Likewise.
+	* locale/programs/ld-collate.c: Likewise.
+	* locale/programs/stringtrans.c: Likewise.
+	Change types for various variables to prevent warnings.
+	* locale/programs/ld-ctype.c: Likewise.
+	* locale/programs/linereader.h (lr_ungetc): Likewise.
+	* locale/programs/charset.h (struct charset): Use `unsigned int'
+	as type for width_default.
+	* posix/regex.c: Change type of `this_reg' variables.
+	* stdio-common/Makefile: Use -Wno-format for tstdiomisc.c.
+	* stdio-common/bug5.c: De-ANSI-fy.  Use correct types for
+	variables.
+	* stdio-common/printf_fp.c: Initialize to_shift.
+	* stdio-common/test_rdwr.c: Add cast.
+	* stdio-common/vfprintf.c: Add casts and use correct types to
+	prevent warnings.
+	* stdio-common/vfscanf.c: Initialize str and strptr.
+	* sysdeps/libm-ieee754/e_jnf.c: Use correct types to prevent warnings.
+	* sysdeps/libm-ieee754/e_pow.c: Likewise.
+	* sysdeps/libm-ieee754/e_powf.c: Likewise.
+	* sysdeps/libm-ieee754/e_rem_pio2f.c: Likewise.
+	* time/test-tz.c: Likewise.
+
+	* manual/creature.texi: Document _REENTRANT and _THREAD_SAFE.
+	* manual/libc.texinfo: Prevent makeinfo failure by avoiding
+	libc.cp index.  This must be fixed.
+	* manual/nss.texi: Adapt for correct POSIX.1c interface of
+	reentrant functions.
+	* manual/users.texi: Document netgroup functions.
+
+	* po/es.po: Updated.
+	* po/fr.po: Updated.
+
+	* posix/fnmatch.c: Change to match libit version.
+
+	* posix/unistd.h: Change prototype for ttyname_r to match POSIX.1c.
+	* sysdep/posix/ttyname_r.c: Likewise.
+
+	* stdlib/atexit.h (__new_exitfn): Add internal locking.
+	* stdlib/exit.c: De-ANSI-fy.  Handle new ef_us value for flavor.
+	* stdlib/exit.h: De-ANSI-fy.  Define new ef_us value for flavor.
+	* stdlib/random.c (__srandom): Add internal locking.
+	(__initstate): Likewise.
+	(__setstate): Likewise.
+	(__random): Likewise.
+
+Mon Oct 28 22:28:37 1996  NIIBE Yutaka  <gniibe@mri.co.jp>
+
+	* sysdeps/generic/crypt-entry.c (crypt_r): Use __set_errno.
+	(crypt): Likewise.
+	* resolv/gethnamaddr.c (gethostbyname2): Likewise.
+	* sysdeps/generic/uname.c: Likewise.
+	* sysdeps/posix/rename.c: Likewise.
+	* sysdeps/stub/setrlimit.c: Likewise.
+
+	* nss/nss_db/db-netgrp.c (_nss_db_setnetgrent): Fix typo.
+
+Sun Oct 27 11:12:50 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* locale/programs/ld-collate.c (collate_order_elem): Fix format
+	string.
+	(collate_element_to): Cast field width argument to `int' for
+	format string.
+	(collate_symbol): Likewise.
+	(collate_order_elem): Likewise.
+	(collate_weight_bsymbol): Likewise.
+	(collate_simple_weight): Likewise.
+
+	* locale/programs/ld-time.c (STRARR_ELEM): Fix format string.
+
+	* locale/programs/ld-ctype.c (ctype_class_newP): Add missing
+	argument for format string.
+	(ctype_map_newP): Likewise.
+	(set_class_defaults): Fix format string.
+
+	* locale/programs/localedef.c (construct_output_path): Putting an
+	explicit \0 into the format string does not work, use %c.
+
+Sat Oct 26 20:38:36 1996  Richard Henderson  <rth@tamu.edu>
+
+	* Makerules: Install all shared libraries in $(slibdir).
+
+	* login/Makefile: Build libutil.so in others pass after
+	libc.so is created.
+
+	* misc/mntent.h: Include <paths.h> for _PATH_MNTTAB & _PATH_MOUNTED.
+
+	* string/stratcliff.c: Allocate 3 pages instead of one, then use
+	mprotect so that we know that the adjacent pages are inaccessible.
+
+	* resource/sys/resource.h: Move all structures and enums to ...
+	* sysdeps/generic/resourcebits.h: ... here ...
+	* sysdeps/unix/bsd/sun/sunos4/resourcebits.h: ... and here.
+	* sysdeps/unix/sysv/linux/alpha/resourcebits.h: Remove.
+	* sysdeps/unix/sysv/linux/i386/resourcebits.h: Remove.
+	* sysdeps/unix/sysv/linux/m68k/resourcebits.h: Remove.
+	* sysdeps/unix/sysv/linux/mips/resourcebits.h: Remove.
+	* sysdeps/unix/sysv/linux/resourcebits.h: New file.  Use kernel
+	header for RLIMIT_* definitions.  The members of struct rlimit
+	are longs.
+
+
+Thu Oct 24 17:43:34 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* MakeTAGS (sysdep-dirs): Fix typo.
+
+Wed Oct 23 03:45:22 1996  Ulrich Drepper  <drepper@cygnus.com>
+
+	* Makefile (headers): Don't mention libc-version.h.
+	(install-others): ...but here.
+
 Tue Oct 22 21:38:21 1996  Ulrich Drepper  <drepper@cygnus.com>
 
 	* version.h: Bump version number to 1.97.
@@ -449,7 +656,7 @@ Sat Oct 12 23:10:43 1996  Ulrich Drepper  <drepper@cygnus.com>
 
 	* po/fr.po: Update.
 
-cd	* time/strptime.c: Recognize %s, %u, %g, and %G format.
+	* time/strptime.c: Recognize %s, %u, %g, and %G format.
 
 	* posix/getopt.c: Add some more casts and initializations to
 	prevent warnings.
@@ -1039,7 +1246,7 @@ Thu Oct  3 13:33:31 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
 Wed Oct  2 13:41:48 1996  Ulrich Drepper  <drepper@cygnus.com>
 
 	* sysdeps/generic/strtok.c: Don't set stored pointer to NULL when
- 	notheing is found.  This guarantees all subsequent calls behave
+ 	nothing is found.  This guarantees all subsequent calls behave
  	the same.
 	* sysdeps/generic/strtok_r.c: Likewise.
 
@@ -1224,7 +1431,7 @@ Mon Sep 30 00:14:26 1996  Ulrich Drepper  <drepper@cygnus.com>
 
 Sun Sep 29 12:55:58 1996  Ulrich Drepper  <drepper@cygnus.com>
 
-	* sysdeps/unix/sysv/linux/syscalls.list: Change funciton name for
+	* sysdeps/unix/sysv/linux/syscalls.list: Change function name for
  	_llseek to _llseek (not llseek).
 	Reported by Matthias Urlichs <smurf@smurf.noris.de>.
 
@@ -3792,10 +3999,10 @@ Mon Aug 12 19:03:22 1996  Thomas Bushnell n/BSG  <thomas@psilocin.gnu.ai.mit.edu
 
 Mon Aug 12 16:41:52 1996  Thomas Bushnell n/BSG  <thomas@gnu.ai.mit.edu>
 
-        * io/getwd.c (getwd) [! PATH_MAX]: Don't assume that the user's
-        buffer is any longer than the amount necessary to hold the
-        filename; the Hurd getcwd uses the *entire* contents of the
-        buffer, however long it is specified to be.
+	* io/getwd.c (getwd) [! PATH_MAX]: Don't assume that the user's
+	buffer is any longer than the amount necessary to hold the
+	filename; the Hurd getcwd uses the *entire* contents of the
+	buffer, however long it is specified to be.
 
 Mon Aug 12 04:33:09 1996  Ulrich Drepper  <drepper@cygnus.com>
 
@@ -4662,13 +4869,13 @@ Fri Jul 26 03:46:08 1996  Ulrich Drepper  <drepper@cygnus.com>
 	* stdlib/stdlib.h: Ditto.
 	* string/string.h: Ditto.
 
-	* posix/getconf.c: De-ASNI-fy.  Recognize POSIX.2 constant names.
+	* posix/getconf.c: De-ANSI-fy.  Recognize POSIX.2 constant names.
 	Use `error' function instead of doing it by hand.
 	* sysdeps/posix/sysconf.c: De-ANSI-fy.
 	Handle _SC_COLL_WEIGHTS_MAX.
 	* sysdeps/stub/sysconf.c: Handle _SC_CHARCLASS_NAME_MAX,
 	_SC_COLL_WEIGHTS_MAX, _SC_EQUIV_CLASS_MAX, _SC_2_LOCALEDEF
-	since these do depend on the platform.
+	since these do not depend on the platform.
 	Add POSIX.4 symbols.
 
 	* posix/posix2_lim.h: Add missing definition of
diff --git a/FAQ b/FAQ
index a85502839c..f2e41f54b6 100644
--- a/FAQ
+++ b/FAQ
@@ -63,6 +63,11 @@ please let me know.
 	  functions `stat', `lstat', `fstat', and `mknod' and while
 	  linking on my Linux system I get error messages.  How is
 	  this supposed to work?''
+
+[Q18]	``The prototypes for `connect', `accept', `getsockopt',
+	  `setsockopt', `getsockname', `getpeername', `send',
+	  `sendto', and `recvfrom' are different in GNU libc than
+	  on any other system I saw.  This is a bug, isn't it?''
 
 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
 [Q1]	``What systems does the GNU C Library run on?''
@@ -75,9 +80,9 @@ The systems glibc is known to work on in the moment and most probably
 in the future are:
 
 	*-*-gnu			GNU Hurd
-	i[3456]86-*-linux	Linux-2.0 on Intel
-	m68k-*-linux		Linux-2.0 on Motorola 680x0
-	alpha-*-linux		Linux-2.0 on DEC Alpha
+	i[3456]86-*-linux-gnu	Linux-2.0 on Intel
+	m68k-*-linux-gnu	Linux-2.0 on Motorola 680x0
+	alpha-*-linux-gnu	Linux-2.0 on DEC Alpha
 
 Other Linux platforms are also on the way to be supported but I need
 some success reports first.
@@ -159,14 +164,10 @@ Library.
   slow.
 
 * plenty of time (approx 1h for i?86-linux on i586@133 or 2.5h on
-  i486@66 or 4.5h on i486@33).
+  i486@66 or 4.5h on i486@33).  For Hurd systems times are much higher.
 
   If you have some more measurements let me know.
 
-* Some files depend on special tools.  E.g., files ending in .gperf
-  need a `gperf' program.  The GNU version (part of libg++) is known
-  to work while some vendor versions do not.
-
 * When compiling for Linux:
 
   + the header files of the Linux kernel must be available in the
@@ -176,6 +177,8 @@ Library.
   need a `gperf' program.  The GNU version (part of libg++) is known
   to work while some vendor versions do not.
 
+  You should not need these tools unless you change the source files.
+
 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
 [Q7]	``When I run `nm -u libc.so' on the produced library I still
 	  find unresolved symbols?  Can this be ok?''
@@ -407,7 +410,7 @@ libc binaries from the US.
 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
 [Q15]	``What are these `add-ons'?''
 
-[A15] {UD} To avoid complications with external or external source
+[A15] {UD} To avoid complications with export rules or external source
 code some optional parts of the libc are distributed as separate
 packages (e.g., the crypt package, see Q14).
 
@@ -416,7 +419,7 @@ the package and tell the configuration script about these additional
 subdirectories using the --enable-add-ons option.  When you add the
 crypt add-on you just have to use
 
-	configure --enable-add-ons=crypt,XXX ...
+	configure --enable-add-ons=des-crypt,XXX ...
 
 where XXX are possible other add-ons and ... means the rest of the
 normal option list.
@@ -552,6 +555,22 @@ link.  The linker script with the above contents is placed in
 
 
 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+[Q18]	``The prototypes for `connect', `accept', `getsockopt',
+	  `setsockopt', `getsockname', `getpeername', `send',
+	  `sendto', and `recvfrom' are different in GNU libc from
+	  any other system I saw.  This is a bug, isn't it?''
+
+[A18] {UD} No, this is no bug.  This version of the GNU libc already
+follows the to-be-released POSIX.1g standard.  In this standard
+the type `size_t' is used for all parameters which describe a size.
+So better change now.
+
+This change is critical for system which have
+	sizeof (int) != sizeof (size_t)
+like the Alpha.
+
+
+~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
 
 Answers were given by:
 {UD} Ulrich Drepper, <drepper@cygnus.com>
diff --git a/MakeTAGS b/MakeTAGS
index da9cdd79c7..bca72b3e85 100644
--- a/MakeTAGS
+++ b/MakeTAGS
@@ -39,7 +39,7 @@ tags_sources = $(all-sources) $(all-headers) $(all-dist)
 endif	# ctype
 endif	# No tags_sources
 
-sysdep-dirs := $(full-config-subdirs)
+sysdep-dirs := $(full-config-sysdirs)
 
 ifndef sysdep_dirs
 # Find all sysdep directories.
diff --git a/Makeconfig b/Makeconfig
index 39d4fbd8ef..0a338e12e2 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -532,8 +532,10 @@ $(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makeconfig \
 		 eval vers_lib$${lib}=yes; \
 		 number=`echo $$v | sed "s/^.*=//"`; \
 		 case $$number in \
-		   [0-9]*) echo "$$lib.so-version=.$$number";;  \
-		   *) echo "$$lib.so-version=$$number";;  \
+		   [0-9]*) echo "$$lib.so-version=.$$number"; \
+			   echo "all-sonames+=$$lib.so\$$($$lib.so-version)";;\
+		   *) echo "$$lib.so-version=$$number"; \
+		      echo "all-sonames+=\$$($$lib.so-version)";;  \
 		 esac; \
 	       fi; \
 	   done ;; esac; done; \
diff --git a/Makefile b/Makefile
index 774cf3bc23..ceaf5b0b62 100644
--- a/Makefile
+++ b/Makefile
@@ -82,14 +82,14 @@ subdirs	:= $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 
 headers := errno.h sys/errno.h errnos.h limits.h values.h	\
-	   features.h gnu-versions.h libc-lock.h libc-version.h
+	   features.h gnu-versions.h libc-lock.h
 aux	 = sysdep $(libc-init) version
-before-compile = $(objpfx)version-info.h $(objpfx)libc-version.h
+before-compile = $(objpfx)version-info.h
 
 echo-headers: subdir_echo-headers
 
 # What to install.
-install-others = $(includedir)/stubs.h
+install-others = $(includedir)/stubs.h $(includedir)/gnu/lib-names.h
 
 ifeq (yes,$(gnu-ld))
 libc-init = set-init
@@ -152,36 +152,6 @@ generated += version-info.h
 version.c-objects := $(addprefix $(objpfx)version,$(object-suffixes))
 $(version.c-objects): $(objpfx)version-info.h
 
-$(objpfx)libc-version.h: Makefile $(common-objpfx)soversions.mk \
-			 $(common-objpfx)version.mk
-	nr="$(libc.so-version)"; \
-	lnr=`echo $(version) | sed 's/[.].*//'`; \
-	lmnr=`echo $(version) | sed 's/[^.]*[.]//'`; \
-	if test -n $$nr; then \
-	  nr=`echo $$nr | sed 's/^[.]\([0-9]*\).*/\1/'`; \
-	else \
-	  nr="$$lnr"; \
-	fi; \
-	rm -f $@T; \
-	(echo '#ifndef __LIBC_VERSION_H'; \
-	 echo '#define __LIBC_VERSION_H 1'; \
-	 echo; \
-	 if test -n "$(libc.so-version)"; then \
-	   echo '/* Show that this is the GNU C Library.  The value is the'; \
-	   echo '   interface number of the shared library.  */'; \
-	 else \
-	   echo '/* Show that this is the GNU C Library.  */'; \
-	 fi; \
-	 echo "#define	__GNU_LIBRARY__	$$nr"; \
-	 echo; \
-	 echo '/* Version numbers for GNU libc release.  */'; \
-	 echo "#define	__GLIBC__	$$lnr"; \
-	 echo "#define	__GLIBC_MINOR__	$$lmnr"; \
-	 echo; \
-	 echo '#endif	/* libc-version.h */') > $@T
-	mv -f $@T $@
-generated += libc-version.h
-
 # Makerules creates a file `stub-$(subdir)' for each subdirectory, which
 # contains `#define __stub_FUNCTION' for each function which is a stub.
 # Here we paste all of these together into <stubs.h>.
@@ -202,10 +172,32 @@ $(includedir)/stubs.h: subdir_install
 	 echo '   every time called, usually setting errno to ENOSYS.  */';\
 	 sort $(subdir-stubs)) > $(objpfx)stubs.h
 	if test -r $@ && cmp -s $(objpfx)stubs.h $@; \
-	then echo stubs.h unchanged ; \
+	then echo 'stubs.h unchanged'; \
 	else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi
 	rm -f $(objpfx)stubs.h
 
+# Like stubs.h the gnu/lib-names.h header is not used while building the
+# libc itself.  So we generate it while installing.
+$(includedir)/gnu/lib-names.h: $(common-objpfx)soversions.mk
+	@rm -f $(objpfx)lib-names.h
+	(echo '/* This file is automatically generated.';\
+	 echo '   It defines macros to allow user program to find the shared';\
+	 echo '   library files which come as part of GNU libc.  */';\
+	 echo '#ifndef __GNU_LIB_NAMES_H'; \
+	 echo '#define __GNU_LIB_NAMES_H	1'; \
+	 echo; \
+	 (libs='$(all-sonames)';\
+	  for l in $$libs; do \
+	    upname=`echo $$l | sed 's/[.]so.*//' | tr [:lower:]- [:upper:]_`; \
+	    echo "#define	$${upname}_SO	$$l"; \
+	  done;) | sort; \
+	 echo; \
+	 echo '#endif	/* gnu/lib-names.h */';) > $(objpfx)lib-names.h
+	if test -r $@ && cmp -s $(objpfx)lib-names.h $@; \
+	then echo 'gnu/lib-names.h unchanged'; \
+	else $(INSTALL_DATA) $(objpfx)lib-names.h $@; fi
+	rm -f $(objpfx)lib-names.h
+
 # This makes the Info or DVI file of the documentation from the Texinfo source.
 .PHONY: info dvi
 info dvi:
diff --git a/Makerules b/Makerules
index aa56406854..c563f04ef5 100644
--- a/Makerules
+++ b/Makerules
@@ -596,11 +596,18 @@ versioned := $(strip $(foreach so,$(install-lib.so),\
 			       $(patsubst %,$(so),$($(so)-version))))
 
 # Install all the unversioned shared libraries.
-$(addprefix $(libdir)/,$(filter-out $(versioned),$(install-lib.so))): \
-$(libdir)/%.so: $(objpfx)%.so; $(do-install-program)
+$(addprefix $(slibdir)/,$(filter-out $(versioned),$(install-lib.so))): \
+$(slibdir)/%.so: $(objpfx)%.so; $(do-install-program)
 
 define make-link
-cd $(@D); rm -f $(@F).new; $(LN_S) $(<F) $(@F).new; mv -f $(@F).new $(@F)
+cd $(@D); \
+rm -f $(@F).new; \
+if test '$(@D)' = '$(<D)'; then \
+  $(LN_S) $(<F) $(@F).new; \
+else \
+  $(LN_S) $< $(@F).new; \
+fi; \
+mv -f $(@F).new $(@F)
 endef
 
 ifdef libc.so-version
@@ -642,7 +649,7 @@ ifneq (,$(versioned))
 # Produce three sets of rules as above for all the smaller versioned libraries.
 
 define o-iterator-doit
-$(libdir)/$o: $(libdir)/$o$($o-version); $$(make-link)
+$(libdir)/$o: $(slibdir)/$o$($o-version); $$(make-link)
 endef
 object-suffixes-left := $(versioned)
 include $(o-iterator)
@@ -658,26 +665,26 @@ include $(o-iterator)
 
 ifeq (,$($(subdir)-version))
 define o-iterator-doit
-$(libdir)/$o$($o-version): $(libdir)/$(o:.so=)-$(version).so; $$(make-link)
+$(slibdir)/$o$($o-version): $(slibdir)/$(o:.so=)-$(version).so; $$(make-link)
 endef
 object-suffixes-left := $(versioned)
 include $(o-iterator)
 
 define o-iterator-doit
-$(libdir)/$(o:.so=)-$(version).so: $(objpfx)$o; $$(do-install-program)
+$(slibdir)/$(o:.so=)-$(version).so: $(objpfx)$o; $$(do-install-program)
 endef
 object-suffixes-left := $(versioned)
 include $(o-iterator)
 else
 define o-iterator-doit
-$(libdir)/$o$($o-version): $(libdir)/$(o:.so=)-$($(subdir)-version).so;
+$(slibdir)/$o$($o-version): $(slibdir)/$(o:.so=)-$($(subdir)-version).so;
 	$$(make-link)
 endef
 object-suffixes-left := $(versioned)
 include $(o-iterator)
 
 define o-iterator-doit
-$(libdir)/$(o:.so=)-$($(subdir)-version).so: $(objpfx)$o;
+$(slibdir)/$(o:.so=)-$($(subdir)-version).so: $(objpfx)$o;
 	$$(do-install-program)
 endef
 object-suffixes-left := $(versioned)
@@ -693,10 +700,10 @@ endef
 
 so-versions := $(sort $(foreach so,$(install-lib.so),.so$($(so)-version)))
 $(foreach v,$(so-versions),\
-	  $(libdir)/lib$(libprefix)%$v): $(common-objpfx)lib%.so
+	  $(slibdir)/lib$(libprefix)%$v): $(common-objpfx)lib%.so
 	$(do-install-so)
 $(foreach v,$(so-versions),\
-	  $(libdir)/$(libprefix)%$v): $(common-objpfx)%.so
+	  $(slibdir)/$(libprefix)%$v): $(common-objpfx)%.so
 	$(do-install-so)
 endif
 
diff --git a/assert/assert.h b/assert/assert.h
index 0681fa43e0..c670a66359 100644
--- a/assert/assert.h
+++ b/assert/assert.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 92, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.2 DIAGNOSTICS	<assert.h>
+ *	ISO C Standard: 4.2 DIAGNOSTICS	<assert.h>
  */
 
 #ifdef	_ASSERT_H
diff --git a/ctype/ctype.h b/ctype/ctype.h
index c97c3e0f5d..18e3a3dbad 100644
--- a/ctype/ctype.h
+++ b/ctype/ctype.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 92, 93, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard 4.3: CHARACTER HANDLING	<ctype.h>
+ *	ISO C Standard 4.3: CHARACTER HANDLING	<ctype.h>
  */
 
 #ifndef	_CTYPE_H
@@ -65,7 +65,7 @@ enum
 
    These point into arrays of 384, so they can be indexed by any `unsigned
    char' value [0,255]; by EOF (-1); or by any `signed char' value
-   [-128,-1).  ANSI requires that the ctype functions work for `unsigned
+   [-128,-1).  ISO C requires that the ctype functions work for `unsigned
    char' values and for EOF; we also support negative `signed char' values
    for broken old programs.  The case conversion arrays are of `int's
    rather than `unsigned char's because tolower (EOF) must be EOF, which
diff --git a/dirent/tst-seekdir.c b/dirent/tst-seekdir.c
index f12b13f4d3..5a5c7fdd36 100644
--- a/dirent/tst-seekdir.c
+++ b/dirent/tst-seekdir.c
@@ -7,7 +7,7 @@ main (int argc, char *argv[])
 {
 
   DIR * dirp;
-  long save3;
+  long int save3 = 0;
   int i = 0;
   struct dirent *dp;
 
diff --git a/elf/dlfcn.h b/elf/dlfcn.h
index b26a38fb68..b59bebd5b1 100644
--- a/elf/dlfcn.h
+++ b/elf/dlfcn.h
@@ -1,25 +1,26 @@
 /* dlfcn.h -- User functions for run-time dynamic loading.
-Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   Copyright (C) 1995, 1996 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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #ifndef	_DLFCN_H
-#define	_DLFCN_H 1
 
+#define	_DLFCN_H 1
+#include <features.h>
 
 /* The MODE argument to `dlopen' contains one of the following: */
 #define RTLD_LAZY	0x001	/* Lazy function call binding.  */
@@ -33,30 +34,30 @@ Cambridge, MA 02139, USA.  */
 
 /* Open the shared object FILE and map it in; return a handle that can be
    passed to `dlsym' to get symbol values from it.  */
-extern void *dlopen (const char *__file, int __mode);
+extern void *dlopen __P ((__const char *__file, int __mode));
 
 /* Unmap and close a shared object opened by `dlopen'.
    The handle cannot be used again after calling `dlclose'.  */
-extern int dlclose (void *__handle);
+extern int dlclose __P ((void *__handle));
 
 /* Find the run-time address in the shared object HANDLE refers to
    of the symbol called NAME.  */
-extern void *dlsym (void *__handle, const char *__name);
+extern void *dlsym __P ((void *__handle, __const char *__name));
 
 /* When any of the above functions fails, call this function
    to return a string describing the error.  Each call resets
    the error string so that a following call returns null.  */
-extern char *dlerror (void);
+extern char *dlerror __P ((void));
 
 /* Fill in *INFO with the following information about ADDRESS.
    Returns 0 iff no shared object's segments contain that address.  */
 typedef struct
   {
-    const char *dli_fname;	/* File name of defining object.  */
+    __const char *dli_fname;	/* File name of defining object.  */
     void *dli_fbase;		/* Load address of that object.  */
-    const char *dli_sname;	/* Name of nearest symbol.  */
+    __const char *dli_sname;	/* Name of nearest symbol.  */
     void *dli_saddr;		/* Exact value of nearest symbol.  */
   } Dl_info;
-extern int dladdr (void *__address, Dl_info *__info);
+extern int dladdr __P ((void *__address, Dl_info *__info));
 
 #endif	/* dlfcn.h */
diff --git a/elf/rtld.c b/elf/rtld.c
index 1fae3488d9..b3018fb87f 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -285,9 +285,7 @@ of this helper program; chances are you did not intend to run this program.\n",
   if (mode == verify)
     /* We were called just to verify that this is a dynamic executable
        using us as the program interpreter.  */
-    _exit ((strcmp (_dl_rtld_map.l_libname, _dl_rtld_map.l_name) ||
-	    l->l_ld == NULL)
-	   ? EXIT_FAILURE : EXIT_SUCCESS);
+    _exit (l->l_ld == NULL ? EXIT_FAILURE : EXIT_SUCCESS);
 
   /* Extract the contents of the dynamic section for easy access.  */
   elf_get_dynamic_info (l->l_ld, l->l_info);
diff --git a/errno.h b/errno.h
index 029d43537f..f7736ba8d0 100644
--- a/errno.h
+++ b/errno.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.1.3 Errors	<errno.h>
+ *	ISO C Standard: 4.1.3 Errors	<errno.h>
  */
 
 #ifndef	_ERRNO_H
diff --git a/features.h b/features.h
index abf20250b6..deacda1663 100644
--- a/features.h
+++ b/features.h
@@ -144,8 +144,19 @@ Cambridge, MA 02139, USA.  */
 #endif
 
 
-/* Include header with information of libc version numbers.  */
-#include <libc-version.h>
+/* This macro indicates that the installed library is the GNU C Library.
+   For historic reasons the value now is 6 and this will stay from now
+   on.  The use of this variable is deprecated.  Use __GLIBC__ and
+   __GLIBC_MINOR__ now (see below) when you want to test for a specific
+   GNU C library version and use the values in <gnu/lib-names.h> to get
+   the sonames of the shared libraries.  */
+#undef  __GNU_LIBRARY__
+#define __GNU_LIBRARY__ 6
+
+/* Major and minor version number of the GNU C library package.  Use
+   these macros to test for features in specific releases.  */
+#define	__GLIBC__	2
+#define	__GLIBC_MINOR__	0
 
 
 #if	!defined (__GNUC__) || __GNUC__ < 2
diff --git a/grp/fgetgrent.c b/grp/fgetgrent.c
index 95ae2ecd6a..66dd305b0b 100644
--- a/grp/fgetgrent.c
+++ b/grp/fgetgrent.c
@@ -25,7 +25,11 @@ struct group *
 fgetgrent (FILE *stream)
 {
   static char buffer[BUFSIZ];
-  static struct group result;
+  static struct group resbuf;
+  struct group *result;
 
-  return __fgetgrent_r (stream, &result, buffer, sizeof buffer);
+  if (__fgetgrent_r (stream, &resbuf, buffer, sizeof buffer, &result) != 0)
+    return NULL;
+
+  return result;
 }
diff --git a/grp/fgetgrent_r.c b/grp/fgetgrent_r.c
index d8a8bfb2e1..e9a2c25a5a 100644
--- a/grp/fgetgrent_r.c
+++ b/grp/fgetgrent_r.c
@@ -42,8 +42,9 @@ LINE_PARSER
 
 
 /* Read one entry from the given stream.  */
-struct group *
-__fgetgrent_r (FILE *stream, struct group *result, char *buffer, int buflen)
+int
+__fgetgrent_r (FILE *stream, struct group *resbuf, char *buffer, size_t buflen,
+	       struct group **result)
 {
   char *p;
 
@@ -51,7 +52,10 @@ __fgetgrent_r (FILE *stream, struct group *result, char *buffer, int buflen)
     {
       p = fgets (buffer, buflen, stream);
       if (p == NULL)
-	return NULL;
+	{
+	  *result = NULL;
+	  return errno;
+	}
 
       /* Skip leading blanks.  */
       while (isspace (*p))
@@ -59,8 +63,9 @@ __fgetgrent_r (FILE *stream, struct group *result, char *buffer, int buflen)
     } while (*p == '\0' || *p == '#' ||	/* Ignore empty and comment lines.  */
 	     /* Parse the line.  If it is invalid, loop to
 		get the next line of the file to parse.  */
-	     ! parse_line (p, result, (void *) buffer, buflen));
+	     ! parse_line (p, resbuf, (void *) buffer, buflen));
 
-  return result;
+  *result = resbuf;
+  return 0;
 }
 weak_alias (__fgetgrent_r, fgetgrent_r)
diff --git a/grp/grp.h b/grp/grp.h
index 6a88191380..c03772cb34 100644
--- a/grp/grp.h
+++ b/grp/grp.h
@@ -51,7 +51,7 @@ extern FILE *__grpopen __P ((void));
 
 /* Read a group entry from STREAM, filling in G.
    Return the `struct group' of G if successful, NULL on failure.  */
-extern struct group *__grpread __P ((FILE * __stream, __ptr_t __g));
+extern struct group *__grpread __P ((FILE *__stream, __ptr_t __g));
 
 /* Return a chunk of memory containing pre-initialized data for __grpread.  */
 extern __ptr_t __grpalloc __P ((void));
@@ -76,7 +76,7 @@ extern struct group *getgrent __P ((void));
 
 #ifdef	__USE_SVID
 /* Read a group entry from STREAM.  */
-extern struct group *fgetgrent __P ((FILE * __stream));
+extern struct group *fgetgrent __P ((FILE *__stream));
 #endif
 
 /* Search for an entry with a matching group ID.  */
@@ -96,28 +96,28 @@ extern struct group *getgrnam __P ((__const char *__name));
    may change in later versions of this library.  */
 
 #if defined(__USE_SVID) || defined(__USE_MISC) || defined (__USE_BSD)
-extern struct group *getgrent_r __P ((struct group *__resultbuf,
-				      char *buffer, int __buflen));
+extern int getgrent_r __P ((struct group *__resultbuf, char *buffer,
+			    size_t __buflen, struct group **__result));
 #endif
 
 /* Search for an entry with a matching group ID.  */
-extern struct group *getgrgid_r __P ((__gid_t __gid,
-				      struct group *__resultbuf,
-				      char *buffer, int __buflen));
+extern int getgrgid_r __P ((__gid_t __gid, struct group *__resultbuf,
+			    char *buffer, size_t __buflen,
+			    struct group **__result));
 
 /* Search for an entry with a matching group name.  */
-extern struct group *getgrnam_r __P ((__const char *__name,
-				      struct group *__resultbuf,
-				      char *buffer, int __buflen));
+extern int getgrnam_r __P ((__const char *__name, struct group *__resultbuf,
+			    char *buffer, size_t __buflen,
+			    struct group **__result));
 
 #ifdef	__USE_SVID
 /* Read a group entry from STREAM.  */
-extern struct group *__fgetgrent_r __P ((FILE * __stream,
-					 struct group *__resultbuf,
-					 char *buffer, int __buflen));
-extern struct group *fgetgrent_r __P ((FILE * __stream,
-				       struct group *__resultbuf,
-				       char *buffer, int __buflen));
+extern int __fgetgrent_r __P ((FILE * __stream, struct group *__resultbuf,
+			       char *buffer, size_t __buflen,
+			       struct group **__result));
+extern int fgetgrent_r __P ((FILE * __stream, struct group *__resultbuf,
+			     char *buffer, size_t __buflen,
+			     struct group **__result));
 #endif
 
 #endif	/* reentrant */
@@ -129,12 +129,12 @@ extern struct group *fgetgrent_r __P ((FILE * __stream,
 #include <stddef.h>
 
 /* Set the group set for the current user to GROUPS (N of them).  */
-extern int setgroups __P ((size_t __n, __const __gid_t * groups));
+extern int setgroups __P ((size_t __n, __const __gid_t *__groups));
 
 /* Initialize the group set for the current user
    by reading the group database and using all groups
    of which USER is a member.  Also include GROUP.  */
-extern int initgroups __P ((__const char *user, __gid_t group));
+extern int initgroups __P ((__const char *__user, __gid_t __group));
 
 #endif /* Use BSD.  */
 
diff --git a/grp/testgrp.c b/grp/testgrp.c
index 3fac6b9bbf..62ba4e4a62 100644
--- a/grp/testgrp.c
+++ b/grp/testgrp.c
@@ -10,7 +10,7 @@ main (int argc, char *argv[])
 {
   uid_t me;
   struct passwd *my_passwd;
-  struct group *my_group;
+  struct group *my_group = NULL;
   char **members;
 
   me = getuid ();
diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c
index ff6d5395ed..7288dbeb4c 100644
--- a/inet/getnetgrent_r.c
+++ b/inet/getnetgrent_r.c
@@ -113,7 +113,7 @@ internal_setnetgrent (const char *group)
 
   /* Add the current group to the list of known groups.  */
   new_elem = (struct name_list *) malloc (sizeof (struct name_list));
-  if (new_elem == NULL || (new_elem->name = strdup (group)) == NULL)
+  if (new_elem == NULL || (new_elem->name = __strdup (group)) == NULL)
     {
       if (new_elem != NULL)
 	free (new_elem);
@@ -178,7 +178,7 @@ endnetgrent (void)
 
 int
 __getnetgrent_r (char **hostp, char **userp, char **domainp,
-		 char *buffer, int buflen)
+		 char *buffer, size_t buflen)
 {
   enum nss_status (*fct) (struct __netgrent *, char *, int);
   struct __netgrent result;
@@ -230,7 +230,7 @@ __getnetgrent_r (char **hostp, char **userp, char **domainp,
 
 	  namep = (struct name_list *) malloc (sizeof (struct name_list));
 	  if (namep == NULL
-	      || (namep->name = strdup (result.val.group)) == NULL)
+	      || (namep->name = __strdup (result.val.group)) == NULL)
 	    {
 	      /* We are out of memory.  */
 	      if (namep != NULL)
@@ -315,7 +315,7 @@ innetgr (const char *netgroup, const char *host, const char *user,
 			  namep =
 			    (struct name_list *) malloc (sizeof (*namep));
 			  if (namep == NULL
-			      || ((namep->name = strdup (entry.val.group))
+			      || ((namep->name = __strdup (entry.val.group))
 				  == NULL))
 			    {
 			      /* Out of memory, simply return.  */
diff --git a/inet/herrno.c b/inet/herrno.c
index ca92ec3b86..3143325e51 100644
--- a/inet/herrno.c
+++ b/inet/herrno.c
@@ -20,15 +20,12 @@ Boston, MA 02111-1307, USA.  */
 
 /* We need to have the error status variable of the resolver
    accessible in the libc.  */
-int __h_errno = 0;
-strong_alias (__h_errno, h_errno)
+int h_errno = 0;
 
 /* When threaded, h_errno may be a per-process variable.  */
-#ifdef __USE_REENTRANT
 int *
 weak_const_function
 __h_errno_location (void)
 {
-  return &__h_errno;
+  return &h_errno;
 }
-#endif
diff --git a/libio/libio.h b/libio/libio.h
index 5118b1e980..129c7312c2 100644
--- a/libio/libio.h
+++ b/libio/libio.h
@@ -278,10 +278,7 @@ extern void _IO_flockfile __P ((_IO_FILE *));
 extern void _IO_funlockfile __P ((_IO_FILE *));
 extern int _IO_ftrylockfile __P ((_IO_FILE *));
 
-#ifdef _IO_MTSAFE_IO
-weak_extern (_IO_flockfile)
-weak_extern (_IO_funlockfile)
-#else
+#ifndef _IO_MTSAFE_IO
 # define _IO_flockfile(_fp) /**/
 # define _IO_funlockfile(_fp) /**/
 # define _IO_ftrylockfile(_fp) /**/
diff --git a/libio/stdio.h b/libio/stdio.h
index a47b663cae..7e09786215 100644
--- a/libio/stdio.h
+++ b/libio/stdio.h
@@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
 /*
- *	ANSI Standard: 4.9 INPUT/OUTPUT <stdio.h>
+ *	ISO C Standard: 4.9 INPUT/OUTPUT	<stdio.h>
  */
 
 #ifndef _STDIO_H
diff --git a/limits.h b/limits.h
index e0993d67ac..e0cb1986cd 100644
--- a/limits.h
+++ b/limits.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.14/2.2.4.2 Limits of integral types	<limits.h>
+ *	ISO C Standard: 4.14/2.2.4.2 Limits of integral types	<limits.h>
  */
 
 #include <features.h>
diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c
index f938d798b8..8d7b4cf391 100644
--- a/locale/programs/charmap.c
+++ b/locale/programs/charmap.c
@@ -238,9 +238,9 @@ parse_charmap (const char *filename)
 		  continue;
 		}
 	      if ((nowtok == tok_mb_cur_max && result->mb_cur_min != 0
-		   && arg->val.num < result->mb_cur_min)
+		   && (int) arg->val.num < result->mb_cur_min)
 		  || (nowtok == tok_mb_cur_min && result->mb_cur_max != 0
-		      && arg->val.num > result->mb_cur_max))
+		      && (int) arg->val.num > result->mb_cur_max))
 		{
 		  lr_error (cmfile, _("\
 value of <mb_cur_max> must be greater than the value of <mb_cur_min>"));
@@ -612,7 +612,7 @@ new_width (struct linereader *cmfile, struct charset_t *result,
   unsigned int from_val, to_val;
 
   from_val = charset_find_value (result, from, strlen (from));
-  if (from_val == ILLEGAL_CHAR_VALUE)
+  if ((wchar_t) from_val == ILLEGAL_CHAR_VALUE)
     {
       lr_error (cmfile, _("unknown character `%s'"), from);
       return;
@@ -623,7 +623,7 @@ new_width (struct linereader *cmfile, struct charset_t *result,
   else
     {
       to_val = charset_find_value (result, to, strlen (to));
-      if (to_val == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) to_val == ILLEGAL_CHAR_VALUE)
 	{
 	  lr_error (cmfile, _("unknown character `%s'"), to);
 	  return;
diff --git a/locale/programs/charset.h b/locale/programs/charset.h
index 2885bf1d1a..620e4d54da 100644
--- a/locale/programs/charset.h
+++ b/locale/programs/charset.h
@@ -43,7 +43,7 @@ struct charset_t
   struct width_rule *width_rules;
   size_t nwidth_rules;
   size_t nwidth_rules_max;
-  int width_default;
+  unsigned int width_default;
 
   struct obstack mem_pool;
   hash_table char_table;
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 1bfa533d98..f836ecd578 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -98,8 +98,8 @@ struct locale_collate_t
   hash_table result;
 
   /* Sorting rules given in order_start line.  */
-  int nrules;
-  int nrules_max;
+  u_int32_t nrules;
+  u_int32_t nrules_max;
   enum coll_sort_rule *rules;
 
   /* Used while recognizing symbol composed of multiple tokens
@@ -122,10 +122,10 @@ struct locale_collate_t
   /* While collecting the weigths we need some temporary space.  */
   unsigned int current_order;
   int *weight_cnt;
-  int weight_idx;
+  unsigned int weight_idx;
   unsigned int *weight;
-  int nweight;
-  int nweight_max;
+  size_t nweight;
+  size_t nweight_max;
 
   /* Patch lists.  */
   patch_t *current_patch;
@@ -241,7 +241,7 @@ collate_finish (struct localedef_t *locale, struct charset_t *charset)
 
       if (value == 0)
 	error_at_line (0, 0, patch->fname, patch->lineno,
-			_("no weight defined for symbol `%s'"), patch->token);
+		       _("no weight defined for symbol `%s'"), patch->token);
       else
 	*patch->where.pos = value;
     }
@@ -482,7 +482,8 @@ Computing table size for collation information might take a while..."),
 	    ADD_VALUE (collate->undefined.ordering[cnt]);		      \
 	    for (disp = 0; disp < collate->undefined.ordering[cnt]; ++disp)   \
 	      {								      \
-		if (collate->undefined.ordering[idx] == ELLIPSIS_CHAR)	      \
+		if ((wchar_t) collate->undefined.ordering[idx]		      \
+		    == ELLIPSIS_CHAR)					      \
 		  ADD_VALUE ((pelem)->name[0]);				      \
 		else							      \
 		  ADD_VALUE (collate->undefined.ordering[idx++]);	      \
@@ -540,7 +541,7 @@ Computing table size for collation information might take a while..."),
 	    size_t inner;
 
 	    for (inner = 0; inner < collate->nrules; ++inner)
-	      if (collate->undefined.ordering[collate->nrules + inner]
+	      if ((wchar_t)collate->undefined.ordering[collate->nrules + inner]
 		  == ELLIPSIS_CHAR)
 		table[cnt * entry_size + 1 + inner] = cnt;
 	      else
@@ -1049,11 +1050,11 @@ collate_element_to (struct linereader *lr, struct localedef_t *locale,
     }
 
   value = charset_find_value (charset, code->val.str.start, code->val.str.len);
-  if (value != ILLEGAL_CHAR_VALUE)
+  if ((wchar_t) value != ILLEGAL_CHAR_VALUE)
     {
       lr_error (lr, _("symbol for multicharacter collating element "
 		      "`%.*s' duplicates symbolic name in charset"),
-		code->val.str.len, code->val.str.start);
+		(int) code->val.str.len, code->val.str.start);
       return;
     }
 
@@ -1062,7 +1063,7 @@ collate_element_to (struct linereader *lr, struct localedef_t *locale,
     {
       lr_error (lr, _("symbol for multicharacter collating element "
 		      "`%.*s' duplicates other element definition"),
-		code->val.str.len, code->val.str.start);
+		(int) code->val.str.len, code->val.str.start);
       return;
     }
 
@@ -1071,7 +1072,7 @@ collate_element_to (struct linereader *lr, struct localedef_t *locale,
     {
       lr_error (lr, _("symbol for multicharacter collating element "
 		      "`%.*s' duplicates symbol definition"),
-		code->val.str.len, code->val.str.start);
+		(int) code->val.str.len, code->val.str.start);
       return;
     }
 
@@ -1180,7 +1181,7 @@ collate_symbol (struct linereader *lr, struct localedef_t *locale,
     {
       lr_error (lr, _("symbol for multicharacter collating element "
 		      "`%.*s' duplicates symbolic name in charset"),
-		code->val.str.len, code->val.str.start);
+		(int) code->val.str.len, code->val.str.start);
       return;
     }
 
@@ -1189,7 +1190,7 @@ collate_symbol (struct linereader *lr, struct localedef_t *locale,
     {
       lr_error (lr, _("symbol for multicharacter collating element "
 		      "`%.*s' duplicates element definition"),
-		code->val.str.len, code->val.str.start);
+		(int) code->val.str.len, code->val.str.start);
       return;
     }
 
@@ -1198,7 +1199,7 @@ collate_symbol (struct linereader *lr, struct localedef_t *locale,
     {
       lr_error (lr, _("symbol for multicharacter collating element "
 		      "`%.*s' duplicates other symbol definition"),
-		code->val.str.len, code->val.str.start);
+		(int) code->val.str.len, code->val.str.start);
       return;
     }
 
@@ -1256,7 +1257,7 @@ collate_order_elem (struct linereader *lr, struct localedef_t *locale,
   int result = 0;
   wchar_t value;
   void *tmp;
-  int i;
+  unsigned int i;
 
   switch (code->tok)
     {
@@ -1284,7 +1285,7 @@ collate_order_elem (struct linereader *lr, struct localedef_t *locale,
 	      if (lastp->name[0] == value && lastp->name[1] == L'\0')
 		{
 		  lr_error (lr, _("duplicate definition for character `%.*s'"),
-			    code->val.str.len, code->val.str.start);
+			    (int) code->val.str.len, code->val.str.start);
 		  lr_ignore_rest (lr, 0);
 		  result = -1;
 		  break;
@@ -1311,7 +1312,7 @@ collate_order_elem (struct linereader *lr, struct localedef_t *locale,
 				(void *) collate->current_element) < 0)
 		{
 		  lr_error (lr, _("cannot insert collation element `%.*s'"),
-			    code->val.str.len, code->val.str.start);
+			    (int) code->val.str.len, code->val.str.start);
 		  exit (4);
 		}
 	    }
@@ -1344,8 +1345,8 @@ collation element `%.*s' appears more than once: ignore line"),
 	  if ((unsigned long int) tmp != 0ul)
 	    {
 	      lr_error (lr, _("\
-collation symbol `.*s' appears more than once: ignore line"),
-			code->val.str.len, code->val.str.start);
+collation symbol `%.*s' appears more than once: ignore line"),
+			(int) code->val.str.len, code->val.str.start);
 	      lr_ignore_rest (lr, 0);
 	      result = -1;
 	      break;
@@ -1364,7 +1365,7 @@ collation symbol `.*s' appears more than once: ignore line"),
 	{
 	  if (verbose)
 	    lr_error (lr, _("unknown symbol `%.*s': line ignored"),
-		      code->val.str.len, code->val.str.start);
+		      (int) code->val.str.len, code->val.str.start);
           lr_ignore_rest (lr, 0);
 
           result = -1;
@@ -1454,7 +1455,7 @@ line after ellipsis must contain character definition"));
 	    data[collate->nrules + cnt] = collate->weight[cnt];
 
 	  for (cnt = 0; cnt < collate->nrules; ++cnt)
-	    if (data[ptr[cnt]] != ELLIPSIS_CHAR)
+	    if ((wchar_t) data[ptr[cnt]] != ELLIPSIS_CHAR)
 	      ptr[cnt] = 0;
 
 	  while (name[0] <= value)
@@ -1555,7 +1556,7 @@ collate_weight_bsymbol (struct linereader *lr, struct localedef_t *locale,
     {
       if (verbose)
 	lr_error (lr, _("unknown symbol `%.*s': line ignored"),
-		  code->val.str.len, code->val.str.start);
+		  (int) code->val.str.len, code->val.str.start);
       lr_ignore_rest (lr, 0);
       return -1;
     }
@@ -1729,7 +1730,7 @@ collate_simple_weight (struct linereader *lr, struct localedef_t *locale,
 		  {
 		    if (verbose)
 		      lr_error (lr, _("unknown symbol `%.*s': line ignored"),
-				putp - startp, startp);
+				(int) (putp - startp), startp);
 		    lr_ignore_rest (lr, 0);
 		    return -1;
 		  }
@@ -1741,8 +1742,8 @@ collate_simple_weight (struct linereader *lr, struct localedef_t *locale,
 
 		if (*runp == lr->escape_char)
 		  {
-		    static char digits[] = "0123456789abcdef";
-		    char *dp;
+		    static const char digits[] = "0123456789abcdef";
+		    const char *dp;
 		    int base;
 
 		    ++runp;
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index 64f73d430f..bc3e391ace 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -75,7 +75,7 @@ struct locale_ctype_t
 
   /* We will allow up to 8 * sizeof(u_int32_t) - 1 character classes.  */
 #define MAX_NR_CHARCLASS (8 * sizeof (u_int32_t) - 1)
-  int nr_charclass;
+  size_t nr_charclass;
   const char *classnames[MAX_NR_CHARCLASS];
   unsigned long int current_class_mask;
   unsigned int last_class_char;
@@ -306,7 +306,7 @@ character %s'%s' in class `%s' must not be in class `%s'"),
 
   /* ... and now test <SP> as a special case.  */
   space_value = charset_find_value (charset, "SP", 2);
-  if (space_value == ILLEGAL_CHAR_VALUE)
+  if ((wchar_t) space_value == ILLEGAL_CHAR_VALUE)
     error (0, 0, _("character <SP> not defined in character map"));
   else if ((cnt = BITPOS (tok_space),
             (ELEM (ctype, class_collection, , space_value)
@@ -537,7 +537,7 @@ int
 ctype_is_charclass (struct linereader *lr, struct localedef_t *locale,
 		    const char *name)
 {
-  int cnt;
+  size_t cnt;
 
   for (cnt = 0; cnt < locale->categories[LC_CTYPE].ctype->nr_charclass; ++cnt)
     if (strcmp (name, locale->categories[LC_CTYPE].ctype->classnames[cnt])
@@ -554,7 +554,7 @@ ctype_class_start (struct linereader *lr, struct localedef_t *locale,
 		   struct charset_t *charset)
 {
   struct locale_ctype_t *ctype = locale->categories[LC_CTYPE].ctype;
-  int cnt;
+  size_t cnt;
 
   switch (tok)
     {
@@ -625,7 +625,7 @@ ctype_class_from (struct linereader *lr, struct localedef_t *locale,
 
   ctype->last_class_char = value;
 
-  if (value == ILLEGAL_CHAR_VALUE)
+  if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
     /* In the LC_CTYPE category it is no error when a character is
        not found.  This has to be ignored silently.  */
     return;
@@ -737,7 +737,7 @@ ctype_map_from (struct linereader *lr, struct localedef_t *locale,
 
   value = charset_find_value (charset, code->val.str.start, code->val.str.len);
 
-  if (value == ILLEGAL_CHAR_VALUE)
+  if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
     /* In the LC_CTYPE category it is no error when a character is
        not found.  This has to be ignored silently.  */
     return;
@@ -757,8 +757,8 @@ ctype_map_to (struct linereader *lr, struct localedef_t *locale,
 
   value = charset_find_value (charset, code->val.str.start, code->val.str.len);
 
-  if (ctype->from_map_char == ILLEGAL_CHAR_VALUE
-      || value == ILLEGAL_CHAR_VALUE)
+  if ((wchar_t) ctype->from_map_char == ILLEGAL_CHAR_VALUE
+      || (wchar_t) value == ILLEGAL_CHAR_VALUE)
     {
       /* In the LC_CTYPE category it is no error when a character is
 	 not found.  This has to be ignored silently.  */
@@ -790,7 +790,7 @@ static void
 ctype_class_newP (struct linereader *lr, struct locale_ctype_t *ctype,
 		  const char *name)
 {
-  int cnt;
+  size_t cnt;
 
   for (cnt = 0; cnt < ctype->nr_charclass; ++cnt)
     if (strcmp (ctype->classnames[cnt], name) == 0)
@@ -798,7 +798,7 @@ ctype_class_newP (struct linereader *lr, struct locale_ctype_t *ctype,
 
   if (cnt < ctype->nr_charclass)
     {
-      lr_error (lr, _("character class `%s' already defined"));
+      lr_error (lr, _("character class `%s' already defined"), name);
       return;
     }
 
@@ -817,7 +817,7 @@ ctype_map_newP (struct linereader *lr, struct locale_ctype_t *ctype,
 		const char *name, struct charset_t *charset)
 {
   size_t max_chars = 0;
-  int cnt;
+  size_t cnt;
 
   for (cnt = 0; cnt < ctype->map_collection_nr; ++cnt)
     {
@@ -830,7 +830,7 @@ ctype_map_newP (struct linereader *lr, struct locale_ctype_t *ctype,
 
   if (cnt < ctype->map_collection_nr)
     {
-      lr_error (lr, _("character map `%s' already defined"));
+      lr_error (lr, _("character map `%s' already defined"), name);
       return;
     }
 
@@ -934,7 +934,7 @@ set_class_defaults (struct locale_ctype_t *ctype, struct charset_t *charset)
 	  tmp[0] = ch;
 
 	  value = charset_find_value (charset, tmp, 1);
-	  if (value == ILLEGAL_CHAR_VALUE)
+	  if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	    {
 	      error (0, 0, _("\
 character `%s' not defined while needed as default value"),
@@ -998,7 +998,7 @@ character `%s' not defined while needed as default value"),
       unsigned int value;
 
       value = charset_find_value (charset, "space", 5);
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	error (0, 0, _("\
 character `%s' not defined while needed as default value"),
 	       "<space>");
@@ -1006,7 +1006,7 @@ character `%s' not defined while needed as default value"),
 	ELEM (ctype, class_collection, , value) |= BIT (tok_space);
 
       value = charset_find_value (charset, "form-feed", 9);
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	error (0, 0, _("\
 character `%s' not defined while needed as default value"),
 	       "<form-feed>");
@@ -1014,7 +1014,7 @@ character `%s' not defined while needed as default value"),
 	ELEM (ctype, class_collection, , value) |= BIT (tok_space);
 
       value = charset_find_value (charset, "newline", 7);
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	error (0, 0, _("\
 character `%s' not defined while needed as default value"),
 	       "<newline>");
@@ -1022,7 +1022,7 @@ character `%s' not defined while needed as default value"),
 	ELEM (ctype, class_collection, , value) |= BIT (tok_space);
 
       value = charset_find_value (charset, "carriage-return", 15);
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	error (0, 0, _("\
 character `%s' not defined while needed as default value"),
 	       "<carriage-return>");
@@ -1030,7 +1030,7 @@ character `%s' not defined while needed as default value"),
 	ELEM (ctype, class_collection, , value) |= BIT (tok_space);
 
       value = charset_find_value (charset, "tab", 3);
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	error (0, 0, _("\
 character `%s' not defined while needed as default value"),
 	       "<tab>");
@@ -1038,7 +1038,7 @@ character `%s' not defined while needed as default value"),
 	ELEM (ctype, class_collection, , value) |= BIT (tok_space);
 
       value = charset_find_value (charset, "vertical-tab", 12);
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	error (0, 0, _("\
 character `%s' not defined while needed as default value"),
 	       "<vertical-tab>");
@@ -1064,7 +1064,7 @@ character `%s' not defined while needed as default value"),
       unsigned int value;
 
       value = charset_find_value (charset, "space", 5);
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	error (0, 0, _("\
 character `%s' not defined while needed as default value"),
 	       "<space>");
@@ -1072,7 +1072,7 @@ character `%s' not defined while needed as default value"),
 	ELEM (ctype, class_collection, , value) |= BIT (tok_blank);
 
       value = charset_find_value (charset, "tab", 3);
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	error (0, 0, _("\
 character `%s' not defined while needed as default value"),
 	       "<tab>");
@@ -1103,7 +1103,7 @@ character `%s' not defined while needed as default value"),
       unsigned long int mask = BIT (tok_upper) | BIT (tok_lower) |
 	BIT (tok_alpha) | BIT (tok_digit) | BIT (tok_xdigit) | BIT (tok_punct);
       size_t cnt;
-      int space;
+      wchar_t space;
 
       for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)
 	if ((ctype->class_collection[cnt] & mask) != 0)
@@ -1136,10 +1136,10 @@ character `%s' not defined while needed as default value"),
 	  tmp[1] = (char) ch;
 
 	  value_from = charset_find_value (charset, &tmp[1], 1);
-	  if (value_from == ILLEGAL_CHAR_VALUE)
+	  if ((wchar_t) value_from == ILLEGAL_CHAR_VALUE)
 	    {
 	      error (0, 0, _("\
-character `%c' not defined while needed as default value"),
+character `%s' not defined while needed as default value"),
 		     tmp);
 	      continue;
 	    }
@@ -1147,7 +1147,7 @@ character `%c' not defined while needed as default value"),
 	  /* This conversion is implementation defined.  */
 	  tmp[1] = (char) (ch + ('A' - 'a'));
 	  value_to = charset_find_value (charset, &tmp[1], 1);
-	  if (value_to == -1)
+	  if ((wchar_t) value_to == ILLEGAL_CHAR_VALUE)
 	    {
 	      error (0, 0, _("\
 character `%s' not defined while needed as default value"),
diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
index 6fcb06979a..6be7309ae9 100644
--- a/locale/programs/ld-time.c
+++ b/locale/programs/ld-time.c
@@ -672,7 +672,7 @@ time_add (struct linereader *lr, struct localedef_t *locale,
     case tok_##cat:							      \
       if (time->cur_num_##cat >= max)					      \
 	lr_error (lr, _("\
-too many values for field `%s' in category `LC_TIME'"),			      \
+too many values for field `%s' in category `%s'"),			      \
 		  #cat, "LC_TIME");					      \
       else if (code->val.str.start == NULL)				      \
 	{								      \
diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
index 14496c00af..4759615ec3 100644
--- a/locale/programs/linereader.c
+++ b/locale/programs/linereader.c
@@ -279,7 +279,7 @@ get_toplvl_escape (struct linereader *lr)
 	}
 
       if ((base == 16 && !isxdigit (ch))
-	  || (base != 16 && (ch < '0' || ch >= '0' + base)))
+	  || (base != 16 && (ch < '0' || ch >= (int) ('0' + base))))
 	{
 	esc_error:
 	  lr->token.val.str.start = &lr->buf[start_idx];
@@ -299,7 +299,7 @@ get_toplvl_escape (struct linereader *lr)
 
       ch = lr_getc (lr);
       if ((base == 16 && !isxdigit (ch))
-	  || (base != 16 && (ch < '0' || ch >= '0' + base)))
+	  || (base != 16 && (ch < '0' || ch >= (int) ('0' + base))))
 	goto esc_error;
 
       byte *= base;
@@ -521,7 +521,7 @@ get_string (struct linereader *lr, const struct charset_t *charset)
 	  {
 	    value = charset_find_value (charset, &buf[startidx],
 					bufact - startidx);
-	    if (value == ILLEGAL_CHAR_VALUE)
+	    if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	      illegal_string = 1;
 	    bufact = startidx;
 
diff --git a/locale/programs/linereader.h b/locale/programs/linereader.h
index b78697e87d..bf5f1bccc9 100644
--- a/locale/programs/linereader.h
+++ b/locale/programs/linereader.h
@@ -117,7 +117,7 @@ lr_ungetc (struct linereader *lr, int ch)
 
 
 static inline int
-lr_ungetn (struct linereader *lr, int n)
+lr_ungetn (struct linereader *lr, size_t n)
 {
   if (lr->idx < n)
     return -1;
diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
index fbcd04a67b..1db26e5427 100644
--- a/locale/programs/localedef.c
+++ b/locale/programs/localedef.c
@@ -463,10 +463,10 @@ construct_output_path (char *path)
 	 the end of the function we need another byte for the trailing
 	 '/'.  */
       if (normal == NULL)
-	asprintf (&result, "%s/%s\0", LOCALE_PATH, path);
+	asprintf (&result, "%s/%s%c", LOCALE_PATH, path, '\0');
       else
-	asprintf (&result, "%s/%.*s%s%s\0", LOCALE_PATH, startp - path, path,
-		  normal, endp);
+	asprintf (&result, "%s/%.*s%s%s%c", LOCALE_PATH, startp - path, path,
+		  normal, endp, '\0');
     }
   else
     {
diff --git a/locale/programs/stringtrans.c b/locale/programs/stringtrans.c
index 6958dd2df8..4351eea397 100644
--- a/locale/programs/stringtrans.c
+++ b/locale/programs/stringtrans.c
@@ -93,7 +93,7 @@ translate_string (char *str, struct charset_t *charset)
 	}
 
       value = charset_find_value (charset, str + 1, tp - (str + 1));
-      if (value == ILLEGAL_CHAR_VALUE)
+      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
 	{
 	  free (buf);
 	  return NULL;
diff --git a/login/Makefile b/login/Makefile
index 56a6aebf44..247ab958df 100644
--- a/login/Makefile
+++ b/login/Makefile
@@ -30,6 +30,8 @@ routines := setutent endutent getutent getutid getutline pututline	\
 
 # Build the -lutil library with these extra functions.
 extra-libs      := libutil
+extra-libs-others := $(extra-libs)
+
 libutil-routines:= login login_tty logout logwtmp pty
 
 
diff --git a/manual/creature.texi b/manual/creature.texi
index 51bf53a0c2..6b4d42fbe9 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -93,6 +93,20 @@ compiler or linker.  @strong{Note:} If you forget to do this, you may
 get very strange errors at run time.
 @end defvr
 
+@comment (none)
+@comment GNU
+@defvr Macro _REENTRANT,_THREAD_SAFE
+If you define this macro, reentrant versions of several functions get
+declared.  Some of the functions is specified in POSIX.1c but many others
+are only available on a few other systems or are unique to GNU libc.
+The problem is that the standardization of the thread safe C library
+interface still is behind.
+
+Unlike on some other systems no special version of the C library must be
+used for linking.  There is only one version but while compiling this
+it must have been specified to compile as thread safe.
+@end defvr
+
 We recommend you use @code{_GNU_SOURCE} in new programs.  If you don't
 specify the @samp{-ansi} option to GCC and don't define any of these macros
 explicitly, the effect is the same as defining @code{_GNU_SOURCE}.
diff --git a/manual/libc.texinfo b/manual/libc.texinfo
index a6553d617e..773859318d 100644
--- a/manual/libc.texinfo
+++ b/manual/libc.texinfo
@@ -57,7 +57,7 @@ Foundation.
 @sp 2
 @center Sandra Loosemore
 @center with
-@center Richard M. Stallman, Roland McGrath, and Andrew Oram
+@center Richard M. Stallman, Roland McGrath, Andrew Oram, and Ulrich Drepper
 @sp 3
 @center Edition @value{EDITION}
 @sp 1
@@ -988,7 +988,12 @@ Porting the GNU C Library
 @node Concept Index, Type Index, Copying, Top
 @unnumbered Concept Index
 
-@printindex cp
+@comment Could somebody with better texinfo knowledge look into this?
+@comment When I comment out the following line I get
+@comment        Misplaced `{'.
+@comment        Misplaced `}'.
+@comment This happens even if the libc.cp file is empty.
+@comment @printindex cp
 
 @node Type Index, Function Index, Concept Index, Top
 @unnumbered Type Index
diff --git a/manual/nss.texi b/manual/nss.texi
index b2dc886a50..6d9d831a18 100644
--- a/manual/nss.texi
+++ b/manual/nss.texi
@@ -57,6 +57,7 @@ The databases available in the NSS are
 @cindex ethers
 @cindex group
 @cindex hosts
+@cindex netgroup
 @cindex network
 @cindex protocols
 @cindex passwd
@@ -71,6 +72,8 @@ Ethernet numbers,
 Groups of users, @pxref{Group Database}.
 @item hosts
 Host names and numbers, @pxref{Host Names}.
+@item netgroup
+Network wide list of host and users, @pxref{Netgroup Database}.
 @item network
 Network names and numbers, @pxref{Networks Database}.
 @item protocols
@@ -89,8 +92,7 @@ Shadow user passwords,
 
 @noindent
 There will be some more added later (@code{aliases}, @code{automount},
-@code{bootparams}, @code{netgroup}, @code{netmasks}, and
-@code{publickey}).
+@code{bootparams}, @code{netmasks}, and @code{publickey}).
 
 @node NSS Configuration File, NSS Module Internals, NSS Basics, Name Service Switch
 @section The NSS Configuration File
@@ -122,7 +124,7 @@ the reaction on lookup result line @code{[NOTFOUND=return]}.
 @end itemize
 
 @menu
-* Services in the NSS configuration::  Service names in the NSS configuratin.
+* Services in the NSS configuration::  Service names in the NSS configuration.
 * Actions in the NSS configuration::  React approprite on the lookup result.
 * Notes on NSS Configuration File::  Things to take care about while
                                      configuring NSS.
@@ -256,6 +258,20 @@ all supported databases there is a default value so it should normally
 be possible to get the system running even if the file is corrupted or
 missing.
 
+@cindex default value, and NSS
+For the @code{hosts} and @code{network} databases the default value is
+@code{dns [!UNAVAIL=return] files}.  I.e., the system is prepared for
+the DNS service not to be available but if it is available the answer it
+returns is ultimative.
+
+For all other databases the default value is
+@code{compat [NOTFOUND=return] files}.  This solution give the best
+chance to be correct since NIS and file based lookup is used.  The
+@code{compat} service is available in a separate add-on to GNU C
+library, available in the same place you got the GNU C library source
+from.
+
+@cindex optimizing NSS
 A second point is that the user should try to optimize the lookup
 process.  The different service have different response times.  A simple
 file look up on a local file could be fast, but if the file is long and the
@@ -365,17 +381,19 @@ struct hostent *gethostbyname_r (const char *name,
 @end smallexample
 
 @noindent
-The actual prototype of the function is the NSS modules in this case is
+The actual prototype of the function in the NSS modules in this case is
 
 @smallexample
-int _nss_files_gethostbyname_r (const char *name,
-                                struct hostent *result_buf, char *buf,
-                                int buflen, int *h_errnop)
+enum nss_status _nss_files_gethostbyname_r (const char *name,
+                                            struct hostent *result_buf,
+                                            char *buf, int buflen,
+                                            int *h_errnop)
 @end smallexample
 
-I.e., the interface function is in fact the reentrant function with
-the change of the return value.  While the user-level function returns a
-pointer to the result the reentrant function return an @code{int} value:
+I.e., the interface function is in fact the reentrant function with the
+change of the return value.  While the user-level function returns a
+pointer to the result the reentrant function return an @code{enum
+nss_status} value:
 
 @cindex NSS_STATUS_TRYAGAIN
 @cindex NSS_STATUS_UNAVAIL
@@ -399,7 +417,12 @@ numeric value @code{1}
 Now you see where the action items of the @file{/etc/nsswitch.conf} file
 are used.
 
-The above function has somthing special which is missing for almost all
+If you study the source code you will find there is a fifth value:
+@code{NSS_STATUS_RETURN}.  This is an internal use only value, used by a
+few functions in places where none of the above value can be used.  If
+necessary the source code should be examined to learn about the details.
+
+The above function has something special which is missing for almost all
 the other module functions.  There is an argument @var{h_errnop}.  This
 points to a variable which will be filled with the error code in case
 the execution of the function fails for some reason.  The reentrant
diff --git a/manual/users.texi b/manual/users.texi
index b1d0d6f929..e20c90ddaa 100644
--- a/manual/users.texi
+++ b/manual/users.texi
@@ -1,4 +1,4 @@
-@node Users and Groups, System Information, Name Service Switch, Top
+@node Users and Groups
 @chapter Users and Groups
 
 Every user who can log in on the system is identified by a unique number
@@ -46,11 +46,12 @@ can use to examine these databases.
                         	 accessing the user database.
 * Group Database::              Functions and data structures for
                         	 accessing the group database.
+* Netgroup Database::           Functions for accessing the netgroup database.
 * Database Example::            Example program showing use of database
 				 inquiry functions.
 @end menu
 
-@node User and Group IDs
+@node User and Group IDs, Process Persona, Users and Groups, Users and Groups
 @section User and Group IDs
 
 @cindex login name
@@ -71,7 +72,7 @@ not accessible to users who are not a member of that group.  Each group
 has a @dfn{group name} and @dfn{group ID}.  @xref{Group Database},
 for how to find information about a group ID or group name.
 
-@node Process Persona
+@node Process Persona, Why Change Persona, User and Group IDs, Users and Groups
 @section The Persona of a Process
 @cindex persona
 @cindex effective user ID
@@ -113,7 +114,7 @@ its permission to access files, see @ref{Access Permission}.
 The user ID of a process also controls permissions for sending signals
 using the @code{kill} function.  @xref{Signaling Another Process}.
 
-@node Why Change Persona
+@node Why Change Persona, How Change Persona, Process Persona, Users and Groups
 @section Why Change the Persona of a Process?
 
 The most obvious situation where it is necessary for a process to change
@@ -145,7 +146,7 @@ the game program wants to update this file, it can change its effective
 user ID to be that for @code{games}.  In effect, the program must
 adopt the persona of @code{games} so it can write the scores file.
 
-@node How Change Persona
+@node How Change Persona, Reading Persona, Why Change Persona, Users and Groups
 @section How an Application Can Change Persona
 @cindex @code{setuid} programs
 
@@ -176,7 +177,7 @@ when they are not needed, which makes for more robustness.
 
 @c !!! talk about _POSIX_SAVED_IDS
 
-@node Reading Persona
+@node Reading Persona, Setting User ID, How Change Persona, Users and Groups
 @section Reading the Persona of a Process
 
 Here are detailed descriptions of the functions for reading the user and
@@ -261,7 +262,7 @@ read_all_groups (void)
 @end smallexample
 @end deftypefun
 
-@node Setting User ID
+@node Setting User ID, Setting Groups, Reading Persona, Users and Groups
 @section Setting the User ID
 
 This section describes the functions for altering the user ID (real
@@ -324,7 +325,7 @@ have permission to change to the specified ID.
 @end table
 @end deftypefun
 
-@node Setting Groups
+@node Setting Groups, Enable/Disable Setuid, Setting User ID, Users and Groups
 @section Setting the Group IDs
 
 This section describes the functions for altering the group IDs (real
@@ -399,7 +400,7 @@ the user name @var{user}.  The group ID @var{gid} is also included.
 @c groups USER is a member of.
 @end deftypefun
 
-@node Enable/Disable Setuid
+@node Enable/Disable Setuid, Setuid Program Example, Setting Groups, Users and Groups
 @section Enabling and Disabling Setuid Access
 
 A typical setuid program does not need its special access all of the
@@ -465,7 +466,7 @@ feature with a preprocessor conditional, like this:
 #endif
 @end smallexample
 
-@node Setuid Program Example
+@node Setuid Program Example, Tips for Setuid, Enable/Disable Setuid, Users and Groups
 @section Setuid Program Example
 
 Here's an example showing how to set up a program that changes its
@@ -605,7 +606,7 @@ record_score (int score)
 @end group
 @end smallexample
 
-@node Tips for Setuid
+@node Tips for Setuid, Who Logged In, Setuid Program Example, Users and Groups
 @section Tips for Writing Setuid Programs
 
 It is easy for setuid programs to give the user access that isn't
@@ -649,7 +650,7 @@ would ordinarily have permission to access those files.  You can use the
 uses the real user and group IDs, rather than the effective IDs.
 @end itemize
 
-@node Who Logged In
+@node Who Logged In, User Database, Tips for Setuid, Users and Groups
 @section Identifying Who Logged In
 @cindex login name, determining
 @cindex user ID, determining
@@ -703,7 +704,7 @@ For most purposes, it is more useful to use the environment variable
 precisely because the user can set @code{LOGNAME} arbitrarily.
 @xref{Standard Environment}.
 
-@node User Database
+@node User Database, Group Database, Who Logged In, Users and Groups
 @section User Database
 @cindex user database
 @cindex password database
@@ -721,7 +722,7 @@ network server gives access to it.
 * Writing a User Entry::        How a program can rewrite a user's record.
 @end menu
 
-@node User Data Structure
+@node User Data Structure, Lookup User, User Database, User Database
 @subsection The Data Structure that Describes a User
 
 The functions and data structures for accessing the system user database
@@ -762,7 +763,7 @@ be used.
 @end table
 @end deftp
 
-@node Lookup User
+@node Lookup User, Scanning All Users, User Data Structure, User Database
 @subsection Looking Up One User
 @cindex converting user ID to user name
 @cindex converting user name to user ID
@@ -783,6 +784,27 @@ user ID @var{uid}.
 @end deftypefun
 
 @comment pwd.h
+@comment POSIX.1c
+@deftypefun int getpwuid_r (uid_t @var{uid}, struct passwd *@var{result_buf}, char *@var{buffer}, size_t @var{buflen}, struct passwd **@var{result})
+This function is similar to @code{getpwuid} in that is returns
+information about the user whose user ID is @var{uid}.  But the result
+is not placed in a static buffer.  Instead the user supplied structure
+pointed to by @var{result_buf} is filled with the information.  The
+first @var{buflen} bytes of the additional buffer pointed to by
+@var{buffer} are used to contain additional information, normally
+strings which are pointed to by the elements of the result structure.
+
+If the return value is @code{0} the pointer returned in @var{result}
+points to the record which contains the wanted data (i.e., @var{result}
+contains the value @var{result_buf}).  In case the return value is non
+null there is no user in the data base with user ID @var{uid} or the
+buffer @var{buffer} is too small to contain all the needed information.
+In the later case the global @var{errno} variable is set to
+@code{ERANGE}.
+@end deftypefun
+
+
+@comment pwd.h
 @comment POSIX.1
 @deftypefun {struct passwd *} getpwnam (const char *@var{name})
 This function returns a pointer to a statically-allocated structure
@@ -793,7 +815,28 @@ This structure may be overwritten on subsequent calls to
 A null pointer value indicates there is no user named @var{name}.
 @end deftypefun
 
-@node Scanning All Users
+@comment pwd.h
+@comment POSIX.1c
+@deftypefun int getpwnam_r (const char *@var{name}, struct passwd *@var{result_buf}, char *@var{buffer}, size_t @var{buflen}, struct passwd **@var{result})
+This function is similar to @code{getpwnam} in that is returns
+information about the user whose user name is @var{name}.  But the result
+is not placed in a static buffer.  Instead the user supplied structure
+pointed to by @var{result_buf} is filled with the information.  The
+first @var{buflen} bytes of the additional buffer pointed to by
+@var{buffer} are used to contain additional information, normally
+strings which are pointed to by the elements of the result structure.
+
+If the return value is @code{0} the pointer returned in @var{result}
+points to the record which contains the wanted data (i.e., @var{result}
+contains the value @var{result_buf}).  In case the return value is non
+null there is no user in the data base with user name @var{name} or the
+buffer @var{buffer} is too small to contain all the needed information.
+In the later case the global @var{errno} variable is set to
+@code{ERANGE}.
+@end deftypefun
+
+
+@node Scanning All Users, Writing a User Entry, Lookup User, User Database
 @subsection Scanning the List of All Users
 @cindex scanning the user list
 
@@ -816,14 +859,33 @@ This stream must correspond to a file in the same format as the standard
 password database file.  This function comes from System V.
 @end deftypefun
 
+@comment pwd.h
+@comment GNU
+@deftypefun int fgetpwent_r (FILE *@var{stream}, struct passwd *@var{result_buf}, char *@var{buffer}, size_t @var{buflen}, struct passwd **@var{result})
+This function is similar to @code{fgetpwent} in that it reads the next
+user entry from @var{stream}.  But the result is returned in the
+structure pointed to by @var{result_buf}.  The
+first @var{buflen} bytes of the additional buffer pointed to by
+@var{buffer} are used to contain additional information, normally
+strings which are pointed to by the elements of the result structure.
+
+This stream must correspond to a file in the same format as the standard
+password database file.
+
+If the funciton returns null @var{result} points to the structure with
+the wanted data (normally this is in @var{result_buf}).  If errors
+occured the return value is non-null and @var{result} contains a null
+pointer.
+@end deftypefun
+
 The way to scan all the entries in the user database is with
 @code{setpwent}, @code{getpwent}, and @code{endpwent}.
 
 @comment pwd.h
 @comment SVID, BSD
 @deftypefun void setpwent (void)
-This function initializes a stream which @code{getpwent} uses to read
-the user database.
+This function initializes a stream which @code{getpwent} and
+@code{getpwent_r} use to read the user database.
 @end deftypefun
 
 @comment pwd.h
@@ -834,15 +896,35 @@ initialized by @code{setpwent}.  It returns a pointer to the entry.  The
 structure is statically allocated and is rewritten on subsequent calls
 to @code{getpwent}.  You must copy the contents of the structure if you
 wish to save the information.
+
+A null pointer is returned in case no further entry is available.
+@end deftypefun
+
+@comment pwd.h
+@comment GNU
+@deftypefun int getpwent_r (struct passwd *@var{result_buf}, char *@var{buffer}, int @var{buflen}, struct passwd **@var{result})
+This function is similar to @code{getpwent} in that it returns the next
+entry from the stream initialized by @code{setpwent}.  But in contrast
+to the @code{getpwent} function this function is reentrant since the
+result is placed in the user supplied structure pointed to by
+@var{result_buf}.  Additional data, normally the strings pointed to by
+the elements of the result structure, are placed in the additional
+buffer or length @var{buflen} starting at @var{buffer}.
+
+If the function returns null @var{result} points to the structure with
+the wanted data (normally this is in @var{result_buf}).  If errors
+occured the return value is non-null and @var{result} contains a null
+pointer.
 @end deftypefun
 
 @comment pwd.h
 @comment SVID, BSD
 @deftypefun void endpwent (void)
-This function closes the internal stream used by @code{getpwent}.
+This function closes the internal stream used by @code{getpwent} or
+@code{getpwent_r}.
 @end deftypefun
 
-@node Writing a User Entry
+@node Writing a User Entry,  , Scanning All Users, User Database
 @subsection Writing a User Entry
 
 @comment pwd.h
@@ -862,7 +944,7 @@ would inevitably leave out much of the important information.
 The function @code{putpwent} is declared in @file{pwd.h}.
 @end deftypefun
 
-@node Group Database
+@node Group Database, Netgroup Database, User Database, Users and Groups
 @section Group Database
 @cindex group database
 @pindex /etc/group
@@ -878,7 +960,7 @@ service provides access to it.
 * Scanning All Groups::         Scanning the list of all groups.
 @end menu
 
-@node Group Data Structure
+@node Group Data Structure, Lookup Group, Group Database, Group Database
 @subsection The Data Structure for a Group
 
 The functions and data structures for accessing the system group
@@ -905,7 +987,7 @@ null pointer.
 @end table
 @end deftp
 
-@node Lookup Group
+@node Lookup Group, Scanning All Groups, Group Data Structure, Group Database
 @subsection Looking Up One Group
 @cindex converting group name to group ID
 @cindex converting group ID to group name
@@ -926,6 +1008,26 @@ A null pointer indicates there is no group with ID @var{gid}.
 @end deftypefun
 
 @comment grp.h
+@comment POSIX.1c
+@deftypefun int getgrgid_r (gid_t @var{gid}, struct group *@var{result_buf}, char *@var{buffer}, size_t @var{buflen}, struct group **@var{result})
+This function is similar to @code{getgrgid} in that is returns
+information about the group whose group ID is @var{gid}.  But the result
+is not placed in a static buffer.  Instead the user supplied structure
+pointed to by @var{result_buf} is filled with the information.  The
+first @var{buflen} bytes of the additional buffer pointed to by
+@var{buffer} are used to contain additional information, normally
+strings which are pointed to by the elements of the result structure.
+
+If the return value is @code{0} the pointer returned in @var{result}
+points to the record which contains the wanted data (i.e., @var{result}
+contains the value @var{result_buf}).  In case the return value is non
+null there is no group in the data base with group ID @var{gid} or the
+buffer @var{buffer} is too small to contain all the needed information.
+In the later case the global @var{errno} variable is set to
+@code{ERANGE}.
+@end deftypefun
+
+@comment grp.h
 @comment SVID, BSD
 @deftypefun {struct group *} getgrnam (const char *@var{name})
 This function returns a pointer to a statically-allocated structure
@@ -936,7 +1038,27 @@ This structure may be overwritten by subsequent calls to
 A null pointer indicates there is no group named @var{name}.
 @end deftypefun
 
-@node Scanning All Groups
+@comment grp.h
+@comment POSIX.1c
+@deftypefun int getgrnam_r (const char *@var{name}, struct group *@var{result_buf}, char *@var{buffer}, size_t @var{buflen}, struct group **@var{result})
+This function is similar to @code{getgrnam} in that is returns
+information about the group whose group name is @var{name}.  But the result
+is not placed in a static buffer.  Instead the user supplied structure
+pointed to by @var{result_buf} is filled with the information.  The
+first @var{buflen} bytes of the additional buffer pointed to by
+@var{buffer} are used to contain additional information, normally
+strings which are pointed to by the elements of the result structure.
+
+If the return value is @code{0} the pointer returned in @var{result}
+points to the record which contains the wanted data (i.e., @var{result}
+contains the value @var{result_buf}).  In case the return value is non
+null there is no group in the data base with group name @var{name} or the
+buffer @var{buffer} is too small to contain all the needed information.
+In the later case the global @var{errno} variable is set to
+@code{ERANGE}.
+@end deftypefun
+
+@node Scanning All Groups,  , Lookup Group, Group Database
 @subsection Scanning the List of All Groups
 @cindex scanning the group list
 
@@ -960,6 +1082,25 @@ The stream must correspond to a file in the same format as the standard
 group database file.
 @end deftypefun
 
+@comment grp.h
+@comment GNU
+@deftypefun int fgetgrent_r (FILE *@var{stream}, struct group *@var{result_buf}, char *@var{buffer}, size_t @var{buflen}, struct group **@var{result})
+This function is similar to @code{fgetgrent} in that it reads the next
+user entry from @var{stream}.  But the result is returned in the
+structure pointed to by @var{result_buf}.  The
+first @var{buflen} bytes of the additional buffer pointed to by
+@var{buffer} are used to contain additional information, normally
+strings which are pointed to by the elements of the result structure.
+
+This stream must correspond to a file in the same format as the standard
+group database file.
+
+If the funciton returns null @var{result} points to the structure with
+the wanted data (normally this is in @var{result_buf}).  If errors
+occured the return value is non-null and @var{result} contains a null
+pointer.
+@end deftypefun
+
 The way to scan all the entries in the group database is with
 @code{setgrent}, @code{getgrent}, and @code{endgrent}.
 
@@ -967,7 +1108,7 @@ The way to scan all the entries in the group database is with
 @comment SVID, BSD
 @deftypefun void setgrent (void)
 This function initializes a stream for reading from the group data base.
-You use this stream by calling @code{getgrent}.
+You use this stream by calling @code{getgrent} or @code{getgrent_r}.
 @end deftypefun
 
 @comment grp.h
@@ -981,12 +1122,177 @@ wish to save the information.
 @end deftypefun
 
 @comment grp.h
+@comment GNU
+@deftypefun int getgrent_r (struct group *@var{result_buf}, char *@var{buffer}, size_t @var{buflen}, struct group **@var{result})
+This function is similar to @code{getgrent} in that it returns the next
+entry from the stream initialized by @code{setgrent}.  But in contrast
+to the @code{getgrent} function this function is reentrant since the
+result is placed in the user supplied structure pointed to by
+@var{result_buf}.  Additional data, normally the strings pointed to by
+the elements of the result structure, are placed in the additional
+buffer or length @var{buflen} starting at @var{buffer}.
+
+If the function returns null @var{result} points to the structure with
+the wanted data (normally this is in @var{result_buf}).  If errors
+occured the return value is non-null and @var{result} contains a null
+pointer.
+@end deftypefun
+
+@comment grp.h
 @comment SVID, BSD
 @deftypefun void endgrent (void)
-This function closes the internal stream used by @code{getgrent}.
+This function closes the internal stream used by @code{getgrent} or
+@code{getgrent_r}.
+@end deftypefun
+
+@node Netgroup Database, Database Example, Group Database, Users and Groups
+@section Netgroup Database
+
+@menu
+* Netgroup Data::                  Data in the Netgroup database and where
+                                   it comes from.
+* Lookup Netgroup::                How to look for a particular netgroup.
+* Netgroup Membership::            How to test for netgroup membership.
+@end menu
+
+@node Netgroup Data, Lookup Netgroup, Netgroup Database, Netgroup Database
+@subsection Netgroup Data
+
+@cindex{Netgroup}
+Sometimes it is useful group users according to other criterias like the
+ones used in the @xref{Group Database}.  E.g., it is useful to associate
+a certain group of users with a certain machine.  On the other hand
+grouping of host names is not supported so far.
+
+In Sun Microsystems SunOS appeared a new kind of database, the netgroup
+database.  It allows to group hosts, users, and domain freely, giving
+them individual names.  More concrete: a netgroup is a list of triples
+consisting of a host name, a user name, and a domain name, where any of
+the entries can be a wildcard entry, matching all inputs.  A last
+possibility is that names of other netgroups can also be given in the
+list specifying a netgroup.  So one can construct arbitrary hierachies
+without loops.
+
+Sun's implementation allows netgroups only for the @code{nis} or
+@code{nisplus} service @pxref{Services in the NSS configuration}.  The
+implementation in the GNU C library has no such restriction.  An entry
+in either of the input services must have the following form:
+
+@smallexample
+@var{groupname} ( @var{groupname} | @code{(}@var{hostname}@code{,}@var{username}@code{,}@code{domainname}@code{)} )+
+@end smallexample
+
+Any of the fields in the triple can be empty which means anything
+matches.  While describing te functions we will see that the opposite
+case is useful as well.  I.e., there shall be entries which will not
+match any input.  For entries like a name consisting of the single
+character @code{-} shall be used.
+
+@node Lookup Netgroup, Netgroup Membership, Netgroup Data, Netgroup Database
+@subsection Looking up one Netgroup
+
+The lookup functions for netgroups are a bit different to all other
+system database handling functions.  Since a single netgroup can contain
+many entries a two-step process is needed.  First a single netgroup is
+selected and then one can iterate over all entries in this netgroup.
+These functions are declared in @file{netdb.h}.
+
+@comment netdb.h
+@deftypefun int setnetgrent (const char *@var{netgroup})
+A call to this function initializes the internal state of the library to
+allow following calls of the @code{getnetgrent} iterate over all entries
+in the netgroup with name @var{netgroup}.
+
+When the call is successful (i.e., when a netgroup with this name exist)
+the return value is @code{1}.  When the return value is @code{0} no
+netgroup of this name is known or some other error occured.
+@end deftypefun
+
+It is important to remember that there is only one single state for
+iterating the netgroups.  Even if the programmer uses the
+@code{getnetgrent_r} function the result is not really reentrant since
+always only one single netgroup at a time can be processed.  If the
+program needs to process more than one netgroup simultaneously she
+must protect this by using external locking.  This problem was
+introduced in the original netgroups implementation in SunOS and since
+we must stay compatible it is not possible to change this.
+
+Some other functions also use the netgroups state.  Currently these are
+the @code{innetgr} function and parts of the implementation of the
+@code{compat} service part of the NSS implementation.
+
+@comment netdb.h
+@deftypefun int getnetgrent (char **@var{hostp}, char **@var{userp}, char **@var{domainp})
+This function returns the next unprocessed entry of the currently
+selected netgroup.  The string pointers, which addresses are passed in
+the arguments @var{hostp}, @var{userp}, and @var{domainp}, will contain
+after a successful call pointers to appropriate strings.  If the string
+in the next entry is empty the pointer has the value @code{NULL}.
+The returned string pointers are only valid unless no of the netgroup
+related functions are called.
+
+The return value is @code{1} if the next entry was successfully read.  A
+value of @code{0} means no further entry exist or internal errors occured.
+@end deftypefun
+
+@comment netdb.h
+@deftypefun int getnetgrent_r (char **@var{hostp}, char **@var{userp}, char **@var{domainp}, char *@var{buffer}, int @var{buflen})
+This function is similar to @code{getnetgrent} with only one exception:
+the strings the three string pointers @var{hostp}, @var{userp}, and
+@var{domainp} point to, are placed in the buffer of @var{buflen} bytes
+starting at @var{buffer}.  This means the returned values are valid
+even after other netgroup related functions are called.
+
+The return value is @code{1} if the next entry was successfully read and
+the buffer contains enough room to place the strings in it.  @code{0} is
+returned in case no more entries are found, the buffer is too small, or
+internal errors occured.
+
+This function is a GNU extension.  The original implementation in the
+SunOS libc does not provide this function.
+@end deftypefun
+
+@comment netdb.h
+@deftypefun void endnetgrent (void)
+This function free all buffers which were allocated to process the last
+selected netgroup.  As a result all string pointers returned by calls
+to @code{getnetgrent} are invalid afterwards.
+@end deftypefun
+
+@node Netgroup Membership,  , Lookup Netgroup, Netgroup Database
+@subsection Testing for Netgroup Membership
+
+It is often not necessary to scan the whole netgroup since often the
+only interesting question is whether a given entry is part of the
+selected netgroup.
+
+@comment netdb.h
+@deftypefun int innetgr (const char *@var{netgroup}, const char *@var{host}, const char *@var{user}, const char *@var{domain})
+This function tests whether the triple specified by the parameters
+@var{hostp}, @var{userp}, and @var{domainp} is part of the netgroup
+@var{netgroup}.  Using this function has the advantage that
+
+@enumerate
+@item
+no other netgroup function can use the global netgroup state since
+internal locking is used and
+@item
+the function is implemented more efficiently than successive calls
+to the other @code{set}/@code{get}/@code{endnetgrent} functions.
+@end enumerate
+
+Any of the pointers @var{hostp}, @var{userp}, and @var{domainp} can be
+@code{NULL} which means any value is excepted in this position.  This is
+also true for the name @code{-} which should not match any other string
+otherwise.
+
+The return value is @code{1} if an entry matching the given triple is
+found in the netgroup.  The return value is @code{0} is the netgroup
+itself is not found, the netgroup does not contain the triple or
+internal errors occured.
 @end deftypefun
 
-@node Database Example
+@node Database Example,  , Netgroup Database, Users and Groups
 @section User and Group Database Example
 
 Here is an example program showing the use of the system database inquiry
diff --git a/math/math.h b/math/math.h
index 74b893a49d..49d5c00aa3 100644
--- a/math/math.h
+++ b/math/math.h
@@ -1,24 +1,24 @@
 /* Declarations for math functions.
-Copyright (C) 1991, 92, 93, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   Copyright (C) 1991, 92, 93, 95, 96 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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.5 MATHEMATICS	<math.h>
+ *	ISO C Standard: 4.5 MATHEMATICS	<math.h>
  */
 
 #ifndef	_MATH_H
diff --git a/misc/err.h b/misc/err.h
index c81de1b396..403ef7f701 100644
--- a/misc/err.h
+++ b/misc/err.h
@@ -1,21 +1,21 @@
-/* err.h --- 4.4BSD utility functions for error messages.
-Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* err.h -- 4.4BSD utility functions for error messages.
+   Copyright (C) 1995, 1996 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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #ifndef	_ERR_H_
 #define	_ERR_H_	1
@@ -30,25 +30,25 @@ Cambridge, MA 02139, USA.  */
 __BEGIN_DECLS
 
 /* Print FORMAT on stderr.  */
-extern void warn __P ((const char *__format, ...))
+extern void warn __P ((__const char *__format, ...))
      __attribute__ ((format (printf, 1, 2)));
-extern void vwarn __P ((const char *__format, __gnuc_va_list))
+extern void vwarn __P ((__const char *__format, __gnuc_va_list))
      __attribute__ ((format (printf, 1, 0)));
 
 /* Print "program: ", and FORMAT, and a newline, on stderr.  */
-extern void warnx __P ((const char *__format, ...))
+extern void warnx __P ((__const char *__format, ...))
      __attribute__ ((format (printf, 1, 2)));
-extern void vwarnx __P ((const char *__format, __gnuc_va_list))
+extern void vwarnx __P ((__const char *__format, __gnuc_va_list))
      __attribute__ ((format (printf, 1, 0)));
 
 /* Likewise, and then exit with STATUS.  */
-extern void err __P ((int __status, const char *__format, ...))
+extern void err __P ((int __status, __const char *__format, ...))
      __attribute__ ((noreturn, format (printf, 2, 3)));
-extern void verr __P ((int __status, const char *__format, __gnuc_va_list))
+extern void verr __P ((int __status, __const char *__format, __gnuc_va_list))
      __attribute__ ((noreturn, format (printf, 2, 0)));
-extern void errx __P ((int __status, const char *__format, ...))
+extern void errx __P ((int __status, __const char *__format, ...))
      __attribute__ ((noreturn, format (printf, 2, 3)));
-extern void verrx __P ((int __status, const char *, __gnuc_va_list))
+extern void verrx __P ((int __status, __const char *, __gnuc_va_list))
      __attribute__ ((noreturn, format (printf, 2, 0)));
 
 __END_DECLS
diff --git a/misc/mntent.h b/misc/mntent.h
index fc9c824135..bfa1dee797 100644
--- a/misc/mntent.h
+++ b/misc/mntent.h
@@ -23,6 +23,7 @@ Cambridge, MA 02139, USA.  */
 #include <features.h>
 #define __need_FILE
 #include <stdio.h>
+#include <paths.h>
 
 
 /* File listing canonical interesting mount points.  */
diff --git a/nss/getXXbyYY.c b/nss/getXXbyYY.c
index a99b68f0e2..c300117b8c 100644
--- a/nss/getXXbyYY.c
+++ b/nss/getXXbyYY.c
@@ -60,16 +60,21 @@ Boston, MA 02111-1307, USA.  */
 
 
 /* Prototype for reentrant version we use here.  */
-extern LOOKUP_TYPE *INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *result,
-					       char *buffer, int buflen
-					       H_ERRNO_PARM);
+extern int INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf,
+				      char *buffer, size_t buflen,
+				      LOOKUP_TYPE **result H_ERRNO_PARM);
 
 LOOKUP_TYPE *
 FUNCTION_NAME (ADD_PARAMS)
 {
-  static LOOKUP_TYPE result;
   static char buffer[BUFLEN];
+  static LOOKUP_TYPE resbuf;
+  LOOKUP_TYPE *result;
 
-  return INTERNAL (REENTRANT_NAME) (ADD_VARIABLES, &result, buffer,
-				    BUFLEN H_ERRNO_VAR);
+  if (INTERNAL (REENTRANT_NAME) (ADD_VARIABLES, &resbuf, buffer,
+				 BUFLEN, &result H_ERRNO_VAR) != 0)
+    /* Error occured.  */
+    return NULL;
+
+  return result;
 }
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index 631fd1e33e..d85169ab81 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -82,9 +82,9 @@ extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp);
 
 
 
-LOOKUP_TYPE *
-INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *result, char *buffer,
-			   int buflen H_ERRNO_PARM)
+int
+INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
+			   size_t buflen, LOOKUP_TYPE **result H_ERRNO_PARM)
 {
   static service_user *startp = NULL;
   static lookup_function start_fct;
@@ -122,13 +122,14 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *result, char *buffer,
 
   while (no_more == 0)
     {
-      status = (*fct) (ADD_VARIABLES, result, buffer, buflen H_ERRNO_VAR);
+      status = (*fct) (ADD_VARIABLES, resbuf, buffer, buflen H_ERRNO_VAR);
 
       no_more = __nss_next (&nip, REENTRANT_NAME_STRING,
 			    (void **) &fct, status, 0);
     }
 
-  return status == NSS_STATUS_SUCCESS ? result : NULL;
+  *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL;
+  return status == NSS_STATUS_SUCCESS ? 0 : -1;
 }
 
 #define do_weak_alias(n1, n2) weak_alias ((n1), (n2))
diff --git a/nss/getXXent.c b/nss/getXXent.c
index ecf7eadc4c..7e291e6298 100644
--- a/nss/getXXent.c
+++ b/nss/getXXent.c
@@ -51,15 +51,22 @@ Boston, MA 02111-1307, USA.  */
 #endif
 
 /* Prototype of the reentrant version.  */
-LOOKUP_TYPE *INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *result, char *buffer,
-					   int buflen H_ERRNO_PARM);
+extern int INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer,
+					 size_t buflen, LOOKUP_TYPE **result
+					 H_ERRNO_PARM);
 
 
 LOOKUP_TYPE *
 GETFUNC_NAME (void)
 {
   static char buffer[BUFLEN];
-  static LOOKUP_TYPE result;
+  static LOOKUP_TYPE resbuf;
+  LOOKUP_TYPE *result;
 
-  return INTERNAL (REENTRANT_GETNAME) (&result, buffer, BUFLEN H_ERRNO_VAR);
+  if (INTERNAL (REENTRANT_GETNAME) (&resbuf, buffer, BUFLEN, &result
+				    H_ERRNO_VAR) != 0)
+    /* Errors occured.  */
+    return NULL;
+
+  return result;
 }
diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c
index 6bff863e07..1d06a9477a 100644
--- a/nss/getXXent_r.c
+++ b/nss/getXXent_r.c
@@ -187,9 +187,9 @@ ENDFUNC_NAME (void)
 }
 
 
-LOOKUP_TYPE *
-INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *result, char *buffer, int buflen
-			      H_ERRNO_PARM)
+int
+INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
+			      LOOKUP_TYPE **result H_ERRNO_PARM)
 {
   get_function fct;
   int no_more;
@@ -214,7 +214,7 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *result, char *buffer, int buflen
   no_more = setup ((void **) &fct, GETFUNC_NAME_STRING, 0);
   while (! no_more)
     {
-      status = (*fct) (result, buffer, buflen H_ERRNO_VAR);
+      status = (*fct) (resbuf, buffer, buflen H_ERRNO_VAR);
 
       no_more = __nss_next (&nip, GETFUNC_NAME_STRING, (void **) &fct,
 			    status, 0);
@@ -222,7 +222,8 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *result, char *buffer, int buflen
 
   __libc_lock_unlock (lock);
 
-  return status == NSS_STATUS_SUCCESS ? result : NULL;
+  *result = NSS_STATUS_SUCCESS ? resbuf : NULL;
+  return status == NSS_STATUS_SUCCESS ? 0 : -1;
 }
 #define do_weak_alias(n1, n2) weak_alias (n1, n2)
 do_weak_alias (INTERNAL (REENTRANT_GETNAME), REENTRANT_GETNAME)
diff --git a/nss/nss_db/db-netgrp.c b/nss/nss_db/db-netgrp.c
index 3afede56c6..2090dd1eff 100644
--- a/nss/nss_db/db-netgrp.c
+++ b/nss/nss_db/db-netgrp.c
@@ -52,7 +52,7 @@ _nss_db_setnetgrent (const char *group)
       db = dbopen (DBFILE, O_RDONLY, 0, DB_BTREE, NULL);
 
       if (db == NULL)
-	status = errno = EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
     }
 
   if (status == NSS_STATUS_SUCCESS)
diff --git a/po/es.po b/po/es.po
index 556982f587..963f668796 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,73 +1,32 @@
 # Mensajes en español para GNU libc.
 # Copyright (C) 1996 Free Software Foundation, Inc.
-# Enrique Melero Gómez <b182@mail.fh-wuerzburg.de>, 1996.
-#
-# 5 Abril 96, Comienzo con 1.10.1 , tendré que coger los fuentes de esta
-#             versión. Muchas cosas han cambiado
-#
-# 19 Abril 96 Terminado y dejado para revisión , crash de mi placa,
-#             aplico las ideas de SV en su mensaje del 14 Abril
-#
-# 21-23 Abril 96 Jugamos un poco al ping-pong sv y yo, termino ganando
-#             yo, como siempre :-), y se deja el archivo en ftp para revisión.
-#             Aplico algunas ideas vistas en glibc-1.10.0.de.po
-#
-# 27 Abril 96 Quito los mensajes antiguos y la envío definitivamente a Pinard.
-#             Nadie más la revisó, además de Santiago, esto es una pena.
-#
-# 5  Junio 96 Me manda Santiago Vila la 1.90 , fundida con las traducciones
-#             de la 1.10.0, gracias otra vez Santiago.
-#
-# 8  Junio 96 al volver de Praga me pongo con ella, y la dejo lista para revisar.
-#
-# 13 Junio 96 Me manda Santiago la 1.92 (cuyo .pot coincidía con el de la 1.90)
-#             para que revise con cuidado todos los `fuzzy's
-#
-# 20 Junio 96 Me pongo con el 1.92 a las 10 am
-#
-# ## [ 22 de Junio: Ánimo que sólo te quedan 10 "fuzzy"s ]
-# ## Cambio el PO-Revision-Date, con tu permiso.
-# ## El día 23 me decido a acabar con esta versión, son las 23:00 , a ver
-#    si puedo dormir un poco hoy ;)
-#
+# Enrique Melero Gómez <justine@iprolink.ch>, 1996.
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU glibc 1.92\n"
-"POT-Creation-Date: 1996-05-29 14:03\n"
-"PO-Revision-Date: 1996-07-23 18:00+0200 (MET DST)\n"
-"Last-Translator: Enrique Melero Gómez <b182@mail.fh-wuerzburg.de>\n"
+"Project-Id-Version: GNU libc 1.96\n"
+"POT-Creation-Date: 1996-10-17 03:22+0200\n"
+"PO-Revision-Date: 1996-10-27 16:08 MET\n"
+"Last-Translator: Enrique Melero Gómez <justine@iprolink.ch>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: sunrpc/rpc_main.c:80
-#, c-format
-msgid "       %s [-c | -h | -l | -m] [-o outfile] [infile]\n"
-msgstr "       %s [-c | -h | -l | -m] [-o archivo_salida] [archivo_entrada]\n"
-
-#: sunrpc/rpc_main.c:83
-#, c-format
-msgid "       %s [-s udp|tcp]* [-o outfile] [infile]\n"
-msgstr "       %s [-s udp|tcp]* [-o archivo_salida] [archivo_entrada]\n"
-
-# ## Si vas a traducir númprog por numprog, sé consistente. sv
-# ## lo dejo todo como numprog em
 #: sunrpc/rpcinfo.c:612
-msgid "       rpcinfo -b númprog versnum\n"
-msgstr "       rpcinfo -b númprog versnum\n"
+msgid "       rpcinfo -b prognum versnum\n"
+msgstr "       rpcinfo -b númprog núnvers\n"
 
 #: sunrpc/rpcinfo.c:613
-msgid "       rpcinfo -d númprog versnum\n"
-msgstr "       rpcinfo -d númprog versnum\n"
+msgid "       rpcinfo -d prognum versnum\n"
+msgstr "       rpcinfo -d númprog númvers\n"
 
 #: sunrpc/rpcinfo.c:611
 msgid "       rpcinfo -p [ host ]\n"
 msgstr "        rpcinfo -p [ host ]\n"
 
 #: sunrpc/rpcinfo.c:610
-msgid "       rpcinfo [ -n portnum ] -t host númprog [ versnum ]\n"
-msgstr "       rpcinfo [ -n numpuerto ] -t host númprog [ versnum ]\n"
+msgid "       rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
+msgstr "       rpcinfo [ -n númpuerto ] -t host númprog [ númvers ]\n"
 
 # ## Añado un espacio. sv
 # Sugerencia: port -> puerto. sv
@@ -76,30 +35,34 @@ msgstr "       rpcinfo [ -n numpuerto ] -t host númprog [ versnum ]\n"
 msgid "   program vers proto   port\n"
 msgstr "   programa vers proto   puerto\n"
 
-#: time/zic.c:423
+#: time/zic.c:424
 #, c-format
 msgid " (rule from \"%s\", line %d)"
 msgstr " (regla desde \"%s\", línea %d)"
 
+#: locale/programs/ld-collate.c:360 locale/programs/ld-ctype.c:1234
+msgid " done\n"
+msgstr " hecho\n"
+
 # ## Borro un "fuzzy" que había. sv
-#: time/zic.c:420
+#: time/zic.c:421
 #, c-format
 msgid "\"%s\", line %d: %s"
 msgstr "\"%s\", línea %d: %s"
 
 # ## Cambio "Zona" por "Zone". sv
 # ## Corrijo el nombre de la opción. sv
-#: time/zic.c:908
+#: time/zic.c:945
 #, c-format
 msgid "\"Zone %s\" line and -l option are mutually exclusive"
 msgstr "la línea \"Zone %s\" y la opción -l son mutuamente excluyentes"
 
-#: time/zic.c:916
+#: time/zic.c:953
 #, c-format
 msgid "\"Zone %s\" line and -p option are mutually exclusive"
 msgstr "la línea \"Zone %s\" y la opción -p son mutuamente excluyentes"
 
-#: time/zic.c:721
+#: time/zic.c:758
 #, c-format
 msgid "%s in ruleless zone"
 msgstr "%s en una zona sin reglas"
@@ -115,7 +78,7 @@ msgstr "%s%s%s:%u: %s%sLa declaración `%s' no se cumple.\n"
 
 # ## ¿Qué tiene de malo "inesperado"? sv
 # ## Parece el nombre de película de los '50 em
-# ## ... y antes de que digas nada, a mí me encantan
+# ## ... y antes de que digas nada, a mí me encantan 
 # ## las películas de los 50 em+
 #: assert/assert-perr.c:46
 #, c-format
@@ -127,54 +90,54 @@ msgstr "%s%s%s:%u: %s%sError no esperado: %s.\n"
 msgid "%s%sUnknown signal %d\n"
 msgstr "%s%sSeñal desconocida %d\n"
 
-#: sunrpc/rpc_util.c:258
-#, c-format
-msgid "%s, line %d: "
-msgstr "%s, línea %d: "
-
-#: time/zic.c:2035
+#: time/zic.c:2139
 #, c-format
 msgid "%s: %d did not sign extend correctly\n"
 msgstr "%s: %d no extendió el signo correctamente\n"
 
-#: time/zic.c:1339
+#: locale/programs/charmap.c:176
+#, c-format
+msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
+msgstr "%s: <mb_cur_max> debe de ser más grande que <mb_cur_min>\n"
+
+#: time/zic.c:1430
 #, c-format
 msgid "%s: Can't create %s: %s\n"
 msgstr "%s: No se puede crear %s: %s\n"
 
-#: time/zic.c:2014
+#: time/zic.c:2118
 #, c-format
 msgid "%s: Can't create directory %s: %s\n"
 msgstr "%s; No se puede crear el directorio %s: %s\n"
 
 # Sugerencia: hacer -> crear. sv
 # Aceptada em+
-#: time/zic.c:600
+#: time/zic.c:612
 #, c-format
 msgid "%s: Can't link from %s to %s: %s\n"
-msgstr "%s: No se pudo crearr un enlace desde %s a %s: %s\n"
+msgstr "%s: No se pudo crear un enlace desde %s a %s: %s\n"
 
-#: time/zic.c:746
+#: time/zic.c:783
 #, c-format
 msgid "%s: Can't open %s: %s\n"
 msgstr "%s: No se puede abrir %s: %s\n"
 
-#: time/zic.c:814
+#: time/zic.c:851
 #, c-format
 msgid "%s: Error closing %s: %s\n"
 msgstr "%s: Error al cerrar %s: %s\n"
 
-#: time/zic.c:808
+#: time/zic.c:845
 #, c-format
 msgid "%s: Error reading %s\n"
 msgstr "%s: Error al leer %s\n"
 
-#: time/zic.c:1404
+#: time/zic.c:1494
 #, c-format
 msgid "%s: Error writing %s\n"
 msgstr "%s: Error al escribir %s\n"
 
-#: time/zdump.c:257
+#: time/zdump.c:258
 #, c-format
 msgid "%s: Error writing standard output "
 msgstr "%s: Error al escribir en la salida estándar "
@@ -183,7 +146,7 @@ msgstr "%s: Error al escribir en la salida estándar "
 #
 # diría que la porción "de años bisiestos" sobra. sv
 #
-# Mejor dejarlo bien clarito. Despues de haberme enterado de
+# Mejor dejarlo bien clarito. Despues de haberme enterado de 
 # qué diablos era eso ;)
 #
 # En ningún sitio dice que la línea de ajuste sea "de años bisiestos"
@@ -197,55 +160,55 @@ msgstr "%s: Error al escribir en la salida estándar "
 # Otra cosa: "en un archivo que no es el de" -> "en un archivo que no es de"
 # (sin "el"). Si no, da a entender que sólo puede haber uno,
 # y el original no da a entender eso. sv
-#
+# 
 # Varias cosas, según he entendido los ajustes en segundo se llaman
 # indiferentemente 'segundos itercalares' o 'segundos bisiestos'
-# el ajuste en sí es un ajuste de años bisiestos ( no son exáctamente
+# el ajuste en sí es un ajuste de años bisiestos ( no son exáctamente 
 # un día ) . Por lo tanto Leap ( año bisiesto ) line , son las líneas
 # que caracterizan al leap seconds file, que podríamos llamarlo fichero
 # de ajuste de años bisiestos, archivo intercalar o incluso bisiestifile
 # De todas maneras creo que lo cambio, este mensaje, si alguna vez tengo
-# la mala suerte de que me aparezca, me acoxonaría, tal y como está
-# redactado
+# la mala suerte de que me aparezca, me acoxonaría, tal y como está 
+# redactado 
 # Segundo, según he visto en la documentación , solo existe un fichero
-# de leap lines , por eso pongo 'el'... em+
+# de leap lines , por eso pongo 'el'... em+  
 #
-#: time/zic.c:793
+#: time/zic.c:830
 #, c-format
 msgid "%s: Leap line in non leap seconds file %s\n"
 msgstr ""
 "%s: Línea de segundos intercalares en un archivo que no es el de\n"
 "ajuste de años bisiestos %s\n"
 
-#: time/zic.c:360
+#: time/zic.c:362
 #, c-format
 msgid "%s: Memory exhausted: %s\n"
 msgstr "%s: Memoria agotada: %s\n"
 
 # Sugerencia: se especificó -> se ha especificado. sv
 # Aceptada em+
-#: time/zic.c:515
+#: time/zic.c:527
 #, c-format
 msgid "%s: More than one -L option specified\n"
 msgstr "%s: La opción -L se ha especificado más de una vez\n"
 
 # Lo mismo. sv
 # idem em+
-#: time/zic.c:475
+#: time/zic.c:487
 #, c-format
 msgid "%s: More than one -d option specified\n"
 msgstr "%s: La opción -d se ha especificado más de una vez\n"
 
 # Lo mismo. sv
 # jo em+
-#: time/zic.c:485
+#: time/zic.c:497
 #, c-format
 msgid "%s: More than one -l option specified\n"
 msgstr "%s: La opción -l se ha especificado más de una vez\n"
 
 # Lo mismo. sv
 # cachi en la mar em+
-#: time/zic.c:495
+#: time/zic.c:507
 #, c-format
 msgid "%s: More than one -p option specified\n"
 msgstr "%s: La opción -p se ha especificado más de una vez\n"
@@ -253,94 +216,101 @@ msgstr "%s: La opción -p se ha especificado más de una vez\n"
 # Lo mismo. sv
 # ahora mismo hago un search-replace em+
 # solo quedaba este ;(
-#: time/zic.c:505
+#: time/zic.c:517
 #, c-format
 msgid "%s: More than one -y option specified\n"
-msgstr "%s: La opción -y se ha especidicado más de una vez\n"
+msgstr "%s: La opción -y se ha especificado más de una vez\n"
 
-# ## FUZZY. Este te dejo que se lo quites tú. sv
-# :) em+
-#: posix/getconf.c:149
-msgid "%s: Unrecognized variable `%s'\n"
-msgstr "%s: Variable desconocida `%s'\n"
-
-#: time/zic.c:1741
+#: time/zic.c:1845
 #, c-format
 msgid "%s: command was '%s', result was %d\n"
 msgstr "%s: la orden fue '%s', el resultado fue %d\n"
 
-#: posix/getopt.c:686
+# FUZZY
+# ¿ Se le ocurre a alguien algo ? em+
+#: locale/programs/charmap.c:593 locale/programs/locfile.c:878
+#, c-format
+msgid "%s: error in state machine"
+msgstr "%s: error en la máquina de estado"
+
+#: posix/getopt.c:687
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: opción no permitida -- %c\n"
 
 # ¿Qué tiene de malo "inválida"? sv
-# Jope, y que tiene de malo no válida ?
+# Jope, y que tiene de malo no válida ? 
 # usuario inválido tiene un doble sentido claro
 # ya que uso usuario no válido me parece bien usar
 # tambien opción no válida, aunque solo sea de vez
 # en cuando em+
-#: posix/getopt.c:689
+#: posix/getopt.c:690
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opción no válida -- %c\n"
 
 # ## he cambiado esto de acuerdo con gettext y diffutils. sv
-#: posix/getopt.c:610
+#: posix/getopt.c:611
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
 
-#: posix/getopt.c:581
+#: posix/getopt.c:582
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: la opción `%s' es ambigua\n"
 
-#: posix/getopt.c:627
+#: posix/getopt.c:628 posix/getopt.c:801
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: la opción `%s' requiere un argumento\n"
 
 # ## lo mismo de antes. sv
-#: posix/getopt.c:605
+#: posix/getopt.c:606
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: la opción `--%s' no admite ningún argumento\n"
 
-#: posix/getopt.c:725
+# ## lo mismo de antes. sv
+#: posix/getopt.c:786
 #, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: la opción requiere un argumento --%c\n"
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
 
-#: sunrpc/rpc_main.c:146
+#: posix/getopt.c:767
 #, c-format
-msgid "%s: output would overwrite %s\n"
-msgstr "%s: la salida sobreescribiría %s\n"
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: la opción `-W %s' es ambigua\n"
+
+#: posix/getopt.c:721 posix/getopt.c:850
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: la opción requiere un argumento --%c\n"
 
 # ## posibles traducciones de l_value: l_valor ó valor_l.
 # ## posiblemente la segunda aparezca en el K & R en español. sv
-#: time/zic.c:800 zic.c:1212 zic.c:1232
+#: time/zic.c:837 time/zic.c:1248 time/zic.c:1268
 #, c-format
 msgid "%s: panic: Invalid l_value %d\n"
 msgstr "%s: grave: valor_l no válido %d\n"
 
-#: sunrpc/rpc_main.c:152
+#: locale/programs/charmap.c:600
 #, c-format
-msgid "%s: unable to open "
-msgstr "%s: no se pudo abrir "
+msgid "%s: premature end of file"
+msgstr "%s: fin de fichero no esperado"
 
-#: posix/getopt.c:660
+#: posix/getopt.c:661
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: opción desconocida `%c%s'\n"
 
-#: posix/getopt.c:656
+#: posix/getopt.c:657
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: opción desconocida `--%s'\n"
 
 # ## Añado unos espacios donde decía "archivo ... " sv
-#: time/zic.c:432
+#: time/zic.c:446
 #, c-format
 msgid ""
 "%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d "
@@ -349,8 +319,8 @@ msgid ""
 msgstr ""
 "%s: el modo de empleo es %s [ -s ] [ -v ] [ -l hora_local ] [ -p reglasposix "
 "]\n"
-"\t[ -d directorio ] [ -L segundos_intercalares ] [ -y tipoaño ] [ "
-"archivo ... ]\n"
+" [ -d directorio ] [ -L segundos_intercalares ] [ -y tipoaño ] [ archivo ... "
+"]\n"
 
 #: time/zdump.c:165
 #, c-format
@@ -369,34 +339,37 @@ msgstr "(error de autentificación desconocido - %d)"
 # de todas maneras queda pendiente de revisar con la versión alemana
 # no quites el fuzzy em+
 #: sunrpc/rpcinfo.c:555
-#, fuzzy
 msgid "(unknown)"
 msgstr "(señal desconocida)"
 
-#: catgets/gencat.c:242
+#: catgets/gencat.c:253
 msgid "*standard input*"
 msgstr "*entrada estándar*"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:766
+msgid ".lib section in a.out corrupted"
+msgstr "la sección .lib en el a.out está corrompida"
+
 # Sugerencia: Añadir (fstat) después de información. sv
-#: inet/rcmd.c:325
+#: inet/rcmd.c:328
 msgid ".rhosts fstat failed"
 msgstr "No se pudo obtener información (fstat) del archivo .rhosts"
 
 # Lo mismo con lstat. sv
-#: inet/rcmd.c:321
+#: inet/rcmd.c:324
 msgid ".rhosts lstat failed"
 msgstr "No se pudo obtener información (lstat) del archivo .rhosts"
 
 #  lo de regular no me gusta, pero ?
-#: inet/rcmd.c:323
+#: inet/rcmd.c:326
 msgid ".rhosts not regular file"
 msgstr ".rhosts no es un archivo regular"
 
-#: inet/rcmd.c:329
+#: inet/rcmd.c:332
 msgid ".rhosts writeable by other than owner"
 msgstr ".rhosts puede ser modificado por otros además del propietario"
 
-#: clnt_perr.c:133 sunrpc/clnt_perr.c:112
+#: sunrpc/clnt_perr.c:112 sunrpc/clnt_perr.c:133
 #, c-format
 msgid "; low version = %lu, high version = %lu"
 msgstr "; versión menor = %lu, versión mayor = %lu"
@@ -405,38 +378,89 @@ msgstr "; versión menor = %lu, versión mayor = %lu"
 msgid "; why = "
 msgstr "; causa ="
 
+#: locale/programs/ld-ctype.c:326
+#, c-format
+msgid "<SP> character must not be in class `%s'"
+msgstr "El carácter <SP> no debe de estar en la clase '%s'"
+
+#: locale/programs/ld-ctype.c:317
+#, c-format
+msgid "<SP> character not in class `%s'"
+msgstr "El carácter <SP> no está en la clase `%s'"
+
 # ## ¿? ATENCIÓN.
 # ## Informar de esto a Ulrich Drepper. Debe haber en algún lugar
 # ## una cadena que permita "¿".
 # ## Solucionado: Con suerte desaparecerá en la próxima versión.
+#. 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:591
 msgid "?"
 msgstr "?"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:762
+msgid "Accessing a corrupted shared library"
+msgstr "Accediendo a una biblioteca compartida que está corrompida"
+
+#. TRANS The requested socket address is already in use.  @xref{Socket Addresses}.
+#: stdio-common/../sysdeps/gnu/errlist.c:354
 msgid "Address already in use"
 msgstr "La dirección ya se está usando"
 
-msgid "Address family not supported by protocol family"
+#. 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:349
+msgid "Address family not supported by protocol"
 msgstr "Esta familia de direcciones no está soportada por el protocolo"
 
+# FUZZY
+# Lo dejo fuzzy aposta, a ver que se os ocurre em+
+#: stdio-common/../sysdeps/gnu/errlist.c:714
+msgid "Advertise error"
+msgstr "Error de advertencia"
+
 msgid "Alarm clock"
 msgstr "Temporizador"
 
+#. 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:57
 msgid "Argument list too long"
 msgstr "La lista de argumentos es demasiado larga"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:770
+msgid "Attempting to link in too many shared libraries"
+msgstr "Se intenta enlazar en demasiadas librerías compartidas"
+
 #: sunrpc/clnt_perr.c:276
 msgid "Authentication OK"
 msgstr "Autentificación válida"
 
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:549
 msgid "Authentication error"
 msgstr "Error de autentificación"
 
+#. 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:102
 msgid "Bad address"
 msgstr "Dirección incorrecta"
 
+#. 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:70
 msgid "Bad file descriptor"
 msgstr "Descriptor de archivo erróneo"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:682
+msgid "Bad font file format"
+msgstr "Formato de fichero fuente incorrecto"
+
 # ## Ya estamos ...
 # ¿ Dispositivo de bloques ? , ¿ cómo se le puede llamar a esto ?
 # ## al principio puse , 'se precisa de' pero me sonó mal
@@ -447,6 +471,10 @@ msgstr "Descriptor de archivo erróneo"
 # Dispositivos de bloques y dispositivos de caracteres.
 # Supongo que así se llamarán en español. sv
 # yo los llamo así, desde luego em+
+#. 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:109
 msgid "Block device required"
 msgstr "Se requiere un dispositivo de bloques"
 
@@ -458,12 +486,18 @@ msgstr "Se requiere un dispositivo de bloques"
 #  Sugerencia: `broadcast'. sv
 #  Creo que este mensaje está mal traducido ...
 #  habrá que echar mano a las fuentes em+
-#: sunrpc/pmap_rmt.c:336
+#: sunrpc/pmap_rmt.c:337
 msgid "Broadcast select problem"
-msgstr "Problema en la selección del broadcast"
+msgstr "Problema en la selección del `broadcast'"
 
 #  Vi traducido pipe como tubo en un libro sobre pc/dos , y me horrorizó
 #  menos mal que venía siempre la palabra `pipe' al lado entrecomillada
+#. 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}.
+#: stdio-common/../sysdeps/gnu/errlist.c:222
 msgid "Broken pipe"
 msgstr "Tubería (pipe) rota"
 
@@ -473,48 +507,69 @@ msgstr "Error del bus"
 msgid "CPU time limit exceeded"
 msgstr "Rebasado el límite de tiempo de CPU"
 
-msgid "Can't assign requested address"
-msgstr "No se puede asignar la dirección solicitada"
-
-msgid "Can't send after socket shutdown"
-msgstr "No se puede enviar tras la destrucción del `socket'"
+#: stdio-common/../sysdeps/gnu/errlist.c:758
+msgid "Can not access a needed shared library"
+msgstr "No se puede acceder a una librería compartida que se necesita"
 
+#. TRANS No memory available.  The system cannot allocate more virtual memory
+#. TRANS because its capacity is full.
+#: stdio-common/../sysdeps/gnu/errlist.c:91
 msgid "Cannot allocate memory"
 msgstr "No se pudo asignar memoria"
 
+#. 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:361
+msgid "Cannot assign requested address"
+msgstr "No se puede asignar la dirección solicitada"
+
 # He intentado mejorarlo un poco ...
 #
 # Por favor, pon `broadcast' en lugar de broadcast.
 # Si vamos a usar términos ingleses a lo bestia, reconozcamos al menos que
 # no son términos españoles. sv
-#: sunrpc/pmap_rmt.c:254
+#: sunrpc/pmap_rmt.c:255
 msgid "Cannot create socket for broadcast rpc"
 msgstr "No se puede crear `socket' para enviar un mensaje `broadcast' del rpc"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:774
+msgid "Cannot exec a shared library directly"
+msgstr "No se puede ejecutar una librería compartida directamente"
+
 # ???
 # ¿Qué tal "... recibir la respuesta al `broadcast'"?
 # Mucho mejor em+
-#: sunrpc/pmap_rmt.c:348
+#: sunrpc/pmap_rmt.c:349
 msgid "Cannot receive reply to broadcast"
-msgstr "No se puede recibir respuesta al `broadcast'"
+msgstr "No se puede recibir la respuesta al `broadcast'"
 
 #: sunrpc/pmap_clnt.c:79
 msgid "Cannot register service"
 msgstr "No se pudo registrar el servicio"
 
+#. TRANS The socket has already been shut down.
+#: stdio-common/../sysdeps/gnu/errlist.c:422
+msgid "Cannot send after transport endpoint shutdown"
+msgstr "No se puede enviar tras la destrucción del punto de destino"
+
 # ???
 # En todo caso. mandar -> enviar. sv
-#: sunrpc/pmap_rmt.c:312
+#: sunrpc/pmap_rmt.c:313
 msgid "Cannot send broadcast packet"
 msgstr "No se pudo enviar el mensaje `broadcast'"
 
 # ## ¿Y qué te parecería cambiar el orden? Así:
 # ## "No se pudo especificar la opción SO_BROADCAST para el `socket'" sv
 # ## Gracias.
-#: sunrpc/pmap_rmt.c:260
+#: sunrpc/pmap_rmt.c:261
 msgid "Cannot set socket option SO_BROADCAST"
 msgstr "No se pudo especificar la opción SO_BROADCAST para el `socket'"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:622
+msgid "Channel number out of range"
+msgstr "Número de canal fuera de rango"
+
 msgid "Child exited"
 msgstr "El proceso hijo terminó"
 
@@ -522,39 +577,109 @@ msgstr "El proceso hijo terminó"
 msgid "Client credential too weak"
 msgstr "Las credenciales del cliente son poco fiables"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:722
+msgid "Communication error on send"
+msgstr "Error de comunicación al enviar"
+
 #  ¿ qué diablos es esto ? , esperemos a tener las fuentes
 #  estupendo , este error parece mostrarse en dos ocasiones
 # - Macro: int EIEIO
 #     Go home and have a glass of warm, dairy-fresh milk.
 #  Jochen tambien lo traduce asi.  em
+#. TRANS Go home and have a glass of warm, dairy-fresh milk.
+#: stdio-common/../sysdeps/gnu/errlist.c:601
 msgid "Computer bought the farm"
-msgstr "El ordenador ha comprado la granja"
+msgstr "El ordenador ha comprado una granja"
+
+#: locale/programs/ld-ctype.c:1197
+msgid "Computing table size for character classes might take a while..."
+msgstr ""
+"El cálculo del tamaño de la tabla de clases de caracteres podría tardar un \n"
+"rato ..."
+
+# FUZZY
+# Collating, uff , lo he visto por lo menos 10 veces, en varios contextos 
+# diferentes. Uno de ellos en el de comparaciones de strings en el DM de DB2.
+# Podría traducirse tambien como 'uniones' o 'emparejamientos' ... em+ 
+#: locale/programs/ld-collate.c:327
+msgid "Computing table size for collation information might take a while..."
+msgstr ""
+"El cálculo del tamaño de la tabla de información de secuencias podría "
+"tardar\n"
+"un rato ..."
 
+#. 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:439
 msgid "Connection refused"
 msgstr "Conexión rehusada"
 
 # Se aceptan sugerencias alternativas para "peer"
+#. 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:389
 msgid "Connection reset by peer"
 msgstr "Conexión reinicializada por la máquina remota"
 
+#. TRANS A socket operation with a specified timeout received no response during
+#. TRANS the timeout period.
+#: stdio-common/../sysdeps/gnu/errlist.c:433
 msgid "Connection timed out"
 msgstr "Expiró el tiempo de conexión"
 
 msgid "Continued"
 msgstr "Continúa"
 
+#: catgets/gencat.c:169 db/makedb.c:120 locale/programs/locale.c:187
+#: locale/programs/localedef.c:177
+#, 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"
+"Este es software de libre distribución; vea las fuentes para ver las\n"
+"condiciones de duplicado. No existe NINGUNA garantía; tampoco incluso para\n"
+"su COMERCIABILIDAD o ADECUACIÓN para algún propósito en particular.\n"
+
+#. 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:417
 msgid "Destination address required"
 msgstr "Se debe especificar la dirección de destino"
 
-msgid "Device busy"
-msgstr "Dispositivo ocupado"
-
+# FUZZY
+#: stdio-common/../sysdeps/gnu/errlist.c:686
+msgid "Device not a stream"
+msgstr "El dispositivo no es un `stream'"
+
+#. 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:49
 msgid "Device not configured"
 msgstr "Dispositivo no configurado"
 
+#. 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:116
+msgid "Device or resource busy"
+msgstr "Dispositivo o recurso ocupado"
+
+#. 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:468
 msgid "Directory not empty"
 msgstr "El directorio no está vacio"
 
+#. TRANS The user's disk quota was exceeded.
+#: stdio-common/../sysdeps/gnu/errlist.c:486
 msgid "Disc quota exceeded"
 msgstr "Se ha excedido la cuota de disco"
 
@@ -567,27 +692,59 @@ msgstr "Error %d"
 msgid "Error in unknown error system: "
 msgstr "Error de sistema desconocido: "
 
+#: inet/ruserpass.c:161
+msgid "Error: .netrc file is readable by others."
+msgstr "Error: el fichero .netrc es leible por otros usuarios."
+
+# FUZZY em+
+#: stdio-common/../sysdeps/gnu/errlist.c:662
+msgid "Exchange full"
+msgstr "Intercambio lleno"
+
+#. 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:63
 msgid "Exec format error"
 msgstr "Formato de ejecutable incorrecto"
 
+#: locale/programs/localedef.c:213
+msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
+msgstr "Error fatal: el sistema no define `_POSIX2_LOCALEDEF'"
+
 #: sunrpc/clnt_perr.c:290
 msgid "Failed (unspecified error)"
 msgstr "Falló (error no especificado)"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:750
+msgid "File descriptor in bad state"
+msgstr "El descriptor de archivo está en mal estado"
+
+#. 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:122
 msgid "File exists"
 msgstr "El archivo existe"
 
+# FUZZY em+
+#: stdio-common/../sysdeps/gnu/errlist.c:678
+msgid "File locking deadlock error"
+msgstr "error `deadlock' al bloquear el archivo"
+
+#. 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:452
 msgid "File name too long"
 msgstr "Nombre de archivo demasiado largo"
 
 msgid "File size limit exceeded"
 msgstr "Superado el límite de tamaño de archivo"
 
+#. TRANS File too big; the size of a file would be larger than allowed by the system.
+#: stdio-common/../sysdeps/gnu/errlist.c:190
 msgid "File too large"
 msgstr "Archivo demasiado grande"
 
-# ## ???
-# ## Con permiso, le pongo doble almohadilla. sv
 msgid "Floating point exception"
 msgstr "Excepción de coma flotante"
 
@@ -600,9 +757,24 @@ msgstr "Excepción de coma flotante"
 # funciona no tienes a quien quejarte.
 # En cambio no implementada es que no está implementada. sv
 # Ok, me has convencido em
+# ¿No existe en español "implementar"? sv
+# ¿ Crees que es tan importante ? em
+# No, pero si el autor hubiera querido decir soportada, podría haber puesto
+# "supported". por eso creo que lo lógico sería:
+# supported -> soportada  e  implemented -> implementada.
+# "no soportado" tiene el matiz de que puede estar implementado pero si no
+# funciona no tienes a quien quejarte.
+# En cambio no implementada es que no está implementada. sv
+# Ok, me has convencido em
+#. TRANS Function not implemented.  Some functions have commands or options defined
+#. TRANS that might not be supported in all implementations, and this is the kind
+#. TRANS of error you get if you request them and they are not supported.
+#: stdio-common/../sysdeps/gnu/errlist.c:561
 msgid "Function not implemented"
 msgstr "Función no implementada"
 
+#. TRANS This error code has no purpose.
+#: stdio-common/../sysdeps/gnu/errlist.c:606
 msgid "Gratuitous error"
 msgstr "Error injustificado"
 
@@ -632,12 +804,14 @@ msgstr "Colgar ( hangup )"
 #
 # A esto no me has contestado todavía. sv
 #
-# Ni te lo voy a contestar, habrá que aceptar que el español
+# Ni te lo voy a contestar, habrá que aceptar que el español 
 # sigue Enrique-ciendose con nuevas palabras em+
+#. TRANS The remote host for a requested network connection is down.
+#: stdio-common/../sysdeps/gnu/errlist.c:457
 msgid "Host is down"
 msgstr "El host no está operativo"
 
-#: resolv/herror.c:74
+#: resolv/herror.c:75
 msgid "Host name lookup failure"
 msgstr "Nombre de host no encontrado"
 
@@ -649,6 +823,10 @@ msgstr "Operación de entrada/salida permitida"
 msgid "IOT trap"
 msgstr "`trap' de IOT"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:618
+msgid "Identifier removed"
+msgstr "El identificador se ha eliminado"
+
 # Se trata de una instrucción ilegal en el juego de instrucciones del 486
 # que provoca una "excepción".
 msgid "Illegal Instruction"
@@ -657,12 +835,23 @@ msgstr "Instrucción ilegal"
 # ¿"seek" no era "desplazamiento"? sv
 # Según el contexto no se puede saber a que se refiere
 # cambio ... por no permitida em+
+#. TRANS Invalid seek operation (such as on a pipe).
+#: stdio-common/../sysdeps/gnu/errlist.c:201
 msgid "Illegal seek"
 msgstr "Búsqueda no permitida"
 
+#. 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:544
 msgid "Inappropriate file type or format"
 msgstr "Formato o tipo de archivo no apropiado"
 
+#. TRANS Inappropriate I/O control operation, such as trying to set terminal
+#. TRANS modes on an ordinary file.
+#: stdio-common/../sysdeps/gnu/errlist.c:176
 msgid "Inappropriate ioctl for device"
 msgstr "Función ioctl no apropiada para el dispositivo"
 
@@ -679,18 +868,43 @@ msgstr "Función ioctl no apropiada para el dispositivo"
 #
 # En este caso, creo que sobran el "La" y el "es". Por eso le he quitado
 # el "es". sv
+#. 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:577
 msgid "Inappropriate operation for background process"
 msgstr "Operación no válida para un proceso en segundo plano"
 
+#. TRANS Input/output error; usually used for physical read or write errors.
+#: stdio-common/../sysdeps/gnu/errlist.c:40
 msgid "Input/output error"
 msgstr "Error de entrada/salida"
 
 msgid "Interrupt"
 msgstr "Interrupción"
 
+#. TRANS Interrupted function call; an asynchronous signal occured 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:35
 msgid "Interrupted system call"
 msgstr "Llamada al sistema interrumpida"
 
+# FUZZY
+#: stdio-common/../sysdeps/gnu/errlist.c:610
+msgid "Interrupted system call should be restarted"
+msgstr "La llamada al sistema interrumpida debería volverse a iniciar"
+
+#. 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:152
 msgid "Invalid argument"
 msgstr "Argumento no válido"
 
@@ -719,8 +933,22 @@ msgid "Invalid content of \\{\\}"
 msgstr "Contenido de \\{\\} inválido"
 
 #  ??? ver esto.
+#. 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:129
 msgid "Invalid cross-device link"
-msgstr "Enlace de un dispositivo a otro no permitido"
+msgstr "Enlace cruzado entre dispositivos no permitido"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:654
+msgid "Invalid exchange"
+msgstr "Intercambio no válido"
+
+#. 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:567
+msgid "Invalid or incomplete multibyte or wide character"
+msgstr "El carácter multibyte o extendido está incompleto o es inválido"
 
 #: posix/regex.c:953
 msgid "Invalid preceding regular expression"
@@ -734,31 +962,101 @@ msgstr "Final de rango no válido"
 msgid "Invalid regular expression"
 msgstr "La expresión regular es errónea"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:670
+msgid "Invalid request code"
+msgstr "Código de petición incorrecto"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:658
+msgid "Invalid request descriptor"
+msgstr "El descriptor de archivo solicitado es erróneo"
+
 #: sunrpc/clnt_perr.c:288
 msgid "Invalid server verifier"
 msgstr "Verificación del servidor no válido"
 
+# Ranura no válida ? , creo que no hay traducción para slot :) em+
+#: stdio-common/../sysdeps/gnu/errlist.c:674
+msgid "Invalid slot"
+msgstr "`slot' incorrecto"
+
+#. 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:146
 msgid "Is a directory"
 msgstr "Es un directorio"
 
+# FUZZY em+
+# ¿ Será esto un `named pipe' ? ¿ cómo se traduce ? 
+#: stdio-common/../sysdeps/gnu/errlist.c:794
+msgid "Is a named type file"
+msgstr "Es un fichero `named'"
+
 #  A quien se le ocurra `matar' un proceso, que especifique con qué señal.
 #  En todo caso ` Terminado ( KILL ) ' sería apropiado. Ver fuentes
 msgid "Killed"
 msgstr "Terminado (killed)"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:650
+msgid "Level 2 halted"
+msgstr "Nivel 2 detenido"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:626
+msgid "Level 2 not synchronized"
+msgstr "Nivel 2 no sincronizado"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:630
+msgid "Level 3 halted"
+msgstr "Nivel 3 detenido"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:634
+msgid "Level 3 reset"
+msgstr "Nivel 3 restablecido"
+
+# FUZZY em+
+# ¿ qué significa esto ? 
+#: stdio-common/../sysdeps/gnu/errlist.c:710
+msgid "Link has been severed"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:638
+msgid "Link number out of range"
+msgstr "Número de enlace fuera de rango"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:702
+msgid "Machine is not on the network"
+msgstr "La máquina no está en red"
+
 #: posix/regex.c:952
 msgid "Memory exhausted"
 msgstr "Memoria agotada"
 
+#. TRANS The size of a message sent on a socket was larger than the supported
+#. TRANS maximum size.
+#: stdio-common/../sysdeps/gnu/errlist.c:305
 msgid "Message too long"
 msgstr "Mensaje demasiado largo"
 
+# FUZZY em+
+#: stdio-common/../sysdeps/gnu/errlist.c:730
+msgid "Multihop attempted"
+msgstr ""
+
+#: stdio-common/../sysdeps/gnu/errlist.c:746
+msgid "Name not unique on network"
+msgstr "El nombre no es único en la red"
+
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:554
 msgid "Need authenticator"
 msgstr "Se necesita un autentificador"
 
+#. TRANS A network connection was reset because the remote host crashed.
+#: stdio-common/../sysdeps/gnu/errlist.c:377
 msgid "Network dropped connection on reset"
 msgstr "La conexión de red se perdió al reinicializar"
 
+#. TRANS A socket operation failed because the network was down.
+#: stdio-common/../sysdeps/gnu/errlist.c:366
 msgid "Network is down"
 msgstr "La red no está activa"
 
@@ -769,22 +1067,67 @@ msgstr "La red no está activa"
 #
 # Mira un mensaje que he puesto más arriba a ver si estás de acuerdo con
 # mi definición de "indio". sv
+#. TRANS A socket operation failed because the subnet containing the remote host
+#. TRANS was unreachable.
+#: stdio-common/../sysdeps/gnu/errlist.c:372
 msgid "Network is unreachable"
 msgstr "Es imposible conectar con la red"
 
+# FUZZY
+#: stdio-common/../sysdeps/gnu/errlist.c:646
+msgid "No CSI structure available"
+msgstr "No quedan estructuras CSI disponibles"
+
+# Ojo: ¿Solamente los archivos se pueden bloquear?
+# Propondría: "No quedan bloqueos disponibles" o algo así. sv
+#
+# Efectivamente puede que tengas razón , pero ...
+#  los dispositivos en UNIX son siempre archivos /dev :)  em
+#
+# Lo sé, lo sé, pero: Cuando bloqueas /dev/cua3, ¿dices que estás bloqueando un
+# archivo o que estás bloqueando el módem, que es un dispositivo? sv
+# Decir archivos podría traer equívocos, por más que formalmente todos
+# lo sean. sv
+#
+# ¿Y qué se te ocurre?, ¿poner bloquear archivos/dispositivos? em
+#
+# ( Pues mira, no estaría mal. sv )
+# A esto no me has contestado. sv
+#
+#  no quedan bloqueos me parece que no colabora a entender nada. em
+#  Miro la versión alemana.
+#  ??? ¿ locks ? ¿ cómo diablos ?
+#: stdio-common/../sysdeps/gnu/errlist.c:790
+msgid "No XENIX semaphores available"
+msgstr "No quedan semáforos XENIX disponibels"
+
 # Bueno, pero entonces pon "ninguna" en vez de "una", ¿no? sv
-#: resolv/herror.c:76
+#: resolv/herror.c:77
 msgid "No address associated with name"
 msgstr "No existe una dirección asociada al nombre"
 
+# FUZZY
+# anode o catode :) , qué diablos ? em+
+#: stdio-common/../sysdeps/gnu/errlist.c:666
+msgid "No anode"
+msgstr ""
+
 # Memoria intermedia me parece una traducción óptima.
 # Desgraciadamente no tengo ningún diccionario de Castellano
 # Enrique, creo que en español existe "búfer", míralo si puedes. sv
 #  ¿ Buffer ? memoria intermedia.
 # A ver qué dice Iñaky... sv
+#. 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:396
 msgid "No buffer space available"
 msgstr "No queda espacio para memoria intermedia"
 
+#. 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:77
 msgid "No child processes"
 msgstr "Ningún proceso hijo"
 
@@ -807,6 +1150,34 @@ msgstr "Ningún proceso hijo"
 #  no quedan bloqueos me parece que no colabora a entender nada. em
 #  Miro la versión alemana.
 #  ??? ¿ locks ? ¿ cómo diablos ?
+#: stdio-common/../sysdeps/gnu/errlist.c:690
+msgid "No data available"
+msgstr "No hay datos disponobles"
+
+# Ojo: ¿Solamente los archivos se pueden bloquear?
+# Propondría: "No quedan bloqueos disponibles" o algo así. sv
+#
+# Efectivamente puede que tengas razón , pero ...
+#  los dispositivos en UNIX son siempre archivos /dev :)  em
+#
+# Lo sé, lo sé, pero: Cuando bloqueas /dev/cua3, ¿dices que estás bloqueando un
+# archivo o que estás bloqueando el módem, que es un dispositivo? sv
+# Decir archivos podría traer equívocos, por más que formalmente todos
+# lo sean. sv
+#
+# ¿Y qué se te ocurre?, ¿poner bloquear archivos/dispositivos? em
+#
+# ( Pues mira, no estaría mal. sv )
+# A esto no me has contestado. sv
+#
+#  no quedan bloqueos me parece que no colabora a entender nada. em
+#  Miro la versión alemana.
+#  ??? ¿ locks ? ¿ cómo diablos ?
+#. 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:535
 msgid "No locks available"
 msgstr "No se pueden bloquear más archivos"
 
@@ -814,14 +1185,17 @@ msgstr "No se pueden bloquear más archivos"
 msgid "No match"
 msgstr "Ninguna coincidencia"
 
-#: posix/regex.c:5200
+#: stdio-common/../sysdeps/gnu/errlist.c:614
+msgid "No message of desired type"
+msgstr "Ningún mensaje del tipo deseado"
+
+#: posix/regex.c:5204
 msgid "No previous regular expression"
 msgstr "No existe una expresión regular anterior"
 
 # No me gusta "programa rpc". El rpc debería sobrar por el contexto. sv
 # A ver que te parece esto em+
 #: sunrpc/rpcinfo.c:515
-#, fuzzy
 msgid "No remote programs registered.\n"
 msgstr "No existe ningún procedimiento rpc registrado en la máquina remota.\n"
 
@@ -829,12 +1203,21 @@ msgstr "No existe ningún procedimiento rpc registrado en la máquina remota.\n"
 # Doppel verneinung , o doble negación , tambien
 # lo hacen en Bayern , bueno aquí es peor, porque
 # tienen la drei Fach Verneinung ( osea, tres veces ) em+
+#. TRANS The remote host for a requested network connection is not reachable.
+#: stdio-common/../sysdeps/gnu/errlist.c:462
 msgid "No route to host"
 msgstr "No existe ruta hasta el host"
 
+#. TRANS No space left on device; write operation on a file failed because the
+#. TRANS disk is full.
+#: stdio-common/../sysdeps/gnu/errlist.c:196
 msgid "No space left on device"
 msgstr "No queda más espacio en el dispositivo"
 
+#. 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:19
 msgid "No such file or directory"
 msgstr "No existe el archivo o el directorio"
 
@@ -845,46 +1228,118 @@ msgstr "No existe el archivo o el directorio"
 # proceso y te dice "no existe el proceso" se refiere al que
 # tú le has dicho y no a otro. sv
 #
+#. TRANS No process matches the specified process ID.
+#: stdio-common/../sysdeps/gnu/errlist.c:24
 msgid "No such process"
 msgstr "No existe tal proceso"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:786
+msgid "Not a XENIX named type file"
+msgstr "No es un fichero XENIX del tipo `named'"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:738
+msgid "Not a data message"
+msgstr "No es un mensaje de datos"
+
+#. TRANS A file that isn't a directory was specified when a directory is required.
+#: stdio-common/../sysdeps/gnu/errlist.c:140
 msgid "Not a directory"
 msgstr "No es un directorio"
 
 #  fuentes
 # Sugerencia: Argumento numérico. sv
-#
+# 
+#. 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:228
 msgid "Numerical argument out of domain"
 msgstr "Argumento numérico fuera del dominio de la función"
 
+#. 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:234
 msgid "Numerical result out of range"
 msgstr "Resultado numérico fuera de rango"
 
-#: time/zic.c:1835
+#. 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:502
+msgid "Object is remote"
+msgstr "El objeto es remoto"
+
+#: time/zic.c:1939
 msgid "Odd number of quotation marks"
 msgstr "Número impar de comillas"
 
 # Vale, pero muy poco más abajo has puesto "en curso", que me parece mejor. sv
 # Creo que prefiero dejar uno de cada. Se me ocurre si no cambiar el
 # de abajo también. em
+#. TRANS An operation is already in progress on an object that has non-blocking
+#. TRANS mode selected.
+#: stdio-common/../sysdeps/gnu/errlist.c:294
 msgid "Operation already in progress"
 msgstr "La operación ya se está llevando a cabo"
 
 # No te pases. Aquí se podría poner
 # "Operación no permitida" y no quedaría mal. sv
 # em+
+#. 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:12
 msgid "Operation not permitted"
 msgstr "Pperación no permitida"
 
+#. 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:338
 msgid "Operation not supported"
 msgstr "La operación no está soportada"
 
+#. 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:135
 msgid "Operation not supported by device"
 msgstr "La operación no está soportada por el dispositivo"
 
+#. 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:288
 msgid "Operation now in progress"
 msgstr "Operación en curso"
 
+#. 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:276
+msgid "Operation would block"
+msgstr "La operación se bloquearía"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:698
+msgid "Out of streams resources"
+msgstr "Alcanzado el límite de recursos de `streams'"
+
+# FUZZY 
+# aquí va a haber coña em+
+#: stdio-common/../sysdeps/gnu/errlist.c:706
+msgid "Package not installed"
+msgstr "El paquete no está instalado"
+
+#. TRANS Permission denied; the file permissions do not allow the attempted operation.
+#: stdio-common/../sysdeps/gnu/errlist.c:96
 msgid "Permission denied"
 msgstr "Permiso denegado"
 
@@ -908,36 +1363,70 @@ msgstr "Fin no esperado de la expresión regular"
 msgid "Profiling timer expired"
 msgstr "El tiempo de CPU expiró"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:642
+msgid "Protocol driver not attached"
+msgstr "Protocolo no disponible"
+
+#: stdio-common/../sysdeps/gnu/errlist.c:726
+msgid "Protocol error"
+msgstr "error de protocolo"
+
+#. TRANS The socket communications protocol family you requested is not supported.
+#: stdio-common/../sysdeps/gnu/errlist.c:343
 msgid "Protocol family not supported"
 msgstr "Familia de protocolos no soportada"
 
+#. 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:316
 msgid "Protocol not available"
 msgstr "Protocolo no disponible"
 
+#. 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:323
 msgid "Protocol not supported"
 msgstr "Protocolo no soportado"
 
+#. TRANS The socket type does not support the requested communications protocol.
+#: stdio-common/../sysdeps/gnu/errlist.c:310
 msgid "Protocol wrong type for socket"
 msgstr "Tipo de protocolo incorrecto para el `socket'"
 
 msgid "Quit"
 msgstr "Abandona"
 
+# FUZZY
+#: stdio-common/../sysdeps/gnu/errlist.c:734
+msgid "RFS specific error"
+msgstr "error específico de RFS"
+
 #  qué horror
 # Pues mira, quizá añadiendo dos puntos después del RPC mejoraría algo:
 # "RPC: procedimiento erróneo..." sv
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:527
 msgid "RPC bad procedure for program"
 msgstr "RPC: procedimiento erróneo para el programa"
 
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:517
 msgid "RPC program not available"
 msgstr "Programa RPC no disponible"
 
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:522
 msgid "RPC program version wrong"
 msgstr "Versión del programa RPC incorrecta"
 
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:507
 msgid "RPC struct is bad"
 msgstr "la estructura RPC es incorrecta"
 
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:512
 msgid "RPC version wrong"
 msgstr "versión de RPC incorrecta"
 
@@ -984,8 +1473,8 @@ msgstr "RPC: Fallo del mapeador de puertos"
 # No sé lo que es el RPC, pero igual es un disparate "procedimiento rpc"
 # En estos casos, preferiría no añadir nada y no "arriesgar". sv
 #
-# Está bien, por homogeneizar todo un poco lo quitaré. Pero que conste que
-# procedimiento rpc es perfectamente válido ( rcp: remote procedure call )
+# Está bien, por homogeneizar todo un poco lo quitaré. Pero que conste que 
+# procedimiento rpc es perfectamente válido ( rcp: remote procedure call ) 
 # em
 #
 # Incluyo una cita de César Ballardini a ver qué te parece:
@@ -1046,6 +1535,8 @@ msgstr "RPC: Host desconocido"
 msgid "RPC: Unknown protocol"
 msgstr "RPC: Protocolo desconocido"
 
+#. TRANS An attempt was made to modify something on a read-only file system.
+#: stdio-common/../sysdeps/gnu/errlist.c:206
 msgid "Read-only file system"
 msgstr "Sistema de archivos de sólo lectura"
 
@@ -1053,77 +1544,75 @@ msgstr "Sistema de archivos de sólo lectura"
 msgid "Regular expression too big"
 msgstr "La expresión regular es demasiado grande"
 
-msgid "Reserved error 82"
-msgstr "Error reservado 82"
-
-msgid "Reserved error 83"
-msgstr "Error reservado 83"
-
-msgid "Reserved error 84"
-msgstr "Error reservado 84"
-
-msgid "Reserved error 85"
-msgstr "Error reservado 85"
-
-msgid "Reserved error 86"
-msgstr "Error reservado 86"
-
-msgid "Reserved error 87"
-msgstr "Error reservado 87"
-
-msgid "Reserved error 88"
-msgstr "Error reservado 88"
-
-msgid "Reserved error 89"
-msgstr "Error reservado 89"
-
-msgid "Reserved error 90"
-msgstr "Error reservado 90"
-
-msgid "Reserved error 91"
-msgstr "Error reservado 91"
-
-msgid "Reserved error 92"
-msgstr "Error reservado 92"
-
-msgid "Reserved error 93"
-msgstr "Error reservado 93"
-
-msgid "Reserved error 94"
-msgstr "Error reservado 94"
-
-msgid "Reserved error 95"
-msgstr "Error reservado 95"
+#: stdio-common/../sysdeps/gnu/errlist.c:798
+msgid "Remote I/O error"
+msgstr "Error de entrada/salida en la máquina remota"
 
-msgid "Reserved error 96"
-msgstr "Error reservado 96"
+#: stdio-common/../sysdeps/gnu/errlist.c:754
+msgid "Remote address changed"
+msgstr "La dirección remota ha cambiado"
 
-msgid "Reserved error 97"
-msgstr "Error reservado 97"
+#: inet/ruserpass.c:162
+msgid "Remove password or make file unreadable by others."
+msgstr "El password remoto o archivo make no es leible por los demás"
 
-msgid "Reserved error 98"
-msgstr "Error reservado 98"
-
-msgid "Reserved error 99"
-msgstr "Error reservado 99"
+#: catgets/gencat.c:224 db/makedb.c:227 locale/programs/locale.c:257
+#: locale/programs/localedef.c:408
+msgid "Report bugs to <bug-glibc@prep.ai.mit.edu>.\n"
+msgstr "Informe de bugs a <bug-glibc@prep.ai.mit.edu>.\n"
 
 #  ??? resolvedor , determinador , investigador , solucionador  ?
 # Me suena que quizá exista resolvedor. Habría que enterarse. sv
-#: resolv/herror.c:72
+#: resolv/herror.c:73
 msgid "Resolver Error 0 (no error)"
 msgstr "Error del determinador de nombres 0 (ningún error)"
 
 #  ??? lo mismo que arriba
-#: resolv/herror.c:114
+#: resolv/herror.c:115
 msgid "Resolver internal error"
 msgstr "Error interno del determinador de nombres"
 
 # ¿ Sugerencias ? em
 # ¿Evitado? sv
 # Esperemos a ver la opinión de otro. em
+#. 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:85
 msgid "Resource deadlock avoided"
 msgstr "Esquivado el bloqueo para el recurso"
 
+#. 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 older Unix many 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:267
 msgid "Resource temporarily unavailable"
 msgstr "Recurso no disponible temporalmente"
 
@@ -1146,21 +1635,25 @@ msgstr "El servidor rechazó la credencial"
 msgid "Server rejected verifier"
 msgstr "El servidor rechazó el verificador"
 
-msgid "Socket is already connected"
-msgstr "El `socket' ya está activo"
-
-msgid "Socket is not connected"
-msgstr "El `socket' no está activo"
-
+#. TRANS A file that isn't a socket was specified when a socket is required.
+#: stdio-common/../sysdeps/gnu/errlist.c:299
 msgid "Socket operation on non-socket"
 msgstr "Operación de `socket' en un `no-socket'"
 
+#. TRANS The socket type is not supported.
+#: stdio-common/../sysdeps/gnu/errlist.c:328
 msgid "Socket type not supported"
 msgstr "Tipo de `socket' no soportado"
 
+#. TRANS A network connection was aborted locally.
+#: stdio-common/../sysdeps/gnu/errlist.c:382
 msgid "Software caused connection abort"
 msgstr "El programa provocó el fin de la conexión"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:718
+msgid "Srmount error"
+msgstr "Error de  `srmount'"
+
 # ?? sugerencias ?
 # Habrá que traducir el "handle" de alguna forma... sv
 # No veo porqué. em
@@ -1170,6 +1663,11 @@ msgstr "El programa provocó el fin de la conexión"
 #  en vez de file descriptor, debe de ser porque nos referimos a archivos
 #  compartidos con NFS. Al igual que no se bloquean, sino que se stalan :)
 #
+#. 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:494
 msgid "Stale NFS file handle"
 msgstr "Archivo NFS bloqueado"
 
@@ -1190,47 +1688,89 @@ msgstr "Parado (requiere entrada de terminal)"
 msgid "Stopped (tty output)"
 msgstr "Parado (requiere salida por terminal)"
 
+# FUZZY FUZZY 
+# Esto no hay quien lo traduzca ! em+
+#: stdio-common/../sysdeps/gnu/errlist.c:778
+msgid "Streams pipe error"
+msgstr "Error en de Tubería de streams"
+
+# FUZZY
+# O me cojo otras traducciones o ando perdido em+
+#: stdio-common/../sysdeps/gnu/errlist.c:782
+msgid "Structure needs cleaning"
+msgstr "La estructura necesita una limpieza"
+
 # "¡conseguido!" me recuerda a los "sketches" de Faemimo y Cansado...
 # me gustaría que hubiera otra palabra mejor. SV
 # Siempre me han gustado F&C ;-)
 # A mí también :-) sv
-#: posix/regex.c:940
+#: posix/regex.c:940 stdio-common/../sysdeps/gnu/errlist.c:7
 msgid "Success"
 msgstr "Conseguido"
 
 msgid "Terminated"
 msgstr "Terminado"
 
+#. 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:185
 msgid "Text file busy"
 msgstr "El archivo de texto está ocupado"
 
-# Probablemente la traducción de path sería algo así
-# como "ruta de búsqueda" sv
-# por cierto: ¿qué son los niveles de "remote"? sv
-# Niveles de profundidad ? , ver fuentes em ??
-msgid "Too many levels of remote in path"
-msgstr "Demasiados niveles en el `path'"
+#: stdio-common/../sysdeps/gnu/errlist.c:694
+msgid "Timer expired"
+msgstr "El temporizador llegó al final"
 
+#. 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:445
 msgid "Too many levels of symbolic links"
 msgstr "Demasiados niveles de enlaces simbólicos"
 
+#. 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:213
 msgid "Too many links"
 msgstr "Demasiados enlaces (links)"
 
+#. 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:163
 msgid "Too many open files"
 msgstr "Demasiados archivos abiertos"
 
+#. 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:170
 msgid "Too many open files in system"
 msgstr "Demasiados archivos abiertos en el sistema"
 
+#. 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:475
 msgid "Too many processes"
 msgstr "Demasiados procesos"
 
-# No se me ocurre traducir splice , bueno , es que no sé lo que es
-# Esperemos que alguien más lo vea. <ver>
-msgid "Too many references: can't splice"
-msgstr "Demasiadas llamadas indirectas:"
+# FUZZY
+#. TRANS ???
+#: stdio-common/../sysdeps/gnu/errlist.c:427
+msgid "Too many references: cannot splice"
+msgstr "Demasiadas referencias: no se pueden solapar"
 
+#. 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:481
 msgid "Too many users"
 msgstr "Demasiados usuarios"
 
@@ -1248,36 +1788,61 @@ msgstr "Barra invertida extra al final `\\'"
 # Tengo que mirar los fuentes, de esto y de muchas otras cosas
 #  todo esta en mi disco duro en mi ordenador roto. em
 #
+#. 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:584
 msgid "Translator died"
 msgstr "Murió el traductor"
 
+#. TRANS You tried to connect a socket that is already connected.
+#. TRANS @xref{Connecting}.
+#: stdio-common/../sysdeps/gnu/errlist.c:402
+msgid "Transport endpoint is already connected"
+msgstr "El otro extremo ya está conectado"
+
+#. 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:410
+msgid "Transport endpoint is not connected"
+msgstr "El otro extremo de la conexión no está conectado"
+
 # ## Siguiendo los estándares de Spanish-GNU, he cambiado Intente por Pruebe.
 # ## Y si me dices que no, tengo ya a casi todo el equipo convencido :-) sv
-#: catgets/gencat.c:201
+#: catgets/gencat.c:208 db/makedb.c:209 locale/programs/locale.c:241
+#: locale/programs/localedef.c:389
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Pruebe `%s --help' para más información.\n"
 
 # ## Sin embargo este no tiene nada que ver con el anterior. sv
-#: inet/rcmd.c:118
+#: inet/rcmd.c:121
 #, c-format
 msgid "Trying %s...\n"
 msgstr "Intentando %s...\n"
 
-#: ../sysdeps/mach/_strerror.c:58 string/../sysdeps/generic/_strerror.c:36
+#: inet/ruserpass.c:246
+#, c-format
+msgid "Unknown .netrc keyword %s"
+msgstr "palabra clave desconocida en .netrc %s"
+
+#: string/../sysdeps/generic/_strerror.c:36
+#: string/../sysdeps/mach/_strerror.c:58
 msgid "Unknown error "
 msgstr "Error desconocido "
 
 # En el libro de Infovía traducen host por "anfitrión"
-#: resolv/herror.c:73
+#: resolv/herror.c:74
 msgid "Unknown host"
 msgstr "Host desconocido"
 
-#: resolv/herror.c:117
+#: resolv/herror.c:118
 msgid "Unknown resolver error"
 msgstr "Error del determinador de nombres desconocido"
 
-#: resolv/herror.c:75
+#: resolv/herror.c:76
 msgid "Unknown server error"
 msgstr "Error del servidor desconocido"
 
@@ -1286,7 +1851,7 @@ msgstr "Error del servidor desconocido"
 msgid "Unknown signal %d"
 msgstr "Señal desconocida %d"
 
-#: misc/error.c:92
+#: misc/error.c:94
 msgid "Unknown system error"
 msgstr "Error del sistema desconocido"
 
@@ -1306,11 +1871,18 @@ msgstr "[ ó ^[ desemparejados"
 msgid "Unmatched \\{"
 msgstr "\\{ desemparejado"
 
+# ## FUZZY. Este te dejo que se lo quites tú. sv
+# :) em+
+#: posix/getconf.c:191
+#, c-format
+msgid "Unrecognized variable `%s'"
+msgstr "Variable desconocida `%s'"
+
 #  ?? sigo pensando en una traducción para condición
 msgid "Urgent I/O condition"
 msgstr "Condición urgente de entrada/saluda"
 
-#: catgets/gencat.c:204
+#: catgets/gencat.c:212
 #, c-format
 msgid ""
 "Usage: %s [OPTION]... -o OUTPUT-FILE [INPUT-FILE]...\n"
@@ -1326,11 +1898,9 @@ msgid ""
 msgstr ""
 "Modo de empleo: %s [OPCIÓN]... -o ARCHIVO-SALIDA [ARCHIVO-ENTRADA]...\n"
 "                %s [OPCIÓN]... [ARCHIVO-SALIDA [ARCHIVO-ENTRADA]...]\n"
-"Los argumentos obligatorios para las opciones largas son también "
-"obligatorios\n"
+"Los argumentos obligatorios para las opciones largas son también obligatorios\n"
 "para las opciones cortas.\n"
-"   -H, --header         Crea un archivo de cabecera C con las definiciones "
-"de\n"
+"   -H, --header         Crea un archivo de cabecera C con las definiciones de\n"
 "                        los símbolos\n"
 "   -h, --help           Muestra esta ayuda y finaliza\n"
 "       --new            no usa el catálogo existente, crea un nuevo archivo\n"
@@ -1339,8 +1909,101 @@ msgstr ""
 "   -V, --version        informa de la versión y finaliza\n"
 "Si ARCHIVO-ENTRADA es -, la entrada se lee de la entrada estándar.\n"
 "Si ARCHIVO-SALIDA es - , el resultado se escribe en la salida estándar.\n"
+"Informar de los bugs a <bug-glibc@prep.ai.mit.edu>\n"
+
+#: db/makedb.c:213
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... INPUT-FILE OUTPUT-FILE\n"
+"       %s [OPTION]... -o OUTPUT-FILE INPUT-FILE\n"
+"       %s [OPTION]... -u INPUT-FILE\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"  -f, --fold-case     convert key to lower case\n"
+"  -h, --help          display this help and exit\n"
+"  -o, --output=NAME   write output to file NAME\n"
+"      --quiet         don't print messages while building database\n"
+"  -u, --undo          print content of database file, one entry a line\n"
+"  -V, --version       output version information and exit\n"
+"If INPUT-FILE is -, input is read from standard input.\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]...  ARCHIVO-ENTRADA ARCHIVO-SALIDA\n"
+"                %s [OPCIÓN]...  -o ARCHIVO-SALIDA ARCHIVO-ENTRADA \n"
+"                %s [OPCIÓN]...  -u ARCHIVO-ENTRADA\n"
+"Los argumentos obligatorios para las opciones largas son también obligatorios\n"
+"para las opciones cortas.\n"
+"   -f, --fold-case      convierte las claves a minúsculas\n"
+"   -h, --help           Muestra esta ayuda y finaliza\n"
+"   -o, --output=ARCHIVO escribe el resultado en el archivo ARCHIVO\n"
+"       --quiet          no muestra mensajes al construir la base de datos\n"
+"   -u, --undo           muestra el contenido del fichero de datos, una\n"
+"                        entrada por línea\n"
+"   -V, --version        informa de la versión y finaliza\n"
+"Si ARCHIVO-ENTRADA es -, la entrada se lee de la entrada estándar.\n"
 
-#: posix/getconf.c:81
+#: locale/programs/localedef.c:393
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... name\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"  -c, --force               create output even if warning messages were "
+"issued\n"
+"  -h, --help                display this help and exit\n"
+"  -f, --charmap=FILE        symbolic character names defined in FILE\n"
+"  -i, --inputfile=FILE      source definitions are found in FILE\n"
+"  -u, --code-set-name=NAME  specify code set for mapping ISO 10646 elements\n"
+"  -v, --verbose             print more messages\n"
+"  -V, --version             output version information and exit\n"
+"      --posix               be strictly POSIX conform\n"
+"\n"
+"System's directory for character maps: %s\n"
+"                       locale files  : %s\n"
+msgstr ""
+"Modo de empleo: %s [OPCION]... nombre\n"
+"Los argumentos para las opciones largas son tambien obligatorios para las\n"
+"opciones cortas.\n"
+"  -c, --force                crea el resultado incluso si existieron mensajes\n"
+"                             de aviso\n"
+"  -h, --help                 muestra esta ayuda y finaliza\n"
+"  -f, --charmap=ARCHIVO      los nombres símbólicos de caracteres se encuentran\n"
+"                             en ARCHIVO\n"
+"  -i, --inputfile=ARCHIVO    las definiciones fuente  se encuetran en ARCHIVO\n"
+"  -u, --code-set-name=NOMBRE especifica el conjunto de códigos para mapear\n"
+"                             los elementos ISO 10646\n"
+"  -v, --verbose              incrementa el número de mensajes mostrados\n"
+"  -V, --version              informa de la versión y finaliza\n"
+"      --posix                atiende estrictamente las especificaciones POSIX\n"
+"El directorio del sistema para los mapas de caracteres es: %s\n"
+"                               los archivos de locales es: %s\n"
+"    \n"
+
+#: locale/programs/locale.c:245
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... name\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"  -h, --help            display this help and exit\n"
+"  -V, --version         output version information and exit\n"
+"\n"
+"  -a, --all-locales     write names of available locales\n"
+"  -m, --charmaps        write names of available charmaps\n"
+"\n"
+"  -c, --category-name   write names of selected categories\n"
+"  -k, --keyword-name    write names of selected keywords\n"
+msgstr ""
+"Modo de empleo: %s [OPCION]... nombre\n"
+"Los argumentos para las opciones largas son tambien obligatorios para las\n"
+"opciones cortas.\n"
+"  -h, --help            muestra esta ayuda y finaliza\n"
+"  -V, --version         informa de la versión y finaliza\n"
+"\n"
+"  -a, --all-locales     muestra los nombres de todos los locales disponibles\n"
+"  -m, --charmaps        muestra los nombres de todos los mapas de caracteres\n"
+"                        disponibles\n"
+"\n"
+"  -c, --category-name   muestra los nombres de las categorías seleccionadas\n"
+"  -k, --keyword-name    muestra los nombres de los palabras clave seleccionadas\n"
+
+#: posix/getconf.c:138
 #, c-format
 msgid "Usage: %s variable_name [pathname]\n"
 msgstr "Modo de empleo: %s nombre_de_variable [ruta]\n"
@@ -1349,11 +2012,11 @@ msgstr "Modo de empleo: %s nombre_de_variable [ruta]\n"
 # Sugerencia: numprogr -> numprog. sv
 # Sugerencia: numpuerto -> númpuerto. sv
 # Sugerencia: numprog -> númprog. sv
-# OK, lo he cambiado en todo
+# OK, lo he cambiado en todo 
 #: sunrpc/rpcinfo.c:609
-msgid "Usage: rpcinfo [ -n portnum ] -u host númprog [ versnum ]\n"
+msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
 msgstr ""
-"Modo de empleo: rpcinfo [ -n numpuerto ] -u host progrnum [ numversión ]\n"
+"Modo de empleo: rpcinfo [ -n númpuerto ] -u host progrnúm [ numversión ]\n"
 
 # ## ¿"user defined" no sería "definida por el usuario"? sv
 # ## Si , puede que sea mejor, lo cambio em
@@ -1363,17 +2026,27 @@ msgstr "Señal definida por el usuario 1"
 msgid "User defined signal 2"
 msgstr "Señal definida por el usuario 2"
 
+#: stdio-common/../sysdeps/gnu/errlist.c:742
+msgid "Value too large for defined data type"
+msgstr "Valor demasiado grande para el tipo de datos definido"
+
 msgid "Virtual timer expired"
 msgstr "El temporizador virtual llegó al final"
 
 # # Otra opción, resultado incongruente al ejecutar la orden em
-#: time/zic.c:1740
+#: time/zic.c:1844
 msgid "Wild result from command execution"
 msgstr "Resultado salvaje en la ejecución de la orden"
 
 msgid "Window changed"
 msgstr "Ventana cambiada"
 
+#: catgets/gencat.c:174 db/makedb.c:125 locale/programs/locale.c:192
+#: locale/programs/localedef.c:182
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrito por %s.\n"
+
 # ?? Ni idea de como traducir esto
 # "Ciertamente expiraste durante este tiempo" em
 # this time es esta *vez* Pero como no acabo de verle el sentido a la frase
@@ -1389,101 +2062,259 @@ msgstr "Ventana cambiada"
 # Sugerencia: "Ahora sí que te lo has cargado".
 # (Preguntar a nuestros amigos americanos si se entiende).
 # (No sé pero me suena que "blew" no es muy fino). sv
+#. TRANS You did @strong{what}?
+#: stdio-common/../sysdeps/gnu/errlist.c:596
 msgid "You really blew it this time"
 msgstr "Esta vez si que lo has roto"
 
 # VER
-#: time/zic.c:1013
+#: time/zic.c:1050
 msgid "Zone continuation line end time is not after end time of previous line"
 msgstr ""
 "La línea de continuación de la zona no esta después del tiempo de final\n"
 "de la línea anterior"
 
-# A los "arrays" les digo matrices. Igual en América se dice de otra forma.
-# Creo que habría que consultarlo. SV.
-# Echando mano de los fuentes, está claro que se refiere a un array de
-# caracteres, ¿ Cadena de caracteres ? , si claro. EM
-# Pues no, puede ser ambas cosas, o un array de caracteres, o una cadena.
-# ¿por qué te comes la palabra "declaración"?
-# ¿Qué tal "esperada una declaración de `array'"? sv
-# Una declaración de array es> "char *a" por ejemplo. Lo que espera
-#   es algo así>"pepe" , escrito en un archivo de texto, con toda
-#   seguridad ( consulté los fuentes ) em
-# Creí que una declaración y una constante eran cosas distintas. sv
-# ¿Está mal el original inglés? sv
-#  Desde luego que esta mal, o poco claro al menos. Estoy convencido
-#  de que la traducción mejora una vez más al original. em
-#: sunrpc/rpc_parse.c:326
-msgid "array declaration expected"
-msgstr "esperado un array"
+#: locale/programs/charmap.c:397 locale/programs/locfile.c:341
+#, c-format
+msgid "`%1$s' definition does not end with `END %1$s'"
+msgstr "La definición `%1$s' no termina con `END %1$s'"
+
+#: locale/programs/ld-monetary.c:358 locale/programs/ld-numeric.c:190
+#, c-format
+msgid "`-1' must be last entry in `%s' field in `%s' category"
+msgstr ""
+"`-1' tiene que ser la última especidicación en el campo `%s' de la "
+"categoría\n"
+"`%s'"
+
+# FUZZY
+# entries ? debe de haber algo para eso
+# lo traducí antes como especificación , pero ... em+
+#: locale/programs/ld-collate.c:1651
+msgid "`...' must only be used in `...' and `UNDEFINED' entries"
+msgstr "`...' debe de ser usado únicamente en las entradas `...' y `UNDEFINED'"
+
+#: locale/programs/locfile.c:538
+msgid "`from' expected after first argument to `collating-element'"
+msgstr ""
+"Se esperaba `from' después del primer argumento para `collating-element'"
+
+#: locale/programs/ld-collate.c:1108
+msgid ""
+"`from' string in collation element declaration contains unknown character"
+msgstr ""
+"La cadena de caracteres `from' en la declaración de elemento de unión "
+"contiene\n"
+"un caracter desconocico"
+
+#: locale/programs/charmap.c:267
+#, c-format
+msgid "argument to <%s> must be a single character"
+msgstr "el argumento para <%s> debe de ser un único carácter"
+
+#: locale/programs/locfile.c:215
+#, c-format
+msgid "argument to `%s' must be a single character"
+msgstr "el argumento para `%s' debe de ser un único carácter"
 
 #  ??? mariscalización ?
-#: sunrpc/auth_unix.c:314
+#: sunrpc/auth_unix.c:322
 msgid "auth_none.c - Fatal marshalling problem"
 msgstr "auth_none.c - Problema muy grave con autorización marshall"
 
-#: inet/rcmd.c:327
+#: inet/rcmd.c:330
 msgid "bad .rhosts owner"
 msgstr "El propietario del archivo .rhosts no es válido"
 
-#: time/zic.c:1136
+#: locale/programs/charmap.c:212 locale/programs/locfile.c:209
+msgid "bad argument"
+msgstr "Argumento no válido"
+
+#: time/zic.c:1172
 msgid "blank FROM field on Link line"
 msgstr "Campo FROM vacío en la línea `Link'"
 
-#: time/zic.c:1140
+#: time/zic.c:1176
 msgid "blank TO field on Link line"
 msgstr "Campo TO vacío en la línea `Link'"
 
-#: malloc/mcheck.c:174
+#: malloc/mcheck.c:189
 msgid "block freed twice"
 msgstr "bloque liberado dos veces"
 
 # Revisar lo de bogus. creo que es eso.
-#: malloc/mcheck.c:177
+#: malloc/mcheck.c:192
 msgid "bogus mcheck_status, library is buggy"
 msgstr "Valor de mcheck_status incorrecto, la biblioteca tiene un bug"
 
-#: sunrpc/pmap_rmt.c:177
+#: sunrpc/pmap_rmt.c:179
 msgid "broadcast: ioctl (get interface configuration)"
 msgstr "broadcast: iotcl (lee la configuración del interfaz)"
 
 #  Mejorando lo presente ( idea de Jochen )
-#: sunrpc/pmap_rmt.c:184
+#: sunrpc/pmap_rmt.c:186
 msgid "broadcast: ioctl (get interface flags)"
 msgstr "broadcast: iotcl (lee las propiedades del interfaz)"
 
-#: sunrpc/svc_udp.c:398
+#: sunrpc/svc_udp.c:402
 msgid "cache_set: victim not found"
 msgstr "cache_set: no se encontró el objetivo"
 
+# FUZZY
+#: time/zic.c:1685
+msgid "can't determine time zone abbrevation to use just after until time"
+msgstr ""
+"No se puede determinar la abreviación de zona horaria que se usará justo\n"
+"despues "
+
 #: sunrpc/svc_simple.c:64
 #, c-format
 msgid "can't reassign procedure number %d\n"
 msgstr "no se puede reasignar el procedimiento número %d\n"
 
-#: catgets/gencat.c:248
+#: locale/programs/localedef.c:287
+#, c-format
+msgid "cannot `stat' locale file `%s'"
+msgstr "la llamada a `stat' falló en el archivo de locales `%s'"
+
+#: locale/programs/ld-collate.c:1313
+#, c-format
+msgid "cannot insert collation element `%.*s'"
+msgstr "no se puede insertar el elemento de unión`%.*s' "
+
+#: locale/programs/ld-collate.c:1492 locale/programs/ld-collate.c:1497
+msgid "cannot insert into result table"
+msgstr "no se puede insertar el la tabla de resultados"
+
+# FUZZY
+#: locale/programs/ld-collate.c:1165 locale/programs/ld-collate.c:1207
+#, c-format
+msgid "cannot insert new collating symbol definition: %s"
+msgstr "no se puede isertar la nueva definición para el símbolo de unión: %s"
+
+#: db/makedb.c:161
+#, c-format
+msgid "cannot open database file `%s': %s"
+msgstr "no se puede abrir el fichero de datos `%s': %s"
+
+#: catgets/gencat.c:259 db/makedb.c:180
 #, c-format
 msgid "cannot open input file `%s'"
 msgstr "no se puede abrir el archivo de entrada `%s'"
 
-#: catgets/gencat.c:753 gencat.c:794
+#: locale/programs/localedef.c:221
+#, c-format
+msgid "cannot open locale definition file `%s'"
+msgstr "no se puede abrir el archivo de definición de locales `%s'"
+
+#: catgets/gencat.c:764 catgets/gencat.c:805 db/makedb.c:189
 #, c-format
 msgid "cannot open output file `%s'"
 msgstr "no se puede abrir el archivo de salida `%s'"
 
+#: locale/programs/locfile.c:986
+#, c-format
+msgid "cannot open output file `%s' for category `%s'"
+msgstr "no se puede abrir el archivo de salida `%s' para la categoría `%s'"
+
+# FUZZY
+#: locale/programs/ld-collate.c:1359
+msgid "cannot process order specification"
+msgstr "no se pueden procesar las especificaciones de orden"
+
+#: locale/programs/locale.c:303
+#, c-format
+msgid "cannot read character map directory `%s'"
+msgstr "no se puede leer el directorio de mapas de caracters `%s'"
+
+#: locale/programs/locale.c:278
+#, c-format
+msgid "cannot read locale directory `%s'"
+msgstr "No se puede leer directorio de locales %s"
+
+#: locale/programs/localedef.c:309
+#, c-format
+msgid "cannot read locale file `%s'"
+msgstr "no se puede leer el archivo de locales `%s'"
+
+#: locale/programs/localedef.c:334
+#, c-format
+msgid "cannot write output files to `%s'"
+msgstr "no se puede escribir en el archivo de salida `%s'"
+
+#: locale/programs/localedef.c:377
+msgid "category data requested more than once: should not happen"
+msgstr "categoría de datos reclamada más de una vez, no debería de ocurrir"
+
+#: locale/programs/ld-ctype.c:265
+#, c-format
+msgid "character %s'%s' in class `%s' must be in class `%s'"
+msgstr "el carácter %s'%s' en la clase `%s' debe de estar en la clase `%s'"
+
+#: locale/programs/ld-ctype.c:289
+#, c-format
+msgid "character %s'%s' in class `%s' must not be in class `%s'"
+msgstr "el carácter %s'%s' en la clase `%s' no debe de estar en la clase `%s"
+
+#: locale/programs/ld-ctype.c:310
+msgid "character <SP> not defined in character map"
+msgstr "el carácter <SP> no está definido en el mapa de caracteres'"
+
+#: locale/programs/ld-ctype.c:1141
+#, c-format
+msgid "character `%c' not defined while needed as default value"
+msgstr ""
+"el carácter `%c' no está definido cuando se necesitó como valor por defecto"
+
+#: locale/programs/ld-ctype.c:939 locale/programs/ld-ctype.c:1002
+#: locale/programs/ld-ctype.c:1010 locale/programs/ld-ctype.c:1018
+#: locale/programs/ld-ctype.c:1026 locale/programs/ld-ctype.c:1034
+#: locale/programs/ld-ctype.c:1042 locale/programs/ld-ctype.c:1068
+#: locale/programs/ld-ctype.c:1076 locale/programs/ld-ctype.c:1114
+#: locale/programs/ld-ctype.c:1152
+#, c-format
+msgid "character `%s' not defined while needed as default value"
+msgstr ""
+"el carácter `%s' no está definido cuando se necesitó como valor por defecto"
+
+#: locale/programs/ld-ctype.c:801
+#, c-format
+msgid "character class `%s' already defined"
+msgstr "la clase de carácter  `%s' ya fue definida"
+
+#: locale/programs/ld-ctype.c:833
+#, c-format
+msgid "character map `%s' already defined"
+msgstr "mapa de caracteres `%s' ya está definido"
+
+#: locale/programs/charmap.c:76
+#, c-format
+msgid "character map file `%s' not found"
+msgstr "el mapa de caracteres `%s' no se encontró"
+
 #: sunrpc/clnt_raw.c:106
 msgid "clnt_raw.c - Fatal header serialization error."
 msgstr "clnt_raw.c - Error grave en la secuencia de cabecera"
 
-#: inet/rcmd.c:112
+#: locale/programs/ld-collate.c:1328
+#, c-format
+msgid "collation element `%.*s' appears more than once: ignore line"
+msgstr "el elemento de unión `%.*s' aparece más de una vez: pasando por alto la línea"
+
+#: locale/programs/ld-collate.c:1346
+msgid "collation symbol `.*s' appears more than once: ignore line"
+msgstr "símbolo de unión `.*s' aparece más de una vez: descartando la línea"
+
+#: locale/programs/locfile.c:522
+#, c-format
+msgid "collation symbol expected after `%s'"
+msgstr "símbolo de unión esperado después de `%s'"
+
+#: inet/rcmd.c:114
 #, c-format
 msgid "connect to address %s: "
 msgstr "conexión a la dirección %s: "
 
-#: sunrpc/rpc_scan.c:109
-msgid "constant or identifier expected"
-msgstr "esperada una constante o un identificador"
-
 #: sunrpc/svc_simple.c:70
 msgid "couldn't create an rpc server\n"
 msgstr "no se pudo crear un servidor rpc\n"
@@ -1491,12 +2322,12 @@ msgstr "no se pudo crear un servidor rpc\n"
 # ## Antes decía: no se pudo crear un servidor rpc
 # ## Lo he cambiado por lo que ves. sv
 # ## Borro el "fuzzy". sv
-#: sunrpc/portmap.c:122
+#: sunrpc/portmap.c:121
 msgid "couldn't do tcp_create\n"
 msgstr "no se ha podido ejecutar tcp_create\n"
 
 # ## Borro el fuzzy. sv
-#: sunrpc/portmap.c:100
+#: sunrpc/portmap.c:99
 msgid "couldn't do udp_create\n"
 msgstr "no se pudo ejecutar udp_create\n"
 
@@ -1505,30 +2336,71 @@ msgstr "no se pudo ejecutar udp_create\n"
 msgid "couldn't register prog %d vers %d\n"
 msgstr "no se pudo registrar el programa %d versión %d\n"
 
-#: sunrpc/rpc_parse.c:77
-msgid "definition keyword expected"
-msgstr "esperada una palabra clave"
+#: locale/programs/charmap.c:86
+#, c-format
+msgid "default character map file `%s' not found"
+msgstr " no se encontró el archivo de mapa de caracteres por defecto `%s'"
+
+#: locale/programs/ld-time.c:154
+#, c-format
+msgid ""
+"direction flag in string %d in `era' field in category `%s' is not '+' nor "
+"'-'"
+msgstr ""
+"el indicador de dirección en la cadena %d en el campo `era' de la categoria\n"
+"`%s' no es '+' o  '-'"
+
+#: locale/programs/ld-time.c:164
+#, c-format
+msgid ""
+"direction flag in string %d in `era' field in category `%s' is not a single "
+"character"
+msgstr ""
+"el indicador de dirección en la cadena %d en el campo `era' de la categoria\n"
+"`%s' no es un único carácter"
+
+#: locale/programs/charset.c:87 locale/programs/charset.c:132
+#, c-format
+msgid "duplicate character name `%s'"
+msgstr "nombre de carácter duplicado `%s'"
+
+#: locale/programs/ld-collate.c:1140
+msgid "duplicate collating element definition"
+msgstr "definición duplicada del elemento de unión"
 
 # ¿No será "definición de conjunto duplicada"? sv
 # Esto no lo has visto todavía. sv
-#: catgets/gencat.c:367
+#: locale/programs/ld-collate.c:1286
+#, c-format
+msgid "duplicate definition for character `%.*s'"
+msgstr "definición duplicada del carácter `%.*s"
+
+#: db/makedb.c:310
+msgid "duplicate key"
+msgstr "tecla duplicada"
+
+#: catgets/gencat.c:378
 msgid "duplicate set definition"
-msgstr "definición `set' duplicada"
+msgstr "definición de conjunto duplicada"
 
-#: time/zic.c:928
+#: time/zic.c:965
 #, c-format
 msgid "duplicate zone name %s (file \"%s\", line %d)"
 msgstr "nombre de zona %s duplicado (archivo \"%s\", línea %d)"
 
-#: catgets/gencat.c:530
+#: catgets/gencat.c:541
 msgid "duplicated message identifier"
 msgstr "identificador de mensaje duplicado"
 
-#: catgets/gencat.c:503
+#: catgets/gencat.c:514
 msgid "duplicated message number"
 msgstr "número de mensaje duplicado"
 
-#: sunrpc/svc_udp.c:344
+#: locale/programs/ld-collate.c:1695
+msgid "empty weight name: line ignored"
+msgstr "nombre de peso vacio: la línea se pasa por alto"
+
+#: sunrpc/svc_udp.c:348
 msgid "enablecache: cache already enabled"
 msgstr "enablecache: el caché ya estaba activado"
 
@@ -1536,131 +2408,262 @@ msgstr "enablecache: el caché ya estaba activado"
 # Parece ser indistinto, así que unas veces puede ser "la" y otras "el".
 # dependiendo del caso (lo que mejor suene).
 #
-#: sunrpc/svc_udp.c:349
+#: sunrpc/svc_udp.c:353
 msgid "enablecache: could not allocate cache"
 msgstr "enablecache: no se pudo crear espacio para el caché"
 
-#: sunrpc/svc_udp.c:356
+#: sunrpc/svc_udp.c:360
 msgid "enablecache: could not allocate cache data"
 msgstr "enablecache: no se pudo crear espacio para los datos del caché"
 
-#: sunrpc/svc_udp.c:362
+#: sunrpc/svc_udp.c:366
 msgid "enablecache: could not allocate cache fifo"
 msgstr "enablecache: no se pudo crear espacio para la pila del caché"
 
-# Sugerencia: se esperaba `%s'. sv
-#: sunrpc/rpc_util.c:300
+#: locale/programs/ld-collate.c:1418
+msgid "end point of ellipsis range is bigger then start"
+msgstr ""
+"el punto de final para el rango de la elipse es mayor que el de comienzo"
+
+#: locale/programs/ld-collate.c:1148
+msgid "error while inserting collation element into hash table"
+msgstr "error cuando se insertaba el elemento de unión en la tabla enlazada"
+
+#: locale/programs/ld-collate.c:1160
+msgid "error while inserting to hash table"
+msgstr "error al insertar en la tabla enlazada"
+
+#: locale/programs/locfile.c:465
+msgid "expect string argument for `copy'"
+msgstr "se espera un argumento de cadena de caracteres para `copy'"
+
+# Sugerencia: La línea de continuación *esperada*. sv
+# OK em+
+#: time/zic.c:856
+msgid "expected continuation line not found"
+msgstr "la línea de continuación esperada no se encuentra"
+
+#: locale/programs/locfile.c:1010
 #, c-format
-msgid "expected '%s'"
-msgstr "`%s' esperado"
+msgid "failure while writing data for category `%s'"
+msgstr "error al escribir los datos para la categoría `%s'"
 
-# Sugerencia: Lo mismo de antes. sv
-#: sunrpc/rpc_util.c:312
+#: locale/programs/ld-monetary.c:154 locale/programs/ld-numeric.c:95
 #, c-format
-msgid "expected '%s' or '%s'"
-msgstr "`%s' o `%s' esperado"
+msgid "field `%s' in category `%s' not defined"
+msgstr "el campo `%s' en la categoria `%s' no está definido"
 
-# Lo mismo. sv
-#: sunrpc/rpc_util.c:325
+#: locale/programs/ld-messages.c:81 locale/programs/ld-messages.c:102
 #, c-format
-msgid "expected '%s', '%s' or '%s'"
-msgstr "`%s', `%s' o `%s' esperado"
+msgid "field `%s' in category `%s' undefined"
+msgstr "el campo `%s' el la categoría `%s' no se ha definido"
 
-# Sugerencia: La línea de continuación *esperada*. sv
-#: time/zic.c:819
-msgid "expected continuation line not found"
-msgstr "La línea de continuación no se encuentra"
+#: locale/programs/locfile.c:547
+msgid "from-value of `collating-element' must be a string"
+msgstr ""
+"el valor `from-value' del elemento de unión ha de ser una cadena de "
+"caracteres"
+
+#: locale/programs/linereader.c:328
+msgid "garbage at end of character code specification"
+msgstr ""
+"inconsistencias al final de la línea de especificación de código de "
+"caracteres"
+
+#: locale/programs/linereader.c:214
+msgid "garbage at end of digit"
+msgstr "inconsistencias al final del dígito"
+
+#: locale/programs/ld-time.c:183
+#, c-format
+msgid ""
+"garbage at end of offset value in string %d in `era' field in category `%s'"
+msgstr ""
+"incongruencias al final del valor de desplazamiento en la cadena %d en el\n"
+"campo `era' de la categoria `%s'"
 
-#: sunrpc/rpc_parse.c:384
-msgid "expected type specifier"
-msgstr "esperado especificador de tipo"
+#: locale/programs/ld-time.c:238
+#, c-format
+msgid ""
+"garbage at end of starting date in string %d in `era' field in category `%s'"
+msgstr ""
+"incongruencias al final de la fecha de comienzo en la cadena %d en el\n"
+"campo `era' de la categoria `%s'"
+
+#: locale/programs/ld-time.c:310
+#, c-format
+msgid ""
+"garbage at end of stopping date in string %d in `era' field in category `%s'"
+msgstr ""
+"incongruencias al final de la fecha de parada en la cadena %d en el<\n"
+"campo `era' de la categoria `%s'"
 
 #: sunrpc/get_myaddr.c:73
 msgid "get_myaddress: ioctl (get interface configuration)"
 msgstr "get_myaddress: ioctl (lee la configuración del interfaz)"
 
-#: time/zic.c:1113
+#: time/zic.c:1149
 msgid "illegal CORRECTION field on Leap line"
 msgstr "El campo CORRECTION en la línea de año bisiesto no es válido"
 
-#: time/zic.c:1117
+#: time/zic.c:1153
 msgid "illegal Rolling/Stationary field on Leap line"
 msgstr "Campo Rolling/Stationary no válido en la línea de año bisiesto"
 
-#: sunrpc/rpc_scan.c:281
-msgid "illegal character in file: "
+#: locale/programs/ld-collate.c:1766
+msgid "illegal character constant in string"
 msgstr "carácter no válido en el archivo: "
 
-#: sunrpc/rpc_parse.c:146
-msgid "illegal result type"
-msgstr "tipo resultante no válido"
+#: locale/programs/ld-collate.c:1115
+msgid "illegal collation element"
+msgstr "elemento de unión no válido"
 
-# ## Borro el fuzzy. sv
-#: catgets/gencat.c:340 gencat.c:417
+#: locale/programs/charmap.c:196
+msgid "illegal definition"
+msgstr "definición no válida"
+
+#: locale/programs/charmap.c:349
+msgid "illegal encoding given"
+msgstr "especificada una codificación no válida"
+
+#: locale/programs/linereader.c:546
+msgid "illegal escape sequence at end of string"
+msgstr "secuencia de escape no permitida al final de la cadena de caracteres"
+
+#: locale/programs/charset.c:101
+msgid "illegal names for character range"
+msgstr "nombres no permitidos para el rango de caracteres"
+
+#: locale/programs/ld-time.c:176
+#, c-format
+msgid "illegal number for offset in string %d in `era' field in category `%s'"
+msgstr ""
+"número de desplazamiento no válido en la cadena %d en el campo `era' de la\n"
+"categoria `%s'"
+
+#: catgets/gencat.c:351 catgets/gencat.c:428
 msgid "illegal set number"
 msgstr "número de conjunto inválido"
 
-#: time/zic.c:777
+#: locale/programs/ld-time.c:230
+#, c-format
+msgid "illegal starting date in string %d in `era' field in category `%s'"
+msgstr ""
+"fecha de comienzo no válida en la cadena %d en el campo `era' de la\n"
+"categoria `%s'"
+
+#: locale/programs/ld-time.c:302
+#, c-format
+msgid "illegal stopping date in string %d in `era' field in category `%s'"
+msgstr ""
+"fecha de parada no válida en la cadena %d en el campo `era' de la\n"
+"categoria `%s'"
+
+#: locale/programs/ld-ctype.c:807
+#, c-format
+msgid "implementation limit: no more than %d character classes allowed"
+msgstr ""
+"límite de la implementación: no se permiten más de %d clases de caracteres "
+
+#: locale/programs/ld-ctype.c:839
+#, c-format
+msgid "implementation limit: no more than %d character maps allowed"
+msgstr ""
+"límite de la implementación: no se permiten más de %d mapas de caracteres"
+
+#: db/makedb.c:163
+msgid "incorrectly formatted file"
+msgstr "archivo formateado incorrectamente"
+
+#: time/zic.c:814
 msgid "input line of unknown type"
 msgstr "línea de entrada de tipo desconocido"
 
-#: time/zic.c:984
+#: time/zic.c:1733
+msgid "internal error - addtype called with bad isdst"
+msgstr "error interno - se llamó a 'addtype' con 'isdst' erróneo"
+
+#: time/zic.c:1741
+msgid "internal error - addtype called with bad ttisgmt"
+msgstr "error interno - se llamó a 'addtype' con 'ttisgmt' erróneo"
+
+#: time/zic.c:1737
+msgid "internal error - addtype called with bad ttisstd"
+msgstr "error interno - se llamó a 'addtype' con 'ttisstd' erróneo"
+
+#: locale/programs/ld-ctype.c:301
+#, c-format
+msgid "internal error in %s, line %u"
+msgstr "error interno en %s, línea %u"
+
+#: time/zic.c:1021
 msgid "invalid GMT offset"
 msgstr "desplazamiento GMT no válido"
 
 # ¿No será "abreviatura"? sv
 # ¿? A esto no me has contestado. sv
-#: time/zic.c:987
+#: time/zic.c:1024
 msgid "invalid abbreviation format"
 msgstr "formato de abreviación incorrecto"
 
-#: time/zic.c:1078 zic.c:1277 zic.c:1291
-#, fuzzy
+#: time/zic.c:1114 time/zic.c:1313 time/zic.c:1327
 msgid "invalid day of month"
 msgstr "día del mes no válido"
 
-#: time/zic.c:1236
-#, fuzzy
+#: time/zic.c:1272
 msgid "invalid ending year"
 msgstr "año de final no válido"
 
-#: time/zic.c:1050
-#, fuzzy
+#: time/zic.c:1086
 msgid "invalid leaping year"
 msgstr "año bisiesto inválido"
 
-#: time/zic.c:1065 zic.c:1168
+#: time/zic.c:1101 time/zic.c:1204
 msgid "invalid month name"
 msgstr "nombre de mes incorrecto"
 
-#: time/zic.c:883
-#, fuzzy
+#: time/zic.c:920
 msgid "invalid saved time"
 msgstr "la hora almacenada no es válida"
 
-#: time/zic.c:1216
-#, fuzzy
+#: time/zic.c:1252
 msgid "invalid starting year"
 msgstr "año de comienzo no válido"
 
-#: time/zic.c:1094 zic.c:1196
-#, fuzzy
+#: time/zic.c:1130 time/zic.c:1232
 msgid "invalid time of day"
 msgstr "hora del día no válida"
 
 # ## Antes tenías "nombre de la semana incorrecto" sv
 # ## Mandeeee ? em
 # ## Te lo prometo... sv
-#: time/zic.c:1282
+#: time/zic.c:1318
 msgid "invalid weekday name"
 msgstr "nombre del día de la semana incorrecto"
 
-# ## Borro un fuzzy que había. sv
-#: time/zic.c:757
+#: locale/programs/ld-collate.c:1411
+msgid "line after ellipsis must contain character definition"
+msgstr ""
+"la línea de después de la elipsis tiene que contener una definición de "
+"carácter"
+
+#: locale/programs/ld-collate.c:1390
+msgid "line before ellipsis does not contain definition for character constant"
+msgstr ""
+"la línea posterior a la elipsis no contiene una definición para una "
+"constante de carácter"
+
+#: time/zic.c:794
 msgid "line too long"
 msgstr "línea demasiado larga"
 
-#: catgets/gencat.c:598
+#: locale/programs/localedef.c:281
+#, c-format
+msgid "locale file `%s', used in `copy' statement, not found"
+msgstr ""
+"archivo de locales `%s', que se usa en una orden `copy', no se encuentra"
+
+#: catgets/gencat.c:609
 msgid "malformed line ignored"
 msgstr "línea incorrecta se ignoró"
 
@@ -1669,23 +2672,44 @@ msgstr "línea incorrecta se ignoró"
 # ¿estropeada?       ¿alterada? <- votaría por ésta. sv
 #  Pues después de ver la traducción de Jochen estoy perdido
 #   le voy a consultar a él directamente. em
-#: malloc/mcheck.c:168
+#: malloc/mcheck.c:183
 msgid "memory clobbered before allocated block"
 msgstr "memoria alterada antes del comienzo del bloque de memoria asignado"
 
 #  ??? lo mismo digo
 #  aceptado hasta que consulte con Jochen
 # lo mismo sugiero. sv
-#: malloc/mcheck.c:171
+#: malloc/mcheck.c:186
 msgid "memory clobbered past end of allocated block"
 msgstr "memoria alterada pasado el final del bloque de memoria asignado"
 
+#: locale/programs/ld-collate.c:167 locale/programs/ld-collate.c:173
+#: locale/programs/ld-collate.c:177 locale/programs/ld-collate.c:1438
+#: locale/programs/ld-collate.c:1467 locale/programs/locfile.c:940
+#: locale/programs/xmalloc.c:68 posix/getconf.c:181
+msgid "memory exhausted"
+msgstr "Memoria agotada"
+
 # biblioteca está recogida en la lista de pifias de Ángel Álvarez.
-#: malloc/mcheck.c:165
+#: malloc/mcheck.c:180
 msgid "memory is consistent, library is buggy"
 msgstr "no hay problemas con la memoria, la biblioteca tiene un bug"
 
-#: time/zic.c:878
+#: locale/programs/ld-time.c:348
+#, c-format
+msgid "missing era format in string %d in `era' field in category `%s'"
+msgstr ""
+"nombre de era no encontrado en la cadena %d en el campo `era' de la\n"
+"categoria `%s'"
+
+#: locale/programs/ld-time.c:337
+#, c-format
+msgid "missing era name in string %d in `era' fieldin category `%s'"
+msgstr ""
+"nomnbre de era no encontrado en la cadena %d en el campo `era' de la\n"
+"categoria `%s'"
+
+#: time/zic.c:915
 msgid "nameless rule"
 msgstr "regla sin nombre"
 
@@ -1694,44 +2718,81 @@ msgstr "regla sin nombre"
 msgid "never registered prog %d\n"
 msgstr "el programa %d no fue registrado nunca\n"
 
-#: rpc_parse.c:313 sunrpc/rpc_parse.c:305
-msgid "no array-of-pointer declarations -- use typedef"
-msgstr "no existe ninguna declaración de array-of-pointer -- usar typedef"
+#: locale/programs/ld-messages.c:95 locale/programs/ld-messages.c:116
+#, c-format
+msgid "no correct regular expression for field `%s' in category `%s': %s"
+msgstr ""
+"falta una expresión regular correcta para el campo `%s' en la categoría "
+"`%s': \n"
+"%s'"
 
 # ## Antes tenías: "no hay día en la regla de coincidencia de mes" sv
 # Esto debe tener algo que ver con la función menopausie() em
 # No se me había ocurrido... ¿Se te ocurre algo mejor, ahora que ya
 # sabemos lo que quiere decir? sv
-#: time/zic.c:1955
+#: time/zic.c:2059
 msgid "no day in month matches rule"
 msgstr "ningún día del mes coincide con la regla"
 
-#: sunrpc/portmap.c:452
+#: locale/programs/ld-collate.c:259
+msgid "no definition of `UNDEFINED'"
+msgstr "no hay definición para `UNDEFINED'"
+
+#: locale/programs/locfile.c:479
+msgid "no other keyword shall be specified when `copy' is used"
+msgstr "ninguna otra palabra clave debe ser especificada al usar `copy'"
+
+#: locale/programs/localedef.c:340
+msgid "no output file produced because warning were issued"
+msgstr "no se produjo fichero de salida debido a la existencia de warnings"
+
+#: locale/programs/charmap.c:315 locale/programs/charmap.c:466
+#: locale/programs/charmap.c:545
+msgid "no symbolic name given"
+msgstr "no se proporció un nombre simbólico"
+
+#: locale/programs/charmap.c:380 locale/programs/charmap.c:512
+#: locale/programs/charmap.c:578
+msgid "no symbolic name given for end of range"
+msgstr "no se proporció un nombre simbólico para el final del rango"
+
+#: locale/programs/ld-collate.c:244
+#, c-format
+msgid "no weight defined for symbol `%s'"
+msgstr "el peso no está definido para el símbolo `%s'"
+
+#: locale/programs/charmap.c:430
+msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
+msgstr ""
+"solo están permitidas definiciones WIDTH después de la una definición CHARMAP"
+
+#: sunrpc/portmap.c:451
 msgid "portmap CALLIT: cannot fork.\n"
 msgstr "portmap CALLIT: llamada a fork() sin éxito\n"
 
 # mapeador es *horroroso* sv
-#: portmap.c:117 sunrpc/portmap.c:95
+#: sunrpc/portmap.c:94 sunrpc/portmap.c:116
 msgid "portmap cannot bind"
 msgstr "falló la llamada a bind() del mapeador de puertos `portmap' "
 
-#: portmap.c:113 sunrpc/portmap.c:87
+#: sunrpc/portmap.c:86 sunrpc/portmap.c:112
 msgid "portmap cannot create socket"
 msgstr "el mapeador de puertos `portmap' no ha podido crear el `socket'"
 
-#: rpc_scan.c:464 sunrpc/rpc_scan.c:456
-msgid "preprocessor error"
-msgstr "error del preprocesador"
+#: db/makedb.c:326
+#, c-format
+msgid "problems while reading `%s'"
+msgstr "problemas mientras se leía `%s'"
 
 # ## Borro un fuzzy que había. sv
-#: rpcinfo.c:350 sunrpc/rpcinfo.c:222
+#: sunrpc/rpcinfo.c:222 sunrpc/rpcinfo.c:350
 #, c-format
 msgid "program %lu is not available\n"
 msgstr "el programa %lu no está disponible\n"
 
 # ## Borro un "fuzzy" que había. sv
-#: rpcinfo.c:282 rpcinfo.c:371 rpcinfo.c:408 rpcinfo.c:429
-#: sunrpc/rpcinfo.c:245 sunrpc/rpcinfo.c:462
+#: sunrpc/rpcinfo.c:245 sunrpc/rpcinfo.c:282 sunrpc/rpcinfo.c:371
+#: sunrpc/rpcinfo.c:408 sunrpc/rpcinfo.c:429 sunrpc/rpcinfo.c:462
 #, c-format
 msgid "program %lu version %lu is not available\n"
 msgstr "el programa %lu versión %lu no está disponible\n"
@@ -1744,16 +2805,16 @@ msgstr "el programa %lu versión %lu no está disponible\n"
 msgid "program %lu version %lu ready and waiting\n"
 msgstr "el programa %lu versión %lu está listo y esperando\n"
 
-#: inet/rcmd.c:154
+#: inet/rcmd.c:157
 #, c-format
 msgid "rcmd: select (setting up stderr): %s\n"
 msgstr "rcmd: select (activando la salida de error estándar): %s\n"
 
-#: inet/rcmd.c:86
+#: inet/rcmd.c:87
 msgid "rcmd: socket: All ports in use\n"
 msgstr "rcmd: socket: Todos los puertos están siendo usados\n"
 
-#: inet/rcmd.c:141
+#: inet/rcmd.c:144
 #, c-format
 msgid "rcmd: write (setting up stderr): %s\n"
 msgstr "rcmd: write (activando la salida de error estándar): %s\n"
@@ -1762,7 +2823,7 @@ msgstr "rcmd: write (activando la salida de error estándar): %s\n"
 msgid "registerrpc: out of memory\n"
 msgstr "registerrpc: memoria agotada\n"
 
-#: time/zic.c:1690
+#: time/zic.c:1794
 msgid "repeated leap second moment"
 msgstr "segundo intercalar repetido"
 
@@ -1777,8 +2838,9 @@ msgid "rpcinfo: %s is unknown service\n"
 msgstr "rpcinfo: el servicio `%s' es desconocido\n"
 
 # FUZZY. Se podría añadir rpcinfo: al principio. sv
+# Estoy pensando en poner 'dar de baja' en vez de eso em+
 #: sunrpc/rpcinfo.c:600
-#, fuzzy, c-format
+#, c-format
 msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
 msgstr "no se pudo borrar el registro para el programa %s versión %s\n"
 
@@ -1799,114 +2861,298 @@ msgid "rpcinfo: can't contact portmapper: "
 msgstr ""
 "rpcinfo: no se puede comunicar con el mapeador de puertos (`portmapper'): "
 
-#: sunrpc/portmap.c:138
+#: sunrpc/portmap.c:137
 msgid "run_svc returned unexpectedly\n"
 msgstr "run_svc terminó inesperadamente\n"
 
+#: time/zic.c:708 time/zic.c:710
+msgid "same rule name in multiple files"
+msgstr "mismo nombre de regla en varios ficheros"
+
 #  ¿en la configuración del servicio? , ¿del circuito? , ¿o dejarlo así?
 #  Es de locos, estuve viendo las/los fuentes, preferí dejarlo así. em
-#: inet/rcmd.c:158
+#: inet/rcmd.c:161
 msgid "select: protocol failure in circuit setup\n"
-msgstr "select: fallo de protocolo.\n"
+msgstr "select: fallo de protocolo al configurar el circuito\n"
 
 #  ??? lo mismo que arriba
-#: inet/rcmd.c:176
-msgid "socket: protocol failure in circuit setup.\n"
-msgstr "socket: fallo de protocolo.\n"
+#: inet/rcmd.c:179
+msgid "socket: protocol failure in circuit setup\n"
+msgstr "socket: fallo de protocolo al configurar el circuito\n"
 
-#: time/zic.c:742
+#: locale/programs/locfile.c:600
+msgid "sorting order `forward' and `backward' are mutually exclusive"
+msgstr "los órdenes `forward' y `backward' son mutuamente excluyentes"
+
+#: locale/programs/ld-collate.c:1567 locale/programs/ld-collate.c:1613
+msgid ""
+"specification of sorting weight for collation symbol does not make sense"
+msgstr ""
+"la especificación para el orden de peso del símbolo de unión no tiene "
+"sentido "
+
+#: time/zic.c:779
 msgid "standard input"
 msgstr "entrada estándar"
 
-#: time/zdump.c:259
+#: time/zdump.c:260
 msgid "standard output"
 msgstr "salida estándar"
 
-#: time/zic.c:1240
+#: locale/programs/ld-time.c:256
+#, c-format
+msgid "starting date is illegal in string %d in `era' field in category `%s'"
+msgstr ""
+"la fecha de comienzo no es válida en la cadena %d del campo `era' de la\n"
+"categoría `%s'"
+
+#: time/zic.c:1276
 msgid "starting year greater than ending year"
 msgstr "año de comienzo mayor que año de final"
 
-#: sunrpc/svc_tcp.c:199 svc_tcp.c:204
+#: locale/programs/ld-time.c:328
+#, c-format
+msgid "stopping date is illegal in string %d in `era' field in category `%s'"
+msgstr ""
+"la fecha de final no es válida en la cadena %d del campo `era' de la\\n\"\n"
+"\"categoría `%s'"
+
+#: sunrpc/svc_tcp.c:201 sunrpc/svc_tcp.c:206
 msgid "svc_tcp: makefd_xprt: out of memory\n"
 msgstr "svc_tcp: makefd_xprt: memoria agotada\n"
 
-#: sunrpc/svc_tcp.c:147
+#: sunrpc/svc_tcp.c:149
 msgid "svctcp_.c - cannot getsockname or listen"
 msgstr "svctcp_.c - fallo en la ejecución de `getsockname()' o `listen()'"
 
-#: sunrpc/svc_tcp.c:134
+#: sunrpc/svc_tcp.c:136
 msgid "svctcp_.c - udp socket creation problem"
 msgstr "svctcp_.c - problema al crear el `socket' del `udp'"
 
-#: sunrpc/svc_tcp.c:154 svc_tcp.c:161
+#: sunrpc/svc_tcp.c:156 sunrpc/svc_tcp.c:163
 msgid "svctcp_create: out of memory\n"
 msgstr "svctcp_create: memoria agotada\n"
 
-#: sunrpc/svc_udp.c:119
+#: sunrpc/svc_udp.c:123
 msgid "svcudp_create - cannot getsockname"
 msgstr "svcudp_create - fallo en la ejecución de `getsockname'"
 
-#: sunrpc/svc_udp.c:107
+#: sunrpc/svc_udp.c:111
 msgid "svcudp_create: socket creation problem"
 msgstr "svcudp_create: problemas para crear el `socket'"
 
-#: catgets/gencat.c:369 gencat.c:505 gencat.c:532
+#: locale/programs/ld-collate.c:1190
+#, c-format
+msgid ""
+"symbol for multicharacter collating element `%.*s' duplicates element "
+"definition"
+msgstr ""
+"el símbolo para el elemento de unión para multi-caracter `%.*s'  repite la\n"
+"definición de otro elemento"
+
+#: locale/programs/ld-collate.c:1063
+#, c-format
+msgid ""
+"symbol for multicharacter collating element `%.*s' duplicates other element "
+"definition"
+msgstr ""
+"el símbolo para el elemento de unión multicarácter `%.*s' repite la "
+"definición\n"
+"de otro elemento"
+
+#: locale/programs/ld-collate.c:1199
+#, c-format
+msgid ""
+"symbol for multicharacter collating element `%.*s' duplicates other symbol "
+"definition"
+msgstr ""
+"el símbolo para el elemento de unión multicarácter `%.*s' repite la "
+"definición\n"
+"de otro símbolo"
+
+#: locale/programs/ld-collate.c:1072
+#, c-format
+msgid ""
+"symbol for multicharacter collating element `%.*s' duplicates symbol "
+"definition"
+msgstr ""
+"el símbolo para el elemento de unión multicarácter `%.*s' repite la "
+"definición\n"
+"repite la definición de otro símbolo"
+
+#: locale/programs/ld-collate.c:1054 locale/programs/ld-collate.c:1181
+#, c-format
+msgid ""
+"symbol for multicharacter collating element `%.*s' duplicates symbolic name "
+"in charset"
+msgstr ""
+"el símbolo para el elemento de unión multicarácter `%.*s' repite otro "
+"nombre\n"
+"de símbolo en el conjunto de caracteres"
+
+#: locale/programs/charmap.c:314 locale/programs/charmap.c:348
+#: locale/programs/charmap.c:378 locale/programs/charmap.c:465
+#: locale/programs/charmap.c:511 locale/programs/charmap.c:544
+#: locale/programs/charmap.c:576
+#, c-format
+msgid "syntax error in %s definition: %s"
+msgstr "error de sintáxis en ls definición de %s: %s"
+
+#: locale/programs/locfile.c:620
+msgid "syntax error in `order_start' directive"
+msgstr "error de sintáxis en la directiva  `order_start'"
+
+#: locale/programs/locfile.c:362
+msgid "syntax error in character class definition"
+msgstr "error de sintáxis en el nombre de clase de carácter"
+
+#: locale/programs/locfile.c:420
+msgid "syntax error in character conversion definition"
+msgstr "error de sintáxis en la definición de la conversión de carácter"
+
+#: locale/programs/locfile.c:662
+msgid "syntax error in collating order definition"
+msgstr "error de sintáxis en la definición del orden de unión"
+
+#: locale/programs/locfile.c:512
+msgid "syntax error in collation definition"
+msgstr "error de sintáxis en la definición de la unión"
+
+#: locale/programs/locfile.c:335
+msgid "syntax error in definition of LC_CTYPE category"
+msgstr "error de sintáxis en una definición de categoría LC_CTYPE"
+
+#: locale/programs/locfile.c:278
+msgid "syntax error in definition of new character class"
+msgstr "error de sintáxis en la definición de una nueva clase de carácter"
+
+#: locale/programs/locfile.c:288
+msgid "syntax error in definition of new character map"
+msgstr "error de sintáxis en la definición de un nuevo mapa de carácter"
+
+#: locale/programs/locfile.c:873
+msgid "syntax error in message locale definition"
+msgstr "error de sintáxis en la definición de local para mensajes"
+
+#: locale/programs/locfile.c:784
+msgid "syntax error in monetary locale definition"
+msgstr "error de sintáxis en la definición de local para moneda"
+
+#: locale/programs/locfile.c:811
+msgid "syntax error in numeric locale definition"
+msgstr "error de sintáxis en la definición de local para números"
+
+#: locale/programs/locfile.c:722
+msgid "syntax error in order specification"
+msgstr "error de sintáxis en la especificación de órden"
+
+#: locale/programs/charmap.c:195 locale/programs/charmap.c:211
+#, c-format
+msgid "syntax error in prolog: %s"
+msgstr "error de sintáxis en el prólogo: %s"
+
+#: locale/programs/locfile.c:849
+msgid "syntax error in time locale definition"
+msgstr "error de sintáxis en la definición de local para la hora"
+
+#: locale/programs/locfile.c:255
+msgid "syntax error: not inside a locale definition section"
+msgstr ""
+"error de sintáxis: no está dentro de una seción de definición para un local"
+
+#: catgets/gencat.c:380 catgets/gencat.c:516 catgets/gencat.c:543
 msgid "this is the first definition"
 msgstr "esta es la primera vez que aparece la definición"
 
-#: time/zic.c:1083
+#: time/zic.c:1119
 msgid "time before zero"
 msgstr "hora antes de cero"
 
 # Sugerencia: Desbordamiento de fecha. (?) sv
-#: time/zic.c:1091 zic.c:1855 zic.c:1874
+#: time/zic.c:1127 time/zic.c:1959 time/zic.c:1978
 msgid "time overflow"
 msgstr "desbordamiento horario"
 
-#: sunrpc/rpc_util.c:285
-msgid "too many files!\n"
-msgstr "¡demasiados archivos!\n"
+#: locale/programs/charset.c:44
+msgid "too few bytes in character encoding"
+msgstr "demasiados pocos bytes en la codificación del carácter"
 
-# ## Borro un "fuzzy" que había. sv
-#: time/zic.c:1684
+#: locale/programs/charset.c:46
+msgid "too many bytes in character encoding"
+msgstr "demasiados bytes en la codificación del carácter"
+
+#: locale/programs/locales.h:72
+msgid "too many character classes defined"
+msgstr "demasiadas clases de caracteres definidas"
+
+#: time/zic.c:1788
 msgid "too many leap seconds"
 msgstr "demasiados segundos intercalares"
 
-# ## Borro un "fuzzy" que había. sv
-#: time/zic.c:1656
+#: time/zic.c:1760
 msgid "too many local time types"
 msgstr "demasiados tipos de hora local"
 
-# ## Borro el "fuzzy" que había. sv
-#: time/zic.c:1622
+#: time/zic.c:1714
 msgid "too many transitions?!"
 msgstr "¡¿demasiadas transiciones?!"
 
+# FUZZY
+# ¿ Qué puede ser esto ? em+ 
+#: locale/programs/ld-collate.c:1622
+msgid "too many weights"
+msgstr "¡demasiados pesos!"
+
 # Sugerencia: abreviaturas. sv
-#: time/zic.c:1978
+# Ok em+
+#: time/zic.c:2082
 msgid "too many, or too long, time zone abbreviations"
-msgstr "demasiadas o demasiado largas abreviaciones de zona horaria"
+msgstr "demasiadas o demasiado largas abreviaturas de zona horaria"
+
+# FUZZY
+# es una traducción un poco libre, ¿ que te parece ? em+
+#: locale/programs/linereader.h:146
+msgid "trailing garbage at end of line"
+msgstr "ignorando inconsistencias al final de la línea"
 
 #: sunrpc/svc_simple.c:132
 #, c-format
 msgid "trouble replying to prog %d\n"
 msgstr "dificultades para responder al programa %d\n"
 
-#: time/zic.c:1247
+#: locale/programs/ld-collate.c:1382
+msgid "two lines in a row containing `...' are not allowed"
+msgstr "no están permitidas dos líneas en una misma fila con `...'"
+
+#: time/zic.c:1283
 msgid "typed single year"
 msgstr "tecleado un único año"
 
+#: locale/programs/charmap.c:617 locale/programs/charmap.c:628
+#, c-format
+msgid "unknown character `%s'"
+msgstr "carácter desconocido `%s'"
+
+#: locale/programs/ld-messages.c:193 locale/programs/ld-messages.c:204
+#: locale/programs/ld-messages.c:215 locale/programs/ld-messages.c:226
+#: locale/programs/ld-time.c:696
+#, c-format
+msgid "unknown character in field `%s' of category `%s'"
+msgstr "carácter no reconocido en el campo `%s' de la categoría `%s'"
+
+# FUZZY em+
+#: locale/programs/locfile.c:585
+msgid "unknown collation directive"
+msgstr "la directiva de unión es desconocida"
+
 # descartada (?) sv
-#: catgets/gencat.c:466
+# ¿ y asi ?  em+
+#: catgets/gencat.c:477
 #, c-format
 msgid "unknown directive `%s': line ignored"
-msgstr "directiva desconocida '%s': línea ignorada"
+msgstr "directiva desconocida '%s': línea pasada por alto"
 
-# ## En el libro de Infovía traducen host por "anfitrión"
-# ## El comentario anterior sobra, procede de la "fuzzyness".
-# ## Set podría ser conjunto. Mirarlo. sv
-# ## Borro el "fuzzy" que había. sv
-#: catgets/gencat.c:445
+#: catgets/gencat.c:456
 #, c-format
 msgid "unknown set `%s'"
 msgstr "conjunto `%s' desconocido"
@@ -1914,71 +3160,116 @@ msgstr "conjunto `%s' desconocido"
 msgid "unknown signal"
 msgstr "señal desconocida"
 
-# ## Me gustó la traducción de ingobernable, no se me ocurría otra
-# ## ¿"zona sin reglas"? sv
-# ## Jolines, pues sí, claro. Mucho mejor que eso desde luego em
-#: time/zic.c:714
+# descartada (?) sv
+# Me gusta más `pasada por alto '  em+
+#: locale/programs/ld-collate.c:1366 locale/programs/ld-collate.c:1557
+#: locale/programs/ld-collate.c:1731
+#, c-format
+msgid "unknown symbol `%.*s': line ignored"
+msgstr "símbolo desconocido `%.*s': línea descartada"
+
+#: time/zic.c:751
 msgid "unruly zone"
 msgstr "zona sin reglas"
 
-# ## Borro el "fuzzy" que había. sv
-#: catgets/gencat.c:950
+#: catgets/gencat.c:961
 msgid "unterminated message"
 msgstr "mensaje sin terminar"
 
-#: sunrpc/rpc_scan.c:319
-msgid "unterminated string constant"
+#: locale/programs/linereader.c:515 locale/programs/linereader.c:550
+msgid "unterminated string"
 msgstr "cadena de caracteres sin terminar"
 
-# También se podría haber puesto "Uso:"
-# En recode ya se puso "Modo de empleo"
-# me suena a prospecto de crecepelo EM
-#
-#: sunrpc/rpc_main.c:78
-#, c-format
-msgid "usage: %s infile\n"
-msgstr "Modo de empleo: %s archivo_de_entrada\n"
+#: locale/programs/linereader.c:385
+msgid "unterminated symbolic name"
+msgstr "nombre simbólico sin terminar"
+
+#: locale/programs/ld-collate.c:1684
+msgid "unterminated weight name"
+msgstr "nombre de peso sin terminar"
+
+#: locale/programs/charset.c:119
+msgid "upper limit in range is not smaller then lower limit"
+msgstr "el límite superior del rango no es menor que el límite inferior"
 
 # A lo mejor si pones "veintinueve de febrero" o "29 de febrero"
 # se entiende mejor. no sé. sv
 # Si, estas pensando lo mismo que yo, 29 de febrero puede confundir, porque
 # en el fichero pondrá 2/29  em
-#
 # Sugerencia: "uso de 2/29 ..." (usando sería "using") sv
-#: time/zic.c:1921
+# Tienes razón em+
+#: time/zic.c:2025
 msgid "use of 2/29 in non leap-year"
-msgstr "usando 2/29 en un año no bisiesto"
+msgstr "uso de 2/29 en un año no bisiesto"
 
-# "array" es "array"?
-# Lo miro con cuidado , los archivos rpc_*.c de la libc son especialmente
-# complicados. Sí , creo que se refiere a los aliases de servicios rpc, y
-# efectivamente es un array de longitud variable. No se me ocurriría
-# traducirlo de otra forma, yo no lo entendería mejor que así.
-# otra vez está ausente la "declaración", ¿no habría que ponerla ? sv
-# rpc_parse contiene las funciones para 'parsear' un archivo de config. em
-# Habrá que inventar algo para 'parsear' ... sv
-# Los alemanes dicen parsen , habe geparst  em , quizá comprobar
-# sintaxis o interpretar ? ( parsear es ambas cosas juntas, no ? ) em
-# Creo que "examinar" podría valer, al menos para empezar. sv
-#
-# Sugerencia: "esperado un..." -> "se esperaba un..." sv
-#: sunrpc/rpc_parse.c:330
-msgid "variable-length array declaration expected"
-msgstr "esperado un array de longitud variable"
+# Lo siento Santiago em+
+#: locale/programs/charmap.c:438 locale/programs/charmap.c:492
+#, c-format
+msgid "value for %s must be an integer"
+msgstr "el valor para %s tiene que ser un número entero"
+
+#: locale/programs/charmap.c:233
+#, c-format
+msgid "value for <%s> must lie between 1 and 4"
+msgstr "el valor para <%s> debe de estar entre 1 y 4"
+
+#: locale/programs/ld-monetary.c:148 locale/programs/ld-numeric.c:89
+#, c-format
+msgid "value for field `%s' in category `%s' must not be the empty string"
+msgstr "el valor para el campo `%s' en la categoría `%s' no debe estar vacio "
 
-#: sunrpc/rpc_parse.c:370
-msgid "voids allowed only inside union and program definitions"
+#: locale/programs/charmap.c:245
+msgid "value of <mb_cur_max> must be greater than the value of <mb_cur_min>"
 msgstr ""
-"voids sólo se permiten dentro de las definiciones de uniones y de programa"
+"el valor de <mb_cur_max> tiene que ser mayor que el valor de <mb_cur_min>"
+
+#: locale/programs/ld-monetary.c:138
+msgid ""
+"value of field `int_curr_symbol' in category `LC_MONETARY' does not "
+"correspond to a valid name in ISO 4217"
+msgstr ""
+"el valor del campo `int_curr_symbol' en la categoría `LC_MONETARY' no se \n"
+"corresponde con un nombre válido en ISO 4217"
+
+# FUZZY
+# ¿ Erronea ? em+
+#: locale/programs/ld-monetary.c:133
+msgid ""
+"value of field `int_curr_symbol' in category `LC_MONETARY' has wrong length"
+msgstr ""
+"el valor del campo `int_curr_symbol' en la categoria `LC_MONETARY' tiene\n"
+"una longitud errónea"
+
+#: locale/programs/ld-monetary.c:370 locale/programs/ld-numeric.c:199
+#, c-format
+msgid "values for field `%s' in category `%s' must be smaller than 127"
+msgstr "el valor para el campo `%s' en la categoría `%s' no debe de ser cero"
+
+#: locale/programs/ld-monetary.c:366
+#, c-format
+msgid "values for field `%s' in category `%s' must not be zero"
+msgstr "el valor para el campo `%s' en la categoría `%s' no debe de ser cero"
 
 #: login/setutent_r.c:47
 msgid "while opening UTMP file"
 msgstr "al abrir el archivo UTMP"
 
-#: catgets/gencat.c:977
+#: catgets/gencat.c:988
 msgid "while opening old catalog file"
 msgstr "al abrir el archivo de catálogo antiguo"
 
+#: db/makedb.c:353
+msgid "while reading database"
+msgstr "al leer el archivo de datos"
+
+#: db/makedb.c:315
+msgid "while writing data base file"
+msgstr "al abrir el archivo de datos"
+
+#: db/makedb.c:142
+msgid "wrong number of arguments"
+msgstr "número incorrecto de argumentos"
+
 # En todas estas, yo pondría "número incorrecto de campos",
 # "número incorrecto de argumentos", etc.
 # creo que quedaría mucho mejor. sv
@@ -1989,22 +3280,184 @@ msgstr "al abrir el archivo de catálogo antiguo"
 # Si es mejor, ponlo en todos los sitios. Y si no, en ninguno.
 # Yo creo que es mucho mejor poner "número incorrecto ..."
 # Si no, queda como "al revés". sv
-#: time/zic.c:1041
+#: time/zic.c:1077
 msgid "wrong number of fields on Leap line"
 msgstr "número incorrecto de campos en la línea de bisiesto ( Leap )"
 
-#: time/zic.c:1132
+#: time/zic.c:1168
 msgid "wrong number of fields on Link line"
 msgstr "número incorrecto de campos en la línea de enlace ( Link )"
 
-#: time/zic.c:874
+#: time/zic.c:911
 msgid "wrong number of fields on Rule line"
 msgstr "número incorrecto de argumentos en la línea de regla ( Rule )"
 
-#: time/zic.c:944
+#: time/zic.c:981
 msgid "wrong number of fields on Zone continuation line"
 msgstr "número de campos incorrecto en la línea de continuación de zona (Zone)"
 
-#: time/zic.c:902
+#: time/zic.c:939
 msgid "wrong number of fields on Zone line"
 msgstr "número de campos incorrecto en la línea de zona ( Zone )"
+
+#~ msgid "       %s [-c | -h | -l | -m] [-o outfile] [infile]\n"
+#~ msgstr ""
+#~ "       %s [-c | -h | -l | -m] [-o archivo_salida] [archivo_entrada]\n"
+
+#~ msgid "       %s [-s udp|tcp]* [-o outfile] [infile]\n"
+#~ msgstr "       %s [-s udp|tcp]* [-o archivo_salida] [archivo_entrada]\n"
+
+#~ msgid "%s, line %d: "
+#~ msgstr "%s, línea %d: "
+
+#~ msgid "%s: output would overwrite %s\n"
+#~ msgstr "%s: la salida sobreescribiría %s\n"
+
+#~ msgid "%s: unable to open "
+#~ msgstr "%s: no se pudo abrir "
+
+# A los "arrays" les digo matrices. Igual en América se dice de otra forma.
+# Creo que habría que consultarlo. SV.
+# Echando mano de los fuentes, está claro que se refiere a un array de
+# caracteres, ¿ Cadena de caracteres ? , si claro. EM
+# Pues no, puede ser ambas cosas, o un array de caracteres, o una cadena.
+# ¿por qué te comes la palabra "declaración"?
+# ¿Qué tal "esperada una declaración de `array'"? sv
+# Una declaración de array es> "char *a" por ejemplo. Lo que espera
+#   es algo así>"pepe" , escrito en un archivo de texto, con toda
+#   seguridad ( consulté los fuentes ) em
+# Creí que una declaración y una constante eran cosas distintas. sv
+# ¿Está mal el original inglés? sv
+#  Desde luego que esta mal, o poco claro al menos. Estoy convencido
+#  de que la traducción mejora una vez más al original. em
+#~ msgid "array declaration expected"
+#~ msgstr "esperado un array"
+
+#~ msgid "constant or identifier expected"
+#~ msgstr "esperada una constante o un identificador"
+
+#~ msgid "definition keyword expected"
+#~ msgstr "esperada una palabra clave"
+
+# Sugerencia: se esperaba `%s'. sv
+# Ok em+
+#~ msgid "expected '%s'"
+#~ msgstr "se esperaba `%s'"
+
+# Sugerencia: Lo mismo de antes. sv
+# OK em+
+#~ msgid "expected '%s' or '%s'"
+#~ msgstr "se esperaba `%s' ó `%s' "
+
+# Lo mismo. sv
+#~ msgid "expected '%s', '%s' or '%s'"
+#~ msgstr "se esperaba `%s', `%s' ó `%s'"
+
+#~ msgid "expected type specifier"
+#~ msgstr "esperado especificador de tipo"
+
+#~ msgid "illegal character in file: "
+#~ msgstr "carácter no válido en el archivo: "
+
+#~ msgid "illegal result type"
+#~ msgstr "tipo resultante no válido"
+
+#~ msgid "no array-of-pointer declarations -- use typedef"
+#~ msgstr "no existe ninguna declaración de array-of-pointer -- usar typedef"
+
+#~ msgid "preprocessor error"
+#~ msgstr "error del preprocesador"
+
+#~ msgid "too many files!\n"
+#~ msgstr "¡demasiados archivos!\n"
+
+#~ msgid "unterminated string constant"
+#~ msgstr "cadena de caracteres sin terminar"
+
+# También se podría haber puesto "Uso:"
+# En recode ya se puso "Modo de empleo"
+# me suena a prospecto de crecepelo EM
+#
+#~ msgid "usage: %s infile\n"
+#~ msgstr "Modo de empleo: %s archivo_de_entrada\n"
+
+# "array" es "array"?
+# Lo miro con cuidado , los archivos rpc_*.c de la libc son especialmente
+# complicados. Sí , creo que se refiere a los aliases de servicios rpc, y
+# efectivamente es un array de longitud variable. No se me ocurriría
+# traducirlo de otra forma, yo no lo entendería mejor que así.
+# otra vez está ausente la "declaración", ¿no habría que ponerla ? sv
+# rpc_parse contiene las funciones para 'parsear' un archivo de config. em
+# Habrá que inventar algo para 'parsear' ... sv
+# Los alemanes dicen parsen , habe geparst  em , quizá comprobar
+# sintaxis o interpretar ? ( parsear es ambas cosas juntas, no ? ) em
+# Creo que "examinar" podría valer, al menos para empezar. sv
+#
+# Sugerencia: "esperado un..." -> "se esperaba un..." sv
+#~ msgid "variable-length array declaration expected"
+#~ msgstr "esperado un array de longitud variable"
+
+#~ msgid "voids allowed only inside union and program definitions"
+#~ msgstr ""
+#~ "voids sólo se permiten dentro de las definiciones de uniones y de programa"
+
+#~ msgid "Reserved error 82"
+#~ msgstr "Error reservado 82"
+
+#~ msgid "Reserved error 83"
+#~ msgstr "Error reservado 83"
+
+#~ msgid "Reserved error 84"
+#~ msgstr "Error reservado 84"
+
+#~ msgid "Reserved error 85"
+#~ msgstr "Error reservado 85"
+
+#~ msgid "Reserved error 86"
+#~ msgstr "Error reservado 86"
+
+#~ msgid "Reserved error 87"
+#~ msgstr "Error reservado 87"
+
+#~ msgid "Reserved error 88"
+#~ msgstr "Error reservado 88"
+
+#~ msgid "Reserved error 89"
+#~ msgstr "Error reservado 89"
+
+#~ msgid "Reserved error 90"
+#~ msgstr "Error reservado 90"
+
+#~ msgid "Reserved error 91"
+#~ msgstr "Error reservado 91"
+
+#~ msgid "Reserved error 92"
+#~ msgstr "Error reservado 92"
+
+#~ msgid "Reserved error 93"
+#~ msgstr "Error reservado 93"
+
+#~ msgid "Reserved error 94"
+#~ msgstr "Error reservado 94"
+
+#~ msgid "Reserved error 95"
+#~ msgstr "Error reservado 95"
+
+#~ msgid "Reserved error 96"
+#~ msgstr "Error reservado 96"
+
+#~ msgid "Reserved error 97"
+#~ msgstr "Error reservado 97"
+
+#~ msgid "Reserved error 98"
+#~ msgstr "Error reservado 98"
+
+#~ msgid "Reserved error 99"
+#~ msgstr "Error reservado 99"
+
+# Probablemente la traducción de path sería algo así
+# como "ruta de búsqueda" sv
+# por cierto: ¿qué son los niveles de "remote"? sv
+# Niveles de profundidad ? , ver fuentes em ??
+#~ msgid "Too many levels of remote in path"
+#~ msgstr "Demasiados niveles en el `path'"
diff --git a/po/fr.po b/po/fr.po
index 62fdd23690..20382f340f 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -4,25 +4,15 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU libc 1.94\n"
-"POT-Creation-Date: 1996-09-08 03:45 -0400\n"
-"PO-Revision-Date: 1996-10-10 19:03 -0400\n"
+"Project-Id-Version: GNU libc 1.96\n"
+"POT-Creation-Date: 1996-10-17 03:22+0200\n"
+"PO-Revision-Date: 1996-10-22 22:01 -0400\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <fr@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: sunrpc/rpc_main.c:80
-#, c-format
-msgid "       %s [-c | -h | -l | -m] [-o outfile] [infile]\n"
-msgstr "       %s [-c | -h | -l | -m] [-o fichier_de_sortie] [fichier_d_entrée]\n"
-
-#: sunrpc/rpc_main.c:83
-#, c-format
-msgid "       %s [-s udp|tcp]* [-o outfile] [infile]\n"
-msgstr "       %s [-s udp|tcp]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
-
 #: sunrpc/rpcinfo.c:612
 msgid "       rpcinfo -b prognum versnum\n"
 msgstr "       rpcinfo -b no_program no_version\n"
@@ -43,217 +33,173 @@ msgstr "       rpcinfo [ -n no_de_port ] -t hôte no_program [ no_version ]\n"
 msgid "   program vers proto   port\n"
 msgstr "   program no_version protocole  no_port\n"
 
-#: time/zic.c:425
-#, c-format
+#: time/zic.c:424
 msgid " (rule from \"%s\", line %d)"
 msgstr " (règles de \"%s\", ligne %d)"
 
-#: locale/programs/ld-collate.c:360 locale/programs/ld-ctype.c:1233
+#: locale/programs/ld-collate.c:360 locale/programs/ld-ctype.c:1234
 msgid " done\n"
-msgstr " complété\n"
+msgstr " complété.\n"
 
-#: time/zic.c:422
-#, c-format
+#: time/zic.c:421
 msgid "\"%s\", line %d: %s"
-msgstr "\"%s\", ligne %d: %s"
+msgstr "\"%s\", ligne %d: %s."
 
-#: time/zic.c:946
-#, c-format
+#: time/zic.c:945
 msgid "\"Zone %s\" line and -l option are mutually exclusive"
 msgstr "La ligne \"Zone %s\" et l'option -l sont mutuellement exclusives."
 
-#: time/zic.c:954
-#, c-format
+#: time/zic.c:953
 msgid "\"Zone %s\" line and -p option are mutually exclusive"
 msgstr "La ligne \"Zone %s\" et l'option -p sont mutuellement exclusives."
 
-#: time/zic.c:759
-#, c-format
+#: time/zic.c:758
 msgid "%s in ruleless zone"
 msgstr "%s est dans une zone sans règle."
 
 #: assert/assert.c:48
-#, c-format
 msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
 msgstr "%s%s%s:%u: %s%s l'assertion `%s' a échoué.\n"
 
 #: assert/assert-perr.c:46
-#, c-format
 msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
-msgstr "%s%s%s:%u: %s%s erreur non prévue: %s.\n"
+msgstr "%s%s%s:%u: %s%s erreur imprévue: %s.\n"
 
 #: stdio-common/psignal.c:48
-#, c-format
 msgid "%s%sUnknown signal %d\n"
-msgstr "%s%ssignal inconnu %d\n"
+msgstr "%s%ssignal inconnu %d.\n"
 
-#: sunrpc/rpc_util.c:258
-#, c-format
-msgid "%s, line %d: "
-msgstr "%s, ligne %d: "
-
-#: time/zic.c:2140
-#, c-format
+#: time/zic.c:2139
 msgid "%s: %d did not sign extend correctly\n"
-msgstr "%s: %d n'a pas fait correctement l'expansion de la valeur signée\n"
+msgstr "%s: %d n'a pas fait correctement l'expansion de la valeur signée.\n"
 
 #: locale/programs/charmap.c:176
-#, c-format
 msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
-msgstr "%s: <mb_cur_max> doit être plus grande que <mb_cur_min>\n"
+msgstr "%s: <mb_cur_max> doit être plus grande que <mb_cur_min>.\n"
 
-#: time/zic.c:1431
-#, c-format
+#: time/zic.c:1430
 msgid "%s: Can't create %s: %s\n"
-msgstr "%s: ne peut créer %s: %s\n"
+msgstr "%s: ne peut créer %s: %s.\n"
 
-#: time/zic.c:2119
-#, c-format
+#: time/zic.c:2118
 msgid "%s: Can't create directory %s: %s\n"
-msgstr "%s: ne peut créer le répertoire %s: %s\n"
+msgstr "%s: ne peut créer le répertoire %s: %s.\n"
 
-#: time/zic.c:613
-#, c-format
+#: time/zic.c:612
 msgid "%s: Can't link from %s to %s: %s\n"
-msgstr "%s: ne peut établir un lien entre %s et %s: %s\n"
+msgstr "%s: ne peut établir un lien entre %s et %s: %s.\n"
 
-#: time/zic.c:784
-#, c-format
+#: time/zic.c:783
 msgid "%s: Can't open %s: %s\n"
-msgstr "%s: ne peut ouvrir %s: %s\n"
+msgstr "%s: ne peut ouvrir %s: %s.\n"
 
-#: time/zic.c:852
-#, c-format
+#: time/zic.c:851
 msgid "%s: Error closing %s: %s\n"
-msgstr "%s: erreur lors de la fermeture de %s: %s\n"
+msgstr "%s: erreur lors de la fermeture de %s: %s.\n"
 
-#: time/zic.c:846
-#, c-format
+#: time/zic.c:845
 msgid "%s: Error reading %s\n"
-msgstr "%s: erreur de lecture de %s\n"
+msgstr "%s: erreur de lecture de %s.\n"
 
-#: time/zic.c:1495
-#, c-format
+#: time/zic.c:1494
 msgid "%s: Error writing %s\n"
-msgstr "%s: erreur d'écriture de %s\n"
+msgstr "%s: erreur d'écriture de %s.\n"
 
 #: time/zdump.c:258
-#, c-format
 msgid "%s: Error writing standard output "
-msgstr "%s: erreur d'écriture sur la sortie standard "
+msgstr "%s: erreur d'écriture sur la sortie standard."
 
-#: time/zic.c:831
-#, c-format
+#: time/zic.c:830
 msgid "%s: Leap line in non leap seconds file %s\n"
-msgstr "%s: ligne de type `Leap' dans un fichier qui n'a pas de délai en secondes %s\n"
+msgstr ""
+"%s: ligne de type `Leap' dans un fichier qui n'a pas\n"
+"de délai en secondes %s.\n"
 
 #: time/zic.c:362
-#, c-format
 msgid "%s: Memory exhausted: %s\n"
-msgstr "%s: mémoire épuisée: %s\n"
+msgstr "%s: mémoire épuisée: %s.\n"
 
-#: time/zic.c:528
-#, c-format
+#: time/zic.c:527
 msgid "%s: More than one -L option specified\n"
 msgstr "%s: option -L spécifiée plus d'une fois.\n"
 
-#: time/zic.c:488
-#, c-format
+#: time/zic.c:487
 msgid "%s: More than one -d option specified\n"
 msgstr "%s: option -d spécifiée plus d'une fois.\n"
 
-#: time/zic.c:498
-#, c-format
+#: time/zic.c:497
 msgid "%s: More than one -l option specified\n"
 msgstr "%s: option -l spécifiée plus d'une fois.\n"
 
-#: time/zic.c:508
-#, c-format
+#: time/zic.c:507
 msgid "%s: More than one -p option specified\n"
 msgstr "%s: option -p spécifiée plus d'une fois.\n"
 
-#: time/zic.c:518
-#, c-format
+#: time/zic.c:517
 msgid "%s: More than one -y option specified\n"
 msgstr "%s: option -y spécifiée plus d'une fois.\n"
 
-#: time/zic.c:1846
-#, c-format
+#: time/zic.c:1845
 msgid "%s: command was '%s', result was %d\n"
 msgstr "%s: la commande était '%s', le résultat était %d.\n"
 
 #: locale/programs/charmap.c:593 locale/programs/locfile.c:878
-#, c-format
 msgid "%s: error in state machine"
 msgstr "%s: erreur de l'automate à états finis."
 
-#: posix/getopt.c:686
-#, c-format
+#: posix/getopt.c:687
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: option illégale -- %c.\n"
 
-#: posix/getopt.c:689
-#, c-format
+#: posix/getopt.c:690
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: option invalide -- %c.\n"
 
-#: posix/getopt.c:610
-#, c-format
+#: posix/getopt.c:611
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: l'option `%c%s' ne permet pas de paramètre.\n"
 
-#: posix/getopt.c:581
-#, c-format
+#: posix/getopt.c:582
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: l'option `%s' est ambiguë.\n"
 
-#: posix/getopt.c:627
-#, c-format
+#: posix/getopt.c:628 posix/getopt.c:801
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: l'option `%s' requiert un paramètre.\n"
 
-#: posix/getopt.c:605
-#, c-format
+#: posix/getopt.c:606
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: l'option `--%s' ne permet pas de paramètre.\n"
 
-#: posix/getopt.c:725
-#, c-format
+#: posix/getopt.c:786
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: l'option `-W %s' ne permet pas de paramètre.\n"
+
+#: posix/getopt.c:767
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: l'option `-W %s' est ambiguë.\n"
+
+#: posix/getopt.c:721 posix/getopt.c:850
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: l'option requiert un paramètre -- %c.\n"
 
-#: sunrpc/rpc_main.c:146
-#, c-format
-msgid "%s: output would overwrite %s\n"
-msgstr "%s: la sortie écraserait %s.\n"
-
-#: time/zic.c:838 time/zic.c:1249 time/zic.c:1269
-#, c-format
+#: time/zic.c:837 time/zic.c:1248 time/zic.c:1268
 msgid "%s: panic: Invalid l_value %d\n"
 msgstr "%s: panique: valeur %d de type `l_value' invalide.\n"
 
 #: locale/programs/charmap.c:600
-#, c-format
 msgid "%s: premature end of file"
 msgstr "%s: fin prématurée de fichier."
 
-#: sunrpc/rpc_main.c:152
-#, c-format
-msgid "%s: unable to open "
-msgstr "%s: incapable d'ouvrir "
-
-#: posix/getopt.c:660
-#, c-format
+#: posix/getopt.c:661
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: option non reconnue `%c%s'.\n"
 
-#: posix/getopt.c:656
-#, c-format
+#: posix/getopt.c:657
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: option non reconnue `--%s'.\n"
 
-#: time/zic.c:447
-#, c-format
+#: time/zic.c:446
 msgid ""
 "%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d "
 "directory ]\n"
@@ -264,12 +210,10 @@ msgstr ""
 "\t[ -L secondes_écoulées ] [ -y type_année ] [ fichier ... ]\n"
 
 #: time/zdump.c:165
-#, c-format
 msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
 msgstr "%s: usage: %s [ -v ] [ -c seuil ] nom_de_zone ...\n"
 
 #: sunrpc/clnt_perr.c:125
-#, c-format
 msgid "(unknown authentication error - %d)"
 msgstr "(erreur inconnue d'authentification - %d)"
 
@@ -277,7 +221,7 @@ msgstr "(erreur inconnue d'authentification - %d)"
 msgid "(unknown)"
 msgstr "(inconnu)"
 
-#: catgets/gencat.c:244
+#: catgets/gencat.c:253
 msgid "*standard input*"
 msgstr "*entrée standard*"
 
@@ -285,24 +229,23 @@ msgstr "*entrée standard*"
 msgid ".lib section in a.out corrupted"
 msgstr "La section .lib dans a.out est corrompue."
 
-#: inet/rcmd.c:325
+#: inet/rcmd.c:328
 msgid ".rhosts fstat failed"
 msgstr "Échec d'évaluation fstat() de .rhosts."
 
-#: inet/rcmd.c:321
+#: inet/rcmd.c:324
 msgid ".rhosts lstat failed"
 msgstr "Échec d'évaluation lstat() de .rhosts."
 
-#: inet/rcmd.c:323
+#: inet/rcmd.c:326
 msgid ".rhosts not regular file"
 msgstr ".rhosts n'est pas un fichier régulier."
 
-#: inet/rcmd.c:329
+#: inet/rcmd.c:332
 msgid ".rhosts writeable by other than owner"
 msgstr ".rhosts accessible en écriture par d'autres que le propriétaire."
 
 #: sunrpc/clnt_perr.c:112 sunrpc/clnt_perr.c:133
-#, c-format
 msgid "; low version = %lu, high version = %lu"
 msgstr "; version basse = %lu, version haute = %lu"
 
@@ -310,15 +253,13 @@ msgstr "; version basse = %lu, version haute = %lu"
 msgid "; why = "
 msgstr "; pourquoi = "
 
-#: locale/programs/ld-ctype.c:325
-#, c-format
+#: locale/programs/ld-ctype.c:326
 msgid "<SP> character must not be in class `%s'"
-msgstr "Le caractères <SP> ne doit pas être dans la classe `%s'."
+msgstr "Le caractère <SP> ne doit pas être dans la classe `%s'."
 
-#: locale/programs/ld-ctype.c:316
-#, c-format
+#: locale/programs/ld-ctype.c:317
 msgid "<SP> character not in class `%s'"
-msgstr "Le caractères <SP> n'est pas dans la classe `%s'."
+msgstr "Le caractère <SP> n'est pas dans la classe `%s'."
 
 #. 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.
@@ -346,6 +287,9 @@ msgstr "Famille d'adresses non supportée par le protocole."
 msgid "Advertise error"
 msgstr "Erreur d'annonce."
 
+msgid "Alarm clock"
+msgstr "Minuterie d'alerte"
+
 #. 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
@@ -391,7 +335,7 @@ msgstr "Mauvais format du fichier de fontes."
 msgid "Block device required"
 msgstr "Bloc de périphérique requis."
 
-#: sunrpc/pmap_rmt.c:335
+#: sunrpc/pmap_rmt.c:337
 msgid "Broadcast select problem"
 msgstr "Problème de sélection durant la diffusion."
 
@@ -404,6 +348,12 @@ msgstr "Problème de sélection durant la diffusion."
 msgid "Broken pipe"
 msgstr "Relais brisé (pipe)"
 
+msgid "Bus error"
+msgstr "Erreur du BUS."
+
+msgid "CPU time limit exceeded"
+msgstr "Temps limite expiré."
+
 #: stdio-common/../sysdeps/gnu/errlist.c:758
 msgid "Can not access a needed shared library"
 msgstr "Ne peut accéder à la librairie partagée demandée."
@@ -421,7 +371,7 @@ msgstr "Ne peut allouer de la mémoire."
 msgid "Cannot assign requested address"
 msgstr "Ne peut attribuer l'adresse demandée."
 
-#: sunrpc/pmap_rmt.c:253
+#: sunrpc/pmap_rmt.c:255
 msgid "Cannot create socket for broadcast rpc"
 msgstr "Ne peut créer un socket pour une diffusion de type rpc."
 
@@ -429,7 +379,7 @@ msgstr "Ne peut créer un socket pour une diffusion de type rpc."
 msgid "Cannot exec a shared library directly"
 msgstr "Ne peut exécuter une librairie partagée directement."
 
-#: sunrpc/pmap_rmt.c:347
+#: sunrpc/pmap_rmt.c:349
 msgid "Cannot receive reply to broadcast"
 msgstr "Ne peut recevoir l'accusé réception à la requête faite par diffusion."
 
@@ -442,11 +392,11 @@ msgstr "Ne peut enregistrer le service."
 msgid "Cannot send after transport endpoint shutdown"
 msgstr "Ne peut transmettre après la fermeture du noeud final de transport."
 
-#: sunrpc/pmap_rmt.c:311
+#: sunrpc/pmap_rmt.c:313
 msgid "Cannot send broadcast packet"
 msgstr "Ne peut transmettre le paquet par diffusion."
 
-#: sunrpc/pmap_rmt.c:259
+#: sunrpc/pmap_rmt.c:261
 msgid "Cannot set socket option SO_BROADCAST"
 msgstr "Ne peut initialiser l'option `SO_BROADCAST' de socket."
 
@@ -454,6 +404,9 @@ msgstr "Ne peut initialiser l'option `SO_BROADCAST' de socket."
 msgid "Channel number out of range"
 msgstr "Numéro de canal en dehors des limites."
 
+msgid "Child exited"
+msgstr "Le processus `enfant' a terminé."
+
 #: sunrpc/clnt_perr.c:286
 msgid "Client credential too weak"
 msgstr "Identité du client peu fiable."
@@ -467,7 +420,7 @@ msgstr "Erreur de communication lors de la transmission."
 msgid "Computer bought the farm"
 msgstr "Allez à la maison et buvez un verre de lait."
 
-#: locale/programs/ld-ctype.c:1196
+#: locale/programs/ld-ctype.c:1197
 msgid "Computing table size for character classes might take a while..."
 msgstr ""
 "Le calcul de la taille de la table des classes de caractères\n"
@@ -498,6 +451,22 @@ msgstr "Connexion ré-initialisée par le correspondant."
 msgid "Connection timed out"
 msgstr "Connexion terminée par expiration du délai d'inactivité."
 
+msgid "Continued"
+msgstr "Poursuite."
+
+#: catgets/gencat.c:169 db/makedb.c:120 locale/programs/locale.c:187
+#: locale/programs/localedef.c:177
+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"
+"Ce logiciel est gratuit; voir les fichiers source pour les conditions\n"
+"de reproduction.\n"
+"Aucune garantie n'est donnée; tant pour des raisons COMMERÇIALES que pour\n"
+"répondre à un BESOIN PARTICULIER.\n"
+
 #. 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}.
@@ -507,7 +476,7 @@ msgstr "Adresse de destination requise."
 
 #: stdio-common/../sysdeps/gnu/errlist.c:686
 msgid "Device not a stream"
-msgstr "Le périphérique n'est pas de type stream."
+msgstr "Le périphérique n'est pas de type `stream'."
 
 #. 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.
@@ -537,7 +506,6 @@ msgid "Disc quota exceeded"
 msgstr "Débordement du quota du disque."
 
 #: sunrpc/clnt_perr.c:254
-#, c-format
 msgid "Error %d"
 msgstr "Erreur %d"
 
@@ -545,7 +513,7 @@ msgstr "Erreur %d"
 msgid "Error in unknown error system: "
 msgstr "Erreur provenant d'une erreur système inconnue: "
 
-#: inet/ruserpass.c:156
+#: inet/ruserpass.c:161
 msgid "Error: .netrc file is readable by others."
 msgstr "Erreur: le fichier .netrc est lisible par les autres."
 
@@ -559,7 +527,7 @@ msgstr "L'échangeur est plein."
 msgid "Exec format error"
 msgstr "Erreur de format pour exec()."
 
-#: locale/programs/localedef.c:207
+#: locale/programs/localedef.c:213
 msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
 msgstr "ERREUR FATALE: le système ne peut définir `_POSIX2_LOCALEDEF'"
 
@@ -588,11 +556,17 @@ msgstr "Erreur de verrou bloquant l'accès au fichier"
 msgid "File name too long"
 msgstr "Nom de fichier trop long."
 
+msgid "File size limit exceeded"
+msgstr "Débordement de la taille permise pour un fichier."
+
 #. TRANS File too big; the size of a file would be larger than allowed by the system.
 #: stdio-common/../sysdeps/gnu/errlist.c:190
 msgid "File too large"
 msgstr "Fichier trop gros."
 
+msgid "Floating point exception"
+msgstr "Exception en point flottant."
+
 #. TRANS Function not implemented.  Some functions have commands or options defined
 #. TRANS that might not be supported in all implementations, and this is the kind
 #. TRANS of error you get if you request them and they are not supported.
@@ -605,6 +579,9 @@ msgstr "Fonction non implantée."
 msgid "Gratuitous error"
 msgstr "Erreur gratuite."
 
+msgid "Hangup"
+msgstr "Fin de la connexion (raccroché)."
+
 #. TRANS The remote host for a requested network connection is down.
 #: stdio-common/../sysdeps/gnu/errlist.c:457
 msgid "Host is down"
@@ -614,10 +591,19 @@ msgstr "L'hôte cible est arrêté ou en panne."
 msgid "Host name lookup failure"
 msgstr "Erreur de repérage du nom de l'hôte cible."
 
+msgid "I/O possible"
+msgstr "E/S possible."
+
+msgid "IOT trap"
+msgstr "Trappe IOT."
+
 #: stdio-common/../sysdeps/gnu/errlist.c:618
 msgid "Identifier removed"
 msgstr "Identificateur éliminé."
 
+msgid "Illegal Instruction"
+msgstr "Instruction illégale."
+
 #. TRANS Invalid seek operation (such as on a pipe).
 #: stdio-common/../sysdeps/gnu/errlist.c:201
 msgid "Illegal seek"
@@ -653,6 +639,9 @@ msgstr "Opération inappropriée pour un processus d'arrière-plan."
 msgid "Input/output error"
 msgstr "Erreur d'entrée/sortie."
 
+msgid "Interrupt"
+msgstr "Interruption."
+
 #. TRANS Interrupted function call; an asynchronous signal occured and prevented
 #. TRANS completion of the call.  When this happens, you should try the call
 #. TRANS again.
@@ -753,6 +742,9 @@ msgstr "est un répertoire."
 msgid "Is a named type file"
 msgstr "est un type de fichier nommé (named)."
 
+msgid "Killed"
+msgstr "Processus arrêté."
+
 #: stdio-common/../sysdeps/gnu/errlist.c:650
 msgid "Level 2 halted"
 msgstr "Niveau 2 en halte."
@@ -791,8 +783,8 @@ msgstr "Mémoire épuisée."
 msgid "Message too long"
 msgstr "Message trop long."
 
+# MRO a verifier
 #: stdio-common/../sysdeps/gnu/errlist.c:730
-#: MRO a verifier
 msgid "Multihop attempted"
 msgstr "Connexion par liens par noeuds multiples de relais tentée."
 
@@ -833,8 +825,8 @@ msgstr "Aucun sémaphore XENIX disponible."
 msgid "No address associated with name"
 msgstr "Aucune adresse associée avec le nom."
 
+# MRO a verifier
 #: stdio-common/../sysdeps/gnu/errlist.c:666
-#: MRO a verifier
 msgid "No anode"
 msgstr "Aucune `anode' disponible."
 
@@ -872,7 +864,7 @@ msgstr "Pas de concordance."
 msgid "No message of desired type"
 msgstr "Aucun message du type désiré."
 
-#: posix/regex.c:5202
+#: posix/regex.c:5204
 msgid "No previous regular expression"
 msgstr "Aucune expression régulière ne précède."
 
@@ -936,7 +928,7 @@ msgstr "Le résultat numérique est en dehors de l'intervalle."
 msgid "Object is remote"
 msgstr "L'objet est télé-accessible."
 
-#: time/zic.c:1940
+#: time/zic.c:1939
 msgid "Odd number of quotation marks"
 msgstr "Nombre impair de caractères apostrophe."
 
@@ -1002,10 +994,16 @@ msgstr "Le package n'est pas installé."
 msgid "Permission denied"
 msgstr "Permission non accordée."
 
+msgid "Power failure"
+msgstr "Panne d'alimentation."
+
 #: posix/regex.c:954
 msgid "Premature end of regular expression"
 msgstr "Fin prématurée de l'expression régulière."
 
+msgid "Profiling timer expired"
+msgstr "Expiration de la minuterie durant l'établissement du profile."
+
 #: stdio-common/../sysdeps/gnu/errlist.c:642
 msgid "Protocol driver not attached"
 msgstr "Pilote du protocole n'est pas attaché."
@@ -1037,6 +1035,9 @@ msgstr "Protocole non supporté."
 msgid "Protocol wrong type for socket"
 msgstr "Mauvais type pour un socket de protocole."
 
+msgid "Quit"
+msgstr "Quitter."
+
 #: stdio-common/../sysdeps/gnu/errlist.c:734
 msgid "RFS specific error"
 msgstr "Erreur spécifique à RFS."
@@ -1159,9 +1160,15 @@ msgstr "Erreur d'entrée/sortie sur l'hôte cible."
 msgid "Remote address changed"
 msgstr "L'adresse de l'hôte cible a été modifiée."
 
-#: inet/ruserpass.c:157
+#: inet/ruserpass.c:162
 msgid "Remove password or make file unreadable by others."
-msgstr "Retirer le mot de passe ou rendre les fichiers illisibles par les autres."
+msgstr ""
+"Retirer le mot de passe ou rendre les fichiers illisibles par les autres."
+
+#: catgets/gencat.c:224 db/makedb.c:227 locale/programs/locale.c:257
+#: locale/programs/localedef.c:408
+msgid "Report bugs to <bug-glibc@prep.ai.mit.edu>.\n"
+msgstr "Rapporter toutes anomalies à l'adresse suivante: <bug-glibc@prep.ai.mit.edu>.\n"
 
 #: resolv/herror.c:73
 msgid "Resolver Error 0 (no error)"
@@ -1212,6 +1219,9 @@ msgstr "Blocage évité des accès aux ressources."
 msgid "Resource temporarily unavailable"
 msgstr "Ressource temporairement non disponible."
 
+msgid "Segmentation fault"
+msgstr "Erreur de segmentation."
+
 #: sunrpc/clnt_perr.c:280
 msgid "Server rejected credential"
 msgstr "Le serveur a rejeté l'identité."
@@ -1247,6 +1257,18 @@ msgstr "Erreur srmount()."
 msgid "Stale NFS file handle"
 msgstr "Panne d'accès au fichier NFS."
 
+msgid "Stopped"
+msgstr "Arrêté."
+
+msgid "Stopped (signal)"
+msgstr "Signal d'arrêt."
+
+msgid "Stopped (tty input)"
+msgstr "Arrêté (via l'entrée sur tty)."
+
+msgid "Stopped (tty output)"
+msgstr "Arrêté (via la sortie sur tty)."
+
 #: stdio-common/../sysdeps/gnu/errlist.c:778
 msgid "Streams pipe error"
 msgstr "Erreur de relais de type streams."
@@ -1259,6 +1281,9 @@ msgstr "La structure a besoin d'un nettoyage."
 msgid "Success"
 msgstr "Succès."
 
+msgid "Terminated"
+msgstr "Complété."
+
 #. 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
@@ -1321,6 +1346,9 @@ msgstr "Trop de références: ne peut segmenter."
 msgid "Too many users"
 msgstr "Trop d'usagers."
 
+msgid "Trace/breakpoint trap"
+msgstr "Trappe pour point d'arrêt et de trace."
+
 #: posix/regex.c:945
 msgid "Trailing backslash"
 msgstr "Barre oblique en suffixe."
@@ -1346,19 +1374,16 @@ msgstr "Noeud final de transport déjà connecté."
 msgid "Transport endpoint is not connected"
 msgstr "Le noeud final de transport n'est pas connecté."
 
-#: catgets/gencat.c:202 db/makedb.c:197 locale/programs/locale.c:234
-#: locale/programs/localedef.c:383
-#, c-format
+#: catgets/gencat.c:208 db/makedb.c:209 locale/programs/locale.c:241
+#: locale/programs/localedef.c:389
 msgid "Try `%s --help' for more information.\n"
 msgstr "Pour en savoir davantage, faites: `%s --help'.\n"
 
-#: inet/rcmd.c:118
-#, c-format
+#: inet/rcmd.c:121
 msgid "Trying %s...\n"
 msgstr "On tente %s...\n"
 
-#: inet/ruserpass.c:241
-#, c-format
+#: inet/ruserpass.c:246
 msgid "Unknown .netrc keyword %s"
 msgstr "Mot clé inconnu %s dans .netrc."
 
@@ -1380,11 +1405,10 @@ msgid "Unknown server error"
 msgstr "Erreur du serveur inconnu."
 
 #: string/strsignal.c:40
-#, c-format
 msgid "Unknown signal %d"
 msgstr "Signal inconnu %d"
 
-#: misc/error.c:92
+#: misc/error.c:94
 msgid "Unknown system error"
 msgstr "Erreur système inconnue."
 
@@ -1402,15 +1426,16 @@ msgstr "Échec du pairage de [ ou de [^"
 
 #: posix/regex.c:949
 msgid "Unmatched \\{"
-msgstr "Échec du pairage de \\{"
+msgstr "Échec du pairage de \\{."
 
-#: posix/getconf.c:184
-#, c-format
+#: posix/getconf.c:191
 msgid "Unrecognized variable `%s'"
-msgstr "Variable non reconnue `%s'"
+msgstr "Variable non reconnue `%s'."
+
+msgid "Urgent I/O condition"
+msgstr "Condition d'E/S urgente."
 
-#: catgets/gencat.c:205
-#, c-format
+#: catgets/gencat.c:212
 msgid ""
 "Usage: %s [OPTION]... -o OUTPUT-FILE [INPUT-FILE]...\n"
 "       %s [OPTION]... [OUTPUT-FILE [INPUT-FILE]...]\n"
@@ -1422,7 +1447,6 @@ msgid ""
 "  -V, --version       output version information and exit\n"
 "If INPUT-FILE is -, input is read from standard input.  If OUTPUT-FILE\n"
 "is -, output is written to standard output.\n"
-"Report bugs to <bug-glibc@prep.ai.mit.edu>.\n"
 msgstr ""
 "Usage: %s [OPTION]... -o FICHIER_DE_SORTIE [FICHIER_D_ENTRÉE]...\n"
 "       %s [OPTION]... [FICHIER_DE_SORTIE [FICHIER_D_ENTRÉE]...]\n"
@@ -1437,10 +1461,8 @@ msgstr ""
 "  -V, --version        afficher le nom et la version du logiciel\n"
 "Si le FICHIER_D_ENTRÉE est -, la lecture se fait de l'entrée standard.\n"
 "Si le FICHIER_DE_SORTIE est -, l'écriture se fait sur la sortie standard.\n"
-"Rapporter toutes anomalies à l'adresse suivante: <bug-glibc@prep.ai.mit.edu>.\n"
 
-#: db/makedb.c:200
-#, c-format
+#: db/makedb.c:213
 msgid ""
 "Usage: %s [OPTION]... INPUT-FILE OUTPUT-FILE\n"
 "       %s [OPTION]... -o OUTPUT-FILE INPUT-FILE\n"
@@ -1453,7 +1475,6 @@ msgid ""
 "  -u, --undo          print content of database file, one entry a line\n"
 "  -V, --version       output version information and exit\n"
 "If INPUT-FILE is -, input is read from standard input.\n"
-"Report bugs to <bug-glibc@prep.ai.mit.edu>.\n"
 msgstr ""
 "Usage: %s [OPTION]... FICHIER_D_ENTRÉE FICHIER_DE_SORTIE\n"
 "       %s [OPTION]... -o FICHIER_DE_SORTIE FICHIER_D_ENTRÉE\n"
@@ -1469,10 +1490,8 @@ msgstr ""
 "                       une entrée par ligne\n"
 "  -V, --version        afficher le nom et la version du logiciel\n"
 "Si le FICHIER_D_ENTRÉE est -, la lecture se fait l'entrée standard.\n"
-"Rapporter toutes anomalies à l'adresse suivante: <bug-glibc@prep.ai.mit.edu>.\n"
 
-#: locale/programs/localedef.c:386
-#, c-format
+#: locale/programs/localedef.c:393
 msgid ""
 "Usage: %s [OPTION]... name\n"
 "Mandatory arguments to long options are mandatory for short options too.\n"
@@ -1488,7 +1507,6 @@ msgid ""
 "\n"
 "System's directory for character maps: %s\n"
 "                       locale files  : %s\n"
-"Report bugs to <bug-glibc@prep.ai.mit.edu>.\n"
 msgstr ""
 "Usage: %s [OPTION]... nom\n"
 "Les paramètres obligatoires pour les options de formes longues le sont\n"
@@ -1508,10 +1526,8 @@ msgstr ""
 "\n"
 "Répertoire système des tables de caractères: %s\n"
 "                            fichiers locaux: %s\n"
-"Rapporter toutes anomalies à l'adresse suivante: <bug-glibc@prep.ai.mit.edu>.\n"
 
-#: locale/programs/locale.c:237
-#, c-format
+#: locale/programs/locale.c:245
 msgid ""
 "Usage: %s [OPTION]... name\n"
 "Mandatory arguments to long options are mandatory for short options too.\n"
@@ -1523,7 +1539,6 @@ msgid ""
 "\n"
 "  -c, --category-name   write names of selected categories\n"
 "  -k, --keyword-name    write names of selected keywords\n"
-"Report bugs to <bug-glibc@prep.ai.mit.edu>.\n"
 msgstr ""
 "Usage: %s [OPTION]... nom\n"
 "Les paramètres obligatoires pour les options de formes longues le sont\n"
@@ -1536,10 +1551,8 @@ msgstr ""
 "\n"
 "  -c, --category-name   afficher les noms des catégories sélectionnées\n"
 "  -k, --keyword-name    afficher les noms des mots clés sélectionnés\n"
-"Rapporter toutes anomalies à l'adresse suivante: <bug-glibc@prep.ai.mit.edu>.\n"
 
-#: posix/getconf.c:131
-#, c-format
+#: posix/getconf.c:138
 msgid "Usage: %s variable_name [pathname]\n"
 msgstr "Usage: %s nom_de_variable [chemin_d_accès]\n"
 
@@ -1547,38 +1560,54 @@ msgstr "Usage: %s nom_de_variable [chemin_d_accès]\n"
 msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
 msgstr "Usage: rpcinfo [ -n no_port ] -u hôte no_prog [ no_version ]\n"
 
+msgid "User defined signal 1"
+msgstr "Signal #1 défini par l'usager."
+
+msgid "User defined signal 2"
+msgstr "Signal #2 défini par l'usager."
+
 #: stdio-common/../sysdeps/gnu/errlist.c:742
 msgid "Value too large for defined data type"
 msgstr "Valeur trop grande pour le type défini de données."
 
-#: time/zic.c:1845
+msgid "Virtual timer expired"
+msgstr "Expiration de la minuterie virtuelle."
+
+#: time/zic.c:1844
 msgid "Wild result from command execution"
 msgstr "Résultat anarchique résultant de l'exécution de la commande."
 
+msgid "Window changed"
+msgstr "La fenêtre a changée."
+
+#: catgets/gencat.c:174 db/makedb.c:125 locale/programs/locale.c:192
+#: locale/programs/localedef.c:182
+msgid "Written by %s.\n"
+msgstr "Écrits par %s.\n"
+
 #. TRANS You did @strong{what}?
 #: stdio-common/../sysdeps/gnu/errlist.c:596
 msgid "You really blew it this time"
 msgstr "Vous avez vraiment tout gâcher cette fois-ci."
 
-#: time/zic.c:1051
+#: time/zic.c:1050
 msgid "Zone continuation line end time is not after end time of previous line"
 msgstr ""
 "Temps final de la ligne de la zone de continuation est antérieur\n"
 "au temps final de la ligne précédente."
 
 #: locale/programs/charmap.c:397 locale/programs/locfile.c:341
-#, c-format
 msgid "`%1$s' definition does not end with `END %1$s'"
-msgstr "`%1$s' la définition ne se termine pas par `END %1$s'"
+msgstr "`%1$s' la définition ne se termine pas par `END %1$s'."
 
 #: locale/programs/ld-monetary.c:358 locale/programs/ld-numeric.c:190
-#, c-format
 msgid "`-1' must be last entry in `%s' field in `%s' category"
-msgstr "`-1' doit être la dernière entrée du champ `%s' de catégorie `%s'"
+msgstr "`-1' doit être la dernière entrée du champ `%s' de catégorie `%s'."
 
 #: locale/programs/ld-collate.c:1651
 msgid "`...' must only be used in `...' and `UNDEFINED' entries"
-msgstr "`...' doit être utilisé seulement avec les entrées `...' et  `UNDEFINED'"
+msgstr ""
+"`...' doit être utilisé seulement avec les entrées `...' et  `UNDEFINED'."
 
 #: locale/programs/locfile.c:538
 msgid "`from' expected after first argument to `collating-element'"
@@ -1588,27 +1617,22 @@ msgstr "`from' attendu après le premier paramètre de `collating-element'"
 msgid ""
 "`from' string in collation element declaration contains unknown character"
 msgstr ""
-"La chaîne `from' déclarant un élément de fusionnement contient un caractère inconnu."
+"La chaîne `from' déclarant un élément de fusionnement contient un caractère "
+"inconnu."
 
 #: locale/programs/charmap.c:267
-#, c-format
 msgid "argument to <%s> must be a single character"
 msgstr "Le paramètre de <%s> doit être un caractère simple."
 
 #: locale/programs/locfile.c:215
-#, c-format
 msgid "argument to `%s' must be a single character"
 msgstr "Le paramètre de `%s' doit être un caractère simple."
 
-#: sunrpc/rpc_parse.c:326
-msgid "array declaration expected"
-msgstr "Déclaration attendue de tableau."
-
-#: sunrpc/auth_unix.c:314
+#: sunrpc/auth_unix.c:322
 msgid "auth_none.c - Fatal marshalling problem"
 msgstr "auth_none.c - problème fatal de mise en ordre."
 
-#: inet/rcmd.c:327
+#: inet/rcmd.c:330
 msgid "bad .rhosts owner"
 msgstr "Mauvais propriétaire du fichier .rhosts."
 
@@ -1616,11 +1640,11 @@ msgstr "Mauvais propriétaire du fichier .rhosts."
 msgid "bad argument"
 msgstr "Mauvais paramètre."
 
-#: time/zic.c:1173
+#: time/zic.c:1172
 msgid "blank FROM field on Link line"
 msgstr "Champ `FROM' vide dans la ligne de type `Link'."
 
-#: time/zic.c:1177
+#: time/zic.c:1176
 msgid "blank TO field on Link line"
 msgstr "Champ `TO' vide dans la ligne de type `Link'."
 
@@ -1632,36 +1656,33 @@ msgstr "Bloc libéré deux fois."
 msgid "bogus mcheck_status, library is buggy"
 msgstr "Statut de `mcheck_status' erroné, la librarie est erronée."
 
-#: sunrpc/pmap_rmt.c:177
+#: sunrpc/pmap_rmt.c:179
 msgid "broadcast: ioctl (get interface configuration)"
 msgstr "Diffusion: ioctl (a obtenu la configuration de l'interface)"
 
-#: sunrpc/pmap_rmt.c:184
+#: sunrpc/pmap_rmt.c:186
 msgid "broadcast: ioctl (get interface flags)"
 msgstr "Diffusion: ioctl (a obtenu la valeur des fanions de l'interface)"
 
-#: sunrpc/svc_udp.c:398
+#: sunrpc/svc_udp.c:402
 msgid "cache_set: victim not found"
 msgstr "cache_set: victime non repérée."
 
-#: time/zic.c:1686
+#: time/zic.c:1685
 msgid "can't determine time zone abbrevation to use just after until time"
 msgstr ""
 "Ne peut déterminer le nom abrégé du fuseau horaire à utiliser\n"
 "pour rencontrer la condition `jusqu'au temps voulue'."
 
 #: sunrpc/svc_simple.c:64
-#, c-format
 msgid "can't reassign procedure number %d\n"
 msgstr "Ne peut réassigner le numéro de procédure %d.\n"
 
-#: locale/programs/localedef.c:281
-#, c-format
+#: locale/programs/localedef.c:287
 msgid "cannot `stat' locale file `%s'"
 msgstr "Ne peut effectuer l'évaluation `stat' du fichier local `%s'."
 
 #: locale/programs/ld-collate.c:1313
-#, c-format
 msgid "cannot insert collation element `%.*s'"
 msgstr "Ne peut insérer l'élément de fusionnement `%.*s'."
 
@@ -1670,32 +1691,27 @@ msgid "cannot insert into result table"
 msgstr "Ne peut effectuer une insertion dans la table des résultats."
 
 #: locale/programs/ld-collate.c:1165 locale/programs/ld-collate.c:1207
-#, c-format
 msgid "cannot insert new collating symbol definition: %s"
-msgstr "Ne peut insérer une nouvelle définition de symbole de fusionnement: %s."
+msgstr ""
+"Ne peut insérer une nouvelle définition de symbole de fusionnement: %s."
 
-#: db/makedb.c:149
-#, c-format
+#: db/makedb.c:161
 msgid "cannot open database file `%s': %s"
 msgstr "Ne peut ouvrir le fichier de base de données `%s': %s."
 
-#: catgets/gencat.c:250 db/makedb.c:168
-#, c-format
+#: catgets/gencat.c:259 db/makedb.c:180
 msgid "cannot open input file `%s'"
 msgstr "Ne peut ouvrir le fichier d'entrée `%s'."
 
-#: locale/programs/localedef.c:215
-#, c-format
+#: locale/programs/localedef.c:221
 msgid "cannot open locale definition file `%s'"
 msgstr "Ne peut ouvrir le fichier des localisations `%s'."
 
-#: catgets/gencat.c:755 catgets/gencat.c:796 db/makedb.c:177
-#, c-format
+#: catgets/gencat.c:764 catgets/gencat.c:805 db/makedb.c:189
 msgid "cannot open output file `%s'"
 msgstr "Ne peut ouvrir le fichier de sortie `%s'."
 
 #: locale/programs/locfile.c:986
-#, c-format
 msgid "cannot open output file `%s' for category `%s'"
 msgstr "Ne peut ouvrir le fichier de sortie `%s' de catégorie `%s'."
 
@@ -1703,71 +1719,62 @@ msgstr "Ne peut ouvrir le fichier de sortie `%s' de catégorie `%s'."
 msgid "cannot process order specification"
 msgstr "Ne peut traiter la spécification d'ordonnancement."
 
-#: locale/programs/locale.c:293
-#, c-format
+#: locale/programs/locale.c:303
 msgid "cannot read character map directory `%s'"
 msgstr "Ne peut lire via le répertoire de la table des caractères `%s'."
 
-#: locale/programs/locale.c:268
-#, c-format
+#: locale/programs/locale.c:278
 msgid "cannot read locale directory `%s'"
 msgstr "Ne peut lire via le répertoire des définitions localisées `%s'."
 
-#: locale/programs/localedef.c:303
-#, c-format
+#: locale/programs/localedef.c:309
 msgid "cannot read locale file `%s'"
 msgstr "Ne peut lire le fichier des définitions localisées `%s'."
 
-#: locale/programs/localedef.c:328
-#, c-format
+#: locale/programs/localedef.c:334
 msgid "cannot write output files to `%s'"
 msgstr "Ne peut écrire dans les fichiers de sortie vers `%s'."
 
-#: locale/programs/localedef.c:371
+#: locale/programs/localedef.c:377
 msgid "category data requested more than once: should not happen"
-msgstr "Catégorie de données requises plus d'une fois: n'aurait pas dû se produire."
+msgstr ""
+"Catégorie de données requises plus d'une fois: n'aurait pas dû se produire."
 
-#: locale/programs/ld-ctype.c:264
-#, c-format
+#: locale/programs/ld-ctype.c:265
 msgid "character %s'%s' in class `%s' must be in class `%s'"
 msgstr "Caractère %s'%s' de la classe `%s' doit être dans la classe `%s'."
 
-#: locale/programs/ld-ctype.c:288
-#, c-format
+#: locale/programs/ld-ctype.c:289
 msgid "character %s'%s' in class `%s' must not be in class `%s'"
-msgstr "Caractère %s'%s' de la classe `%s' ne doit pas être dans la classe `%s'."
+msgstr ""
+"Caractère %s'%s' de la classe `%s' ne doit pas être dans la classe `%s'."
 
-#: locale/programs/ld-ctype.c:309
+#: locale/programs/ld-ctype.c:310
 msgid "character <SP> not defined in character map"
 msgstr "Caractère <SP> non défini dans la table des caractères."
 
-#: locale/programs/ld-ctype.c:1140
-#, c-format
+#: locale/programs/ld-ctype.c:1141
 msgid "character `%c' not defined while needed as default value"
 msgstr "Caractère `%c' non défini alors qu'attendu comme valeur par défaut."
 
-#: locale/programs/ld-ctype.c:938 locale/programs/ld-ctype.c:1001
-#: locale/programs/ld-ctype.c:1009 locale/programs/ld-ctype.c:1017
-#: locale/programs/ld-ctype.c:1025 locale/programs/ld-ctype.c:1033
-#: locale/programs/ld-ctype.c:1041 locale/programs/ld-ctype.c:1067
-#: locale/programs/ld-ctype.c:1075 locale/programs/ld-ctype.c:1113
-#: locale/programs/ld-ctype.c:1151
-#, c-format
+#: locale/programs/ld-ctype.c:939 locale/programs/ld-ctype.c:1002
+#: locale/programs/ld-ctype.c:1010 locale/programs/ld-ctype.c:1018
+#: locale/programs/ld-ctype.c:1026 locale/programs/ld-ctype.c:1034
+#: locale/programs/ld-ctype.c:1042 locale/programs/ld-ctype.c:1068
+#: locale/programs/ld-ctype.c:1076 locale/programs/ld-ctype.c:1114
+#: locale/programs/ld-ctype.c:1152
 msgid "character `%s' not defined while needed as default value"
 msgstr "Caractère `%s' non défini alors qu'attendu comme valeur par défaut."
 
-#: locale/programs/ld-ctype.c:800
-#, c-format
+#: locale/programs/ld-ctype.c:801
 msgid "character class `%s' already defined"
 msgstr "Classe de caractères `%s' déjà définie."
 
-#: locale/programs/ld-ctype.c:832
-#, c-format
+#: locale/programs/ld-ctype.c:833
 msgid "character map `%s' already defined"
 msgstr "Table de caractères `%s' déjà définie."
 
 #: locale/programs/charmap.c:76
-#, c-format
 msgid "character map file `%s' not found"
 msgstr "Fichier de la table des caractères `%s' non repérable."
 
@@ -1776,28 +1783,22 @@ msgid "clnt_raw.c - Fatal header serialization error."
 msgstr "clnt_raw.c - erreur fatale de sérialisation d'en-tête."
 
 #: locale/programs/ld-collate.c:1328
-#, c-format
 msgid "collation element `%.*s' appears more than once: ignore line"
-msgstr "Élément de fusionnement `%.*s' apparaît plus d'une fois: ligne ignorée."
+msgstr ""
+"Élément de fusionnement `%.*s' apparaît plus d'une fois: ligne ignorée."
 
 #: locale/programs/ld-collate.c:1346
 msgid "collation symbol `.*s' appears more than once: ignore line"
 msgstr "Symbole de fusionnement `.*s' apparaît plus d'une fois: ligne ignorée."
 
 #: locale/programs/locfile.c:522
-#, c-format
 msgid "collation symbol expected after `%s'"
 msgstr "Symbole de fusionnement attendu après `%s'."
 
-#: inet/rcmd.c:112
-#, c-format
+#: inet/rcmd.c:114
 msgid "connect to address %s: "
 msgstr "Connexion établie à l'adresse %s: "
 
-#: sunrpc/rpc_scan.c:109
-msgid "constant or identifier expected"
-msgstr "Constante ou identificateur attendu."
-
 #: sunrpc/svc_simple.c:70
 msgid "couldn't create an rpc server\n"
 msgstr "Ne peut créer un serveur rpc.\n"
@@ -1811,21 +1812,30 @@ msgid "couldn't do udp_create\n"
 msgstr "Ne peut exécuter udp_create.\n"
 
 #: sunrpc/svc_simple.c:77
-#, c-format
 msgid "couldn't register prog %d vers %d\n"
 msgstr "Ne peut enregistrer le programme %d de version %d.\n"
 
 #: locale/programs/charmap.c:86
-#, c-format
 msgid "default character map file `%s' not found"
 msgstr "Fichier de la table des caractères par défaut `%s' non repéré."
 
-#: sunrpc/rpc_parse.c:77
-msgid "definition keyword expected"
-msgstr "Définition de mot clé attendu."
+#: locale/programs/ld-time.c:154
+msgid ""
+"direction flag in string %d in `era' field in category `%s' is not '+' nor "
+"'-'"
+msgstr ""
+"L'indication de direction dans la chaîne %d du champ `era' de\n"
+"catégorie `%s' n'est pas un `+' ni un `-'."
+
+#: locale/programs/ld-time.c:164
+msgid ""
+"direction flag in string %d in `era' field in category `%s' is not a single "
+"character"
+msgstr ""
+"L'indication de direction dans la chaîne %d du champ `era' de\n"
+"catégorie `%s' n'est pas un caractères simple."
 
 #: locale/programs/charset.c:87 locale/programs/charset.c:132
-#, c-format
 msgid "duplicate character name `%s'"
 msgstr "Duplicité du nom de caractère `%s'."
 
@@ -1834,28 +1844,26 @@ msgid "duplicate collating element definition"
 msgstr "Duplicité de la définition d'élément de fusionnement."
 
 #: locale/programs/ld-collate.c:1286
-#, c-format
 msgid "duplicate definition for character `%.*s'"
 msgstr "Duplicité de la définition du caractère `%.*s'."
 
-#: db/makedb.c:295
+#: db/makedb.c:310
 msgid "duplicate key"
 msgstr "Duplicité de clé."
 
-#: catgets/gencat.c:369
+#: catgets/gencat.c:378
 msgid "duplicate set definition"
 msgstr "Duplicité de la définition d'ensemble."
 
-#: time/zic.c:966
-#, c-format
+#: time/zic.c:965
 msgid "duplicate zone name %s (file \"%s\", line %d)"
 msgstr "Duplicité du nom de zone  %s (fichier \"%s\", ligne %d)."
 
-#: catgets/gencat.c:532
+#: catgets/gencat.c:541
 msgid "duplicated message identifier"
 msgstr "Duplicité de l'identificateur de message."
 
-#: catgets/gencat.c:505
+#: catgets/gencat.c:514
 msgid "duplicated message number"
 msgstr "Duplicité du numéro de message"
 
@@ -1863,19 +1871,19 @@ msgstr "Duplicité du numéro de message"
 msgid "empty weight name: line ignored"
 msgstr "Nom du poids vide: ligne ignorée."
 
-#: sunrpc/svc_udp.c:344
+#: sunrpc/svc_udp.c:348
 msgid "enablecache: cache already enabled"
 msgstr "enablecache: cache déjà activée."
 
-#: sunrpc/svc_udp.c:349
+#: sunrpc/svc_udp.c:353
 msgid "enablecache: could not allocate cache"
 msgstr "enablecache: ne peut allouer une cache."
 
-#: sunrpc/svc_udp.c:356
+#: sunrpc/svc_udp.c:360
 msgid "enablecache: could not allocate cache data"
 msgstr "enablecache: ne peut allouer une cache de données."
 
-#: sunrpc/svc_udp.c:362
+#: sunrpc/svc_udp.c:366
 msgid "enablecache: could not allocate cache fifo"
 msgstr "enablecache: ne peut allouer une cache de type fifo."
 
@@ -1885,7 +1893,9 @@ msgstr "Le noeud final de l'intervalle d'ellipse est plus grand que l'initial."
 
 #: locale/programs/ld-collate.c:1148
 msgid "error while inserting collation element into hash table"
-msgstr "Erreur durant l'insertion d'un élément de fusionnement dans la table de hachage."
+msgstr ""
+"Erreur durant l'insertion d'un élément de fusionnement dans la table de "
+"hachage."
 
 #: locale/programs/ld-collate.c:1160
 msgid "error while inserting to hash table"
@@ -1895,41 +1905,19 @@ msgstr "Erreur lors de l'insertion dans la table de hachage."
 msgid "expect string argument for `copy'"
 msgstr "Chaîne attendue pour le paramètre de `copy'."
 
-#: sunrpc/rpc_util.c:300
-#, c-format
-msgid "expected '%s'"
-msgstr "attendu '%s'"
-
-#: sunrpc/rpc_util.c:312
-#, c-format
-msgid "expected '%s' or '%s'"
-msgstr "attendu '%s' ou '%s'"
-
-#: sunrpc/rpc_util.c:325
-#, c-format
-msgid "expected '%s', '%s' or '%s'"
-msgstr "attendu '%s', '%s' ou '%s'"
-
-#: time/zic.c:857
+#: time/zic.c:856
 msgid "expected continuation line not found"
 msgstr "Ligne de continuation attendue, non repérée."
 
-#: sunrpc/rpc_parse.c:384
-msgid "expected type specifier"
-msgstr "Spécification de type attendu."
-
 #: locale/programs/locfile.c:1010
-#, c-format
 msgid "failure while writing data for category `%s'"
 msgstr "Échec durant l'écriture des données de catégorie `%s'."
 
 #: locale/programs/ld-monetary.c:154 locale/programs/ld-numeric.c:95
-#, c-format
 msgid "field `%s' in category `%s' not defined"
 msgstr "Champ `%s' de catégorie `%s' n'est pas défini."
 
 #: locale/programs/ld-messages.c:81 locale/programs/ld-messages.c:102
-#, c-format
 msgid "field `%s' in category `%s' undefined"
 msgstr "Champ `%s' de catégorie `%s' indéfini."
 
@@ -1945,15 +1933,36 @@ msgstr "Rebut à la fin du caractère du code de spécification."
 msgid "garbage at end of digit"
 msgstr "Rebut à la fin des chiffres."
 
+#: locale/programs/ld-time.c:183
+msgid ""
+"garbage at end of offset value in string %d in `era' field in category `%s'"
+msgstr ""
+"Rebut à la fin de la valeur de saut dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
+
+#: locale/programs/ld-time.c:238
+msgid ""
+"garbage at end of starting date in string %d in `era' field in category `%s'"
+msgstr ""
+"Rebut à la fin de la date finale dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
+
+#: locale/programs/ld-time.c:310
+msgid ""
+"garbage at end of stopping date in string %d in `era' field in category `%s'"
+msgstr ""
+"Rebut à la fin de la date finale dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
+
 #: sunrpc/get_myaddr.c:73
 msgid "get_myaddress: ioctl (get interface configuration)"
 msgstr "get_myaddress: ioctl (a obtenu la configuration de l'interface)."
 
-#: time/zic.c:1150
+#: time/zic.c:1149
 msgid "illegal CORRECTION field on Leap line"
 msgstr "CORRECTION illégale du champ dans la ligne de type `Leap'."
 
-#: time/zic.c:1154
+#: time/zic.c:1153
 msgid "illegal Rolling/Stationary field on Leap line"
 msgstr "Champ `Rolling/Stationary' illégal sur la ligne de type `Leap'."
 
@@ -1961,10 +1970,6 @@ msgstr "Champ `Rolling/Stationary' illégal sur la ligne de type `Leap'."
 msgid "illegal character constant in string"
 msgstr "Caractère illégal de constante dans la chaîne."
 
-#: sunrpc/rpc_scan.c:281
-msgid "illegal character in file: "
-msgstr "Caractère illégal dans le fichier: "
-
 #: locale/programs/ld-collate.c:1115
 msgid "illegal collation element"
 msgstr "Élément de fusionnement illégal."
@@ -1985,86 +1990,99 @@ msgstr "Séquence d'échappement illégale à la fin de la chaîne."
 msgid "illegal names for character range"
 msgstr "Nom illégal pour un intervalle de caractères."
 
-#: sunrpc/rpc_parse.c:146
-msgid "illegal result type"
-msgstr "Résultat de type illégal."
+#: locale/programs/ld-time.c:176
+msgid "illegal number for offset in string %d in `era' field in category `%s'"
+msgstr ""
+"Nombre illégal pour la valeur de saut dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
 
-#: catgets/gencat.c:342 catgets/gencat.c:419
+#: catgets/gencat.c:351 catgets/gencat.c:428
 msgid "illegal set number"
 msgstr "Numéro d'ensemble illégal."
 
-#: locale/programs/ld-ctype.c:806
-#, c-format
+#: locale/programs/ld-time.c:230
+msgid "illegal starting date in string %d in `era' field in category `%s'"
+msgstr ""
+"Date finale illégale dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
+
+#: locale/programs/ld-time.c:302
+msgid "illegal stopping date in string %d in `era' field in category `%s'"
+msgstr ""
+"Date finale illégale dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
+
+#: locale/programs/ld-ctype.c:807
 msgid "implementation limit: no more than %d character classes allowed"
-msgstr "Limite d'impantation: pas plus de %d classes de caractères sont permises."
+msgstr ""
+"Limite d'impantation: pas plus de %d classes de caractères sont permises."
 
-#: locale/programs/ld-ctype.c:838
-#, c-format
+#: locale/programs/ld-ctype.c:839
 msgid "implementation limit: no more than %d character maps allowed"
-msgstr "Limite d'impantation: pas plus de %d tables de caractères sont permises."
+msgstr ""
+"Limite d'impantation: pas plus de %d tables de caractères sont permises."
 
-#: db/makedb.c:151
+#: db/makedb.c:163
 msgid "incorrectly formatted file"
 msgstr "Fichier incorrectement formaté."
 
-#: time/zic.c:815
+#: time/zic.c:814
 msgid "input line of unknown type"
 msgstr "Ligne d'entrée de type inconnu."
 
-#: time/zic.c:1734
+#: time/zic.c:1733
 msgid "internal error - addtype called with bad isdst"
 msgstr "Erreur interne - addtype appellé avec un mauvais bloc isdst."
 
-#: time/zic.c:1742
+#: time/zic.c:1741
 msgid "internal error - addtype called with bad ttisgmt"
 msgstr "Erreur interne - addtype appellé avec un mauvais bloc ttisgmt."
 
-#: time/zic.c:1738
+#: time/zic.c:1737
 msgid "internal error - addtype called with bad ttisstd"
 msgstr "Erreur interne - addtype appellé avec un mauvais bloc ttisstd."
 
-#: locale/programs/ld-ctype.c:300
-#, c-format
+#: locale/programs/ld-ctype.c:301
 msgid "internal error in %s, line %u"
-msgstr "Erreur interne dans %s, ligne %u"
+msgstr "Erreur interne dans %s, ligne %u."
 
-#: time/zic.c:1022
+#: time/zic.c:1021
 msgid "invalid GMT offset"
 msgstr "Décalage relatif GMT invalide."
 
-#: time/zic.c:1025
+#: time/zic.c:1024
 msgid "invalid abbreviation format"
 msgstr "Format d'abréviation invalide."
 
-#: time/zic.c:1115 time/zic.c:1314 time/zic.c:1328
+#: time/zic.c:1114 time/zic.c:1313 time/zic.c:1327
 msgid "invalid day of month"
 msgstr "Jour du mois invalide."
 
-#: time/zic.c:1273
+#: time/zic.c:1272
 msgid "invalid ending year"
 msgstr "Année finale invalide."
 
-#: time/zic.c:1087
+#: time/zic.c:1086
 msgid "invalid leaping year"
 msgstr "Année bissextile invalide."
 
-#: time/zic.c:1102 time/zic.c:1205
+#: time/zic.c:1101 time/zic.c:1204
 msgid "invalid month name"
 msgstr "Nom de mois invalide."
 
-#: time/zic.c:921
+#: time/zic.c:920
 msgid "invalid saved time"
 msgstr "Temps sauvegardé invalide."
 
-#: time/zic.c:1253
+#: time/zic.c:1252
 msgid "invalid starting year"
 msgstr "Année initiale invalide."
 
-#: time/zic.c:1131 time/zic.c:1233
+#: time/zic.c:1130 time/zic.c:1232
 msgid "invalid time of day"
 msgstr "Heure du jour invalide."
 
-#: time/zic.c:1319
+#: time/zic.c:1318
 msgid "invalid weekday name"
 msgstr "Nom du jour de semaine invalide."
 
@@ -2074,20 +2092,22 @@ msgstr "La ligne après l'ellipse doit contenir la définition d'un caractère."
 
 #: locale/programs/ld-collate.c:1390
 msgid "line before ellipsis does not contain definition for character constant"
-msgstr "La ligne avant l'ellipse ne doit pas contenir la définition d'une constante de caractères."
+msgstr ""
+"La ligne avant l'ellipse ne doit pas contenir la définition d'une constante "
+"de caractères."
 
-#: time/zic.c:795
+#: time/zic.c:794
 msgid "line too long"
 msgstr "Ligne trop longue."
 
-#: locale/programs/localedef.c:275
-#, c-format
+#: locale/programs/localedef.c:281
 msgid "locale file `%s', used in `copy' statement, not found"
-msgstr "Fichier localisé `%s', utilisé dans la déclaration de `copy', non repéré."
+msgstr ""
+"Fichier localisé `%s', utilisé dans la déclaration de `copy', non repéré."
 
-#: catgets/gencat.c:600
+#: catgets/gencat.c:609
 msgid "malformed line ignored"
-msgstr "Ligne malformée ignorée."
+msgstr "Ligne incorrecte ignorée."
 
 #: malloc/mcheck.c:183
 msgid "memory clobbered before allocated block"
@@ -2100,7 +2120,7 @@ msgstr "Mémoire écrasée après la fin du bloc alloué."
 #: locale/programs/ld-collate.c:167 locale/programs/ld-collate.c:173
 #: locale/programs/ld-collate.c:177 locale/programs/ld-collate.c:1438
 #: locale/programs/ld-collate.c:1467 locale/programs/locfile.c:940
-#: locale/programs/xmalloc.c:64 posix/getconf.c:174
+#: locale/programs/xmalloc.c:68 posix/getconf.c:181
 msgid "memory exhausted"
 msgstr "Mémoire épuisée."
 
@@ -2108,25 +2128,31 @@ msgstr "Mémoire épuisée."
 msgid "memory is consistent, library is buggy"
 msgstr "Mémoire consistente, la librairie est fautive."
 
-#: time/zic.c:916
+#: locale/programs/ld-time.c:348
+msgid "missing era format in string %d in `era' field in category `%s'"
+msgstr ""
+"Format de type era manquant dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
+
+#: locale/programs/ld-time.c:337
+msgid "missing era name in string %d in `era' fieldin category `%s'"
+msgstr ""
+"Nom de type era manquant dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
+
+#: time/zic.c:915
 msgid "nameless rule"
 msgstr "Règle sans nom."
 
 #: sunrpc/svc_simple.c:140
-#, c-format
 msgid "never registered prog %d\n"
 msgstr "Le programme %d n'a jamais été enregistré.\n"
 
-#: sunrpc/rpc_parse.c:305 sunrpc/rpc_parse.c:313
-msgid "no array-of-pointer declarations -- use typedef"
-msgstr "Pas de déclaration `array-of-pointer' -- utiliser typedef."
-
 #: locale/programs/ld-messages.c:95 locale/programs/ld-messages.c:116
-#, c-format
 msgid "no correct regular expression for field `%s' in category `%s': %s"
 msgstr "Expression reguliere incorrecte du champ `%s' de catégorie `%s': %s"
 
-#: time/zic.c:2060
+#: time/zic.c:2059
 msgid "no day in month matches rule"
 msgstr "Pas de jour dans les règles de concordance."
 
@@ -2138,7 +2164,7 @@ msgstr "Pas de définition de type `UNDEFINED'."
 msgid "no other keyword shall be specified when `copy' is used"
 msgstr "Aucun autre mot clé ne doit être spécifié lorsque `copy' est utilisé."
 
-#: locale/programs/localedef.c:334
+#: locale/programs/localedef.c:340
 msgid "no output file produced because warning were issued"
 msgstr "Aucun fichier de sortie généré en raison d'un avertissement déjà émis."
 
@@ -2153,7 +2179,6 @@ msgid "no symbolic name given for end of range"
 msgstr "Pas de nom symbolique fourni pour la fin de l'intervalle."
 
 #: locale/programs/ld-collate.c:244
-#, c-format
 msgid "no weight defined for symbol `%s'"
 msgstr "Pas de poids défini pour le symbole `%s'."
 
@@ -2175,42 +2200,32 @@ msgstr "portmap ne peut établir un pairage (bind)."
 msgid "portmap cannot create socket"
 msgstr "portmap ne créer un socket"
 
-#: sunrpc/rpc_scan.c:456 sunrpc/rpc_scan.c:464
-msgid "preprocessor error"
-msgstr "Erreur du préprocesseur."
-
-#: db/makedb.c:311
-#, c-format
+#: db/makedb.c:326
 msgid "problems while reading `%s'"
 msgstr "Problèmes lors de la lecture de `%s'"
 
 #: sunrpc/rpcinfo.c:222 sunrpc/rpcinfo.c:350
-#, c-format
 msgid "program %lu is not available\n"
 msgstr "Le programme %lu n'est pas disponible.\n"
 
 #: sunrpc/rpcinfo.c:245 sunrpc/rpcinfo.c:282 sunrpc/rpcinfo.c:371
 #: sunrpc/rpcinfo.c:408 sunrpc/rpcinfo.c:429 sunrpc/rpcinfo.c:462
-#, c-format
 msgid "program %lu version %lu is not available\n"
 msgstr "Le programme %lu de version %lu n'est pas disponible.\n"
 
 #: sunrpc/rpcinfo.c:466
-#, c-format
 msgid "program %lu version %lu ready and waiting\n"
 msgstr "Le programme %lu de version %lu est prêt et en attente.\n"
 
-#: inet/rcmd.c:154
-#, c-format
+#: inet/rcmd.c:157
 msgid "rcmd: select (setting up stderr): %s\n"
 msgstr "rcmd: sélection (configuration de stderr): %s.\n"
 
-#: inet/rcmd.c:86
+#: inet/rcmd.c:87
 msgid "rcmd: socket: All ports in use\n"
 msgstr "rcmd: socket: tous les ports sont occupés.\n"
 
-#: inet/rcmd.c:141
-#, c-format
+#: inet/rcmd.c:144
 msgid "rcmd: write (setting up stderr): %s\n"
 msgstr "rcmd: écriture (configuration de stderr): %s.\n"
 
@@ -2218,27 +2233,24 @@ msgstr "rcmd: écriture (configuration de stderr): %s.\n"
 msgid "registerrpc: out of memory\n"
 msgstr "registerrpc: mémoire épuisée.\n"
 
-#: time/zic.c:1795
+#: time/zic.c:1794
 msgid "repeated leap second moment"
 msgstr "Répétition du délai une seconde fois."
 
 #: sunrpc/rpcinfo.c:659
-#, c-format
 msgid "rpcinfo: %s is unknown host\n"
 msgstr "rpcinfo: %s est un hôte inconnu.\n"
 
 #: sunrpc/rpcinfo.c:626
-#, c-format
 msgid "rpcinfo: %s is unknown service\n"
 msgstr "rpcinfo: %s est un service inconnu.\n"
 
 #: sunrpc/rpcinfo.c:600
-#, c-format
 msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
-msgstr "rpcinfo: ne peut éliminer l'enregistrement du programme %s de version %s.\n"
+msgstr ""
+"rpcinfo: ne peut éliminer l'enregistrement du programme %s de version %s.\n"
 
 #: sunrpc/rpcinfo.c:576
-#, c-format
 msgid "rpcinfo: broadcast failed: %s\n"
 msgstr "rpcinfo: échec de diffusion: %s.\n"
 
@@ -2254,29 +2266,31 @@ msgstr "rpcinfo: ne peut contacter le convertisseur de ports."
 msgid "run_svc returned unexpectedly\n"
 msgstr "run_svc a retourné de façon imprévue.\n"
 
-#: time/zic.c:709 time/zic.c:711
+#: time/zic.c:708 time/zic.c:710
 msgid "same rule name in multiple files"
 msgstr "Même nom de règle dans plusieurs fichiers."
 
-#: inet/rcmd.c:158
+#: inet/rcmd.c:161
 msgid "select: protocol failure in circuit setup\n"
 msgstr "select: échec de protocole dans la configuration du circuit.\n"
 
-#: inet/rcmd.c:176
-msgid "socket: protocol failure in circuit setup.\n"
+#: inet/rcmd.c:179
+msgid "socket: protocol failure in circuit setup\n"
 msgstr "socket: échec de protocole dans la configuration du circuit.\n"
 
 #: locale/programs/locfile.c:600
 msgid "sorting order `forward' and `backward' are mutually exclusive"
-msgstr "Les options de tri `forward' et `backward' sont mutuellement exclusives."
+msgstr ""
+"Les options de tri `forward' et `backward' sont mutuellement exclusives."
 
 #: locale/programs/ld-collate.c:1567 locale/programs/ld-collate.c:1613
 msgid ""
 "specification of sorting weight for collation symbol does not make sense"
 msgstr ""
-"La spécification de tri par le poids des symboles de fusionnement n'a aucun sens."
+"La spécification de tri par le poids des symboles de\n"
+"fusionnement n'a aucun sens."
 
-#: time/zic.c:780
+#: time/zic.c:779
 msgid "standard input"
 msgstr "entrée standard"
 
@@ -2284,36 +2298,48 @@ msgstr "entrée standard"
 msgid "standard output"
 msgstr "sortie standard"
 
-#: time/zic.c:1277
+#: locale/programs/ld-time.c:256
+msgid "starting date is illegal in string %d in `era' field in category `%s'"
+msgstr ""
+"Date initiale illégale dans la chaîne %d du champ `era'\n"
+"de catégorie `%s'."
+
+#: time/zic.c:1276
 msgid "starting year greater than ending year"
 msgstr "Année initiale plus grande que l'année finale."
 
-#: sunrpc/svc_tcp.c:199 sunrpc/svc_tcp.c:204
+#: locale/programs/ld-time.c:328
+msgid "stopping date is illegal in string %d in `era' field in category `%s'"
+msgstr ""
+"Date finale illégale dans la chaîne %d du champ `era'\\n\"\n"
+"de catégorie `%s'."
+
+#: sunrpc/svc_tcp.c:201 sunrpc/svc_tcp.c:206
 msgid "svc_tcp: makefd_xprt: out of memory\n"
 msgstr "svc_tcp: makefd_xprt: mémoire épuisée.\n"
 
-#: sunrpc/svc_tcp.c:147
+#: sunrpc/svc_tcp.c:149
 msgid "svctcp_.c - cannot getsockname or listen"
-msgstr "svctcp_.c - ne peut trouver le nom du socket par getsockname() ou listen()."
+msgstr ""
+"svctcp_.c - ne peut trouver le nom du socket par getsockname() ou listen()."
 
-#: sunrpc/svc_tcp.c:134
+#: sunrpc/svc_tcp.c:136
 msgid "svctcp_.c - udp socket creation problem"
 msgstr "svctcp_.c - problème de création d'un socket udp."
 
-#: sunrpc/svc_tcp.c:154 sunrpc/svc_tcp.c:161
+#: sunrpc/svc_tcp.c:156 sunrpc/svc_tcp.c:163
 msgid "svctcp_create: out of memory\n"
 msgstr "svctcp_create: mémoire épuisée.\n"
 
-#: sunrpc/svc_udp.c:119
+#: sunrpc/svc_udp.c:123
 msgid "svcudp_create - cannot getsockname"
 msgstr "svcudp_create - ne peut trouver le nom du socket par getsockname()."
 
-#: sunrpc/svc_udp.c:107
+#: sunrpc/svc_udp.c:111
 msgid "svcudp_create: socket creation problem"
 msgstr "svcudp_create: problème de création du socket."
 
 #: locale/programs/ld-collate.c:1190
-#, c-format
 msgid ""
 "symbol for multicharacter collating element `%.*s' duplicates element "
 "definition"
@@ -2322,7 +2348,6 @@ msgstr ""
 "provoque la duplication de la définition d'un élément."
 
 #: locale/programs/ld-collate.c:1063
-#, c-format
 msgid ""
 "symbol for multicharacter collating element `%.*s' duplicates other element "
 "definition"
@@ -2331,7 +2356,6 @@ msgstr ""
 "provoque la duplication d'autres définitions d'éléments."
 
 #: locale/programs/ld-collate.c:1199
-#, c-format
 msgid ""
 "symbol for multicharacter collating element `%.*s' duplicates other symbol "
 "definition"
@@ -2340,7 +2364,6 @@ msgstr ""
 "provoque la duplication d'autres définitions de symboles."
 
 #: locale/programs/ld-collate.c:1072
-#, c-format
 msgid ""
 "symbol for multicharacter collating element `%.*s' duplicates symbol "
 "definition"
@@ -2349,7 +2372,6 @@ msgstr ""
 "provoque la duplication de la définition d'un symbole."
 
 #: locale/programs/ld-collate.c:1054 locale/programs/ld-collate.c:1181
-#, c-format
 msgid ""
 "symbol for multicharacter collating element `%.*s' duplicates symbolic name "
 "in charset"
@@ -2361,7 +2383,6 @@ msgstr ""
 #: locale/programs/charmap.c:378 locale/programs/charmap.c:465
 #: locale/programs/charmap.c:511 locale/programs/charmap.c:544
 #: locale/programs/charmap.c:576
-#, c-format
 msgid "syntax error in %s definition: %s"
 msgstr "Erreur de syntaxe dans la définition de %s: %s."
 
@@ -2387,15 +2408,18 @@ msgstr "Erreur de syntaxe dans la définition du fusionnement."
 
 #: locale/programs/locfile.c:335
 msgid "syntax error in definition of LC_CTYPE category"
-msgstr "Erreur de syntaxe dans la définition d'une catégorie de type `LC_CTYPE'."
+msgstr ""
+"Erreur de syntaxe dans la définition d'une catégorie de type `LC_CTYPE'."
 
 #: locale/programs/locfile.c:278
 msgid "syntax error in definition of new character class"
-msgstr "Erreur de syntaxe dans la définition d'une nouvelle classe de caractères."
+msgstr ""
+"Erreur de syntaxe dans la définition d'une nouvelle classe de caractères."
 
 #: locale/programs/locfile.c:288
 msgid "syntax error in definition of new character map"
-msgstr "Erreur de syntaxe dans la définition d'une nouvelle table de caractères."
+msgstr ""
+"Erreur de syntaxe dans la définition d'une nouvelle table de caractères."
 
 #: locale/programs/locfile.c:873
 msgid "syntax error in message locale definition"
@@ -2407,37 +2431,40 @@ msgstr "Erreur de syntaxe dans la définition localisée des valeurs monétaires."
 
 #: locale/programs/locfile.c:811
 msgid "syntax error in numeric locale definition"
-msgstr "Erreur de syntaxe dans la définition localisée de représentation numérique."
+msgstr ""
+"Erreur de syntaxe dans la définition localisée de représentation numérique."
 
 #: locale/programs/locfile.c:722
 msgid "syntax error in order specification"
 msgstr "Erreur de syntaxe dans la spéficication de l'ordonnancement."
 
 #: locale/programs/charmap.c:195 locale/programs/charmap.c:211
-#, c-format
 msgid "syntax error in prolog: %s"
 msgstr "Erreur de syntaxe du prologue: %s."
 
 #: locale/programs/locfile.c:849
 msgid "syntax error in time locale definition"
-msgstr "Erreur de syntaxe dans la définition localisée de la représentation du temps."
+msgstr ""
+"Erreur de syntaxe dans la définition localisée de la représentation du temps."
 
 #: locale/programs/locfile.c:255
 msgid "syntax error: not inside a locale definition section"
-msgstr "Erreur de syntaxe: pas à l'intérieur d'une section de définition localisée."
+msgstr ""
+"Erreur de syntaxe: pas à l'intérieur d'une section de définition localisée."
 
-#: catgets/gencat.c:371 catgets/gencat.c:507 catgets/gencat.c:534
+#: catgets/gencat.c:380 catgets/gencat.c:516 catgets/gencat.c:543
 msgid "this is the first definition"
 msgstr "Ceci est la première définition."
 
-#: time/zic.c:1120A
-#: mro: à investiguer dans le code source
+# time/zic.c:1120A
+# mro: à investiguer dans le code source
+#: time/zic.c:1119
 msgid "time before zero"
 msgstr "Temps défini avant le zéro."
 
-#: time/zic.c:1128 time/zic.c:1960 time/zic.c:1979
+#: time/zic.c:1127 time/zic.c:1959 time/zic.c:1978
 msgid "time overflow"
-msgstr "Débordement de temps."
+msgstr "Débordement du temps alloué."
 
 #: locale/programs/charset.c:44
 msgid "too few bytes in character encoding"
@@ -2451,19 +2478,15 @@ msgstr "Trop d'octets pour l'encodage des caractères."
 msgid "too many character classes defined"
 msgstr "Trop de définitions de classes de caractères."
 
-#: sunrpc/rpc_util.c:285
-msgid "too many files!\n"
-msgstr "Trop de fichiers!\n"
-
-#: time/zic.c:1789
+#: time/zic.c:1788
 msgid "too many leap seconds"
 msgstr "Trop de délai en secondes."
 
-#: time/zic.c:1761
+#: time/zic.c:1760
 msgid "too many local time types"
 msgstr "Trop de types localisés pour la représentation du temps."
 
-#: time/zic.c:1715
+#: time/zic.c:1714
 msgid "too many transitions?!"
 msgstr "Trop de transitions définies?!"
 
@@ -2471,7 +2494,7 @@ msgstr "Trop de transitions définies?!"
 msgid "too many weights"
 msgstr "Trop de poids définis."
 
-#: time/zic.c:2083
+#: time/zic.c:2082
 msgid "too many, or too long, time zone abbreviations"
 msgstr "Trop ou de trop longues abréviations de fuseaux horaires."
 
@@ -2480,7 +2503,6 @@ msgid "trailing garbage at end of line"
 msgstr "Suffixe en rebut à la fin de la ligne."
 
 #: sunrpc/svc_simple.c:132
-#, c-format
 msgid "trouble replying to prog %d\n"
 msgstr "Problème à répondre au programme %d.\n"
 
@@ -2488,18 +2510,17 @@ msgstr "Problème à répondre au programme %d.\n"
 msgid "two lines in a row containing `...' are not allowed"
 msgstr "Deux lignes consécutives contenant `...' ne sont pas permises."
 
-#: time/zic.c:1284
+#: time/zic.c:1283
 msgid "typed single year"
 msgstr "Une seule année fournie."
 
 #: locale/programs/charmap.c:617 locale/programs/charmap.c:628
-#, c-format
 msgid "unknown character `%s'"
 msgstr "Caractère inconnu `%s'."
 
 #: locale/programs/ld-messages.c:193 locale/programs/ld-messages.c:204
 #: locale/programs/ld-messages.c:215 locale/programs/ld-messages.c:226
-#, c-format
+#: locale/programs/ld-time.c:696
 msgid "unknown character in field `%s' of category `%s'"
 msgstr "Caractère inconnu dans le champ `%s' de catégorie `%s'."
 
@@ -2507,27 +2528,27 @@ msgstr "Caractère inconnu dans le champ `%s' de catégorie `%s'."
 msgid "unknown collation directive"
 msgstr "Directive de fusionnement inconnue."
 
-#: catgets/gencat.c:468
-#, c-format
+#: catgets/gencat.c:477
 msgid "unknown directive `%s': line ignored"
 msgstr "Directive inconnue `%s': ligne ignorée."
 
-#: catgets/gencat.c:447
-#, c-format
+#: catgets/gencat.c:456
 msgid "unknown set `%s'"
 msgstr "Ensemble inconnu `%s'."
 
+msgid "unknown signal"
+msgstr "Signal inconnu."
+
 #: locale/programs/ld-collate.c:1366 locale/programs/ld-collate.c:1557
 #: locale/programs/ld-collate.c:1731
-#, c-format
 msgid "unknown symbol `%.*s': line ignored"
 msgstr "Symbole inconnu `%.*s': ligne ignorée."
 
-#: time/zic.c:752
+#: time/zic.c:751
 msgid "unruly zone"
 msgstr "Zone sans règle."
 
-#: catgets/gencat.c:952
+#: catgets/gencat.c:961
 msgid "unterminated message"
 msgstr "Message incomplet."
 
@@ -2535,10 +2556,6 @@ msgstr "Message incomplet."
 msgid "unterminated string"
 msgstr "Chaîne incomplète."
 
-#: sunrpc/rpc_scan.c:319
-msgid "unterminated string constant"
-msgstr "Chaîne de constante incomplète."
-
 #: locale/programs/linereader.c:385
 msgid "unterminated symbolic name"
 msgstr "Nom symbolique incomplet."
@@ -2549,35 +2566,32 @@ msgstr "Nom de poids incomplet."
 
 #: locale/programs/charset.c:119
 msgid "upper limit in range is not smaller then lower limit"
-msgstr "Limite supérieure de l'intervalle n'est pas plus petite que la limite inférieure."
-
-#: sunrpc/rpc_main.c:78
-#, c-format
-msgid "usage: %s infile\n"
-msgstr "Usage: %s fichier_d_entrée\n"
+msgstr ""
+"Limite supérieure de l'intervalle n'est pas plus petite que la limite "
+"inférieure."
 
-#: time/zic.c:2026
+#: time/zic.c:2025
 msgid "use of 2/29 in non leap-year"
 msgstr "Utiliser 2/29 pour les années non-bissextiles."
 
 #: locale/programs/charmap.c:438 locale/programs/charmap.c:492
-#, c-format
 msgid "value for %s must be an integer"
 msgstr "La valeur de %s doit être un entier."
 
 #: locale/programs/charmap.c:233
-#, c-format
 msgid "value for <%s> must lie between 1 and 4"
 msgstr "La valeur de <%s> doit être comprise entre 1 et 4."
 
 #: locale/programs/ld-monetary.c:148 locale/programs/ld-numeric.c:89
-#, c-format
 msgid "value for field `%s' in category `%s' must not be the empty string"
-msgstr "La valeur du champ `%s' de catégorie `%s' ne doit pas être un chaîne vide."
+msgstr ""
+"La valeur du champ `%s' de catégorie `%s' ne doit pas être un chaîne vide."
 
 #: locale/programs/charmap.c:245
 msgid "value of <mb_cur_max> must be greater than the value of <mb_cur_min>"
-msgstr "La valeur de <mb_cur_max> doit être plus grande que la valeur de <mb_cur_min>."
+msgstr ""
+"La valeur de <mb_cur_max> doit être plus grande que la valeur de "
+"<mb_cur_min>."
 
 #: locale/programs/ld-monetary.c:138
 msgid ""
@@ -2591,62 +2605,55 @@ msgstr ""
 msgid ""
 "value of field `int_curr_symbol' in category `LC_MONETARY' has wrong length"
 msgstr ""
-"La valeur du champ `int_curr_symbol' de catégorie `LC_MONETARY' n'a pas la bonne longueur."
+"La valeur du champ `int_curr_symbol' de catégorie `LC_MONETARY' n'a pas la "
+"bonne longueur."
 
 #: locale/programs/ld-monetary.c:370 locale/programs/ld-numeric.c:199
-#, c-format
 msgid "values for field `%s' in category `%s' must be smaller than 127"
-msgstr "Les valeurs du champ `%s' de catégorie `%s' doivent être plus petite que 127."
+msgstr ""
+"Les valeurs du champ `%s' de catégorie `%s' doivent être plus petite que 127."
 
 #: locale/programs/ld-monetary.c:366
-#, c-format
 msgid "values for field `%s' in category `%s' must not be zero"
-msgstr "Les valeurs du champ `%s' de catégorie `%s' ne doivent pas être égal à zéro."
-
-#: sunrpc/rpc_parse.c:330
-msgid "variable-length array declaration expected"
-msgstr "Déclaration attendue de tableau de type `variable-length'."
-
-#: sunrpc/rpc_parse.c:370
-msgid "voids allowed only inside union and program definitions"
-msgstr "Déclaration `voids' permises seulement à l'intérieur d'une définition d'`union' et de programme."
+msgstr ""
+"Les valeurs du champ `%s' de catégorie `%s' ne doivent pas être égal à zéro."
 
 #: login/setutent_r.c:47
 msgid "while opening UTMP file"
 msgstr "durant l'ouverture du fichier UTMP."
 
-#: catgets/gencat.c:979
+#: catgets/gencat.c:988
 msgid "while opening old catalog file"
 msgstr "durant l'ouverture du vieux fichier du catalogue."
 
-#: db/makedb.c:338
+#: db/makedb.c:353
 msgid "while reading database"
 msgstr "durant la lecture de la base de données."
 
-#: db/makedb.c:300
+#: db/makedb.c:315
 msgid "while writing data base file"
 msgstr "durant l'écriture dans le fichier de la base de données."
 
-#: db/makedb.c:130
+#: db/makedb.c:142
 msgid "wrong number of arguments"
 msgstr "Mauvais nombre de paramètres."
 
-#: time/zic.c:1078
+#: time/zic.c:1077
 msgid "wrong number of fields on Leap line"
 msgstr "Mauvais nombre de champs sur la ligne de type `Leap'."
 
-#: time/zic.c:1169
+#: time/zic.c:1168
 msgid "wrong number of fields on Link line"
 msgstr "Mauvais nombre de champs sur la ligne de type `Link'."
 
-#: time/zic.c:912
+#: time/zic.c:911
 msgid "wrong number of fields on Rule line"
 msgstr "Mauvais nombre de champs sur la ligne de type `Rule'."
 
-#: time/zic.c:982
+#: time/zic.c:981
 msgid "wrong number of fields on Zone continuation line"
 msgstr "Mauvais nombre de champs sur la ligne de type continuation de `Zone'."
 
-#: time/zic.c:940
+#: time/zic.c:939
 msgid "wrong number of fields on Zone line"
 msgstr "Mauvais nombre de champs sur la ligne de type `Zone'."
diff --git a/posix/fnmatch.c b/posix/fnmatch.c
index de45941f8f..553a968eed 100644
--- a/posix/fnmatch.c
+++ b/posix/fnmatch.c
@@ -15,13 +15,13 @@ License along with this library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-#ifdef HAVE_CONFIG_H
-#include <config.h>
+#if HAVE_CONFIG_H
+# include <config.h>
 #endif
 
 /* Enable GNU extensions in fnmatch.h.  */
 #ifndef _GNU_SOURCE
-#define	_GNU_SOURCE	1
+# define _GNU_SOURCE	1
 #endif
 
 #include <errno.h>
@@ -40,9 +40,18 @@ Cambridge, MA 02139, USA.  */
 #if defined (_LIBC) || !defined (__GNU_LIBRARY__)
 
 
-#ifndef errno
+# if defined (STDC_HEADERS) || !defined (isascii)
+#  define ISASCII(c) 1
+# else
+#  define ISASCII(c) isascii(c)
+# endif
+
+# define ISUPPER(c) (ISASCII (c) && isupper (c))
+
+
+# ifndef errno
 extern int errno;
-#endif
+# endif
 
 /* Match STRING against the filename pattern PATTERN, returning zero if
    it matches, nonzero if not.  */
@@ -56,7 +65,7 @@ fnmatch (pattern, string, flags)
   register char c;
 
 /* Note that this evalutes C many times.  */
-#define FOLD(c)	((flags & FNM_CASEFOLD) && isupper (c) ? tolower (c) : (c))
+# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))
 
   while ((c = *p++) != '\0')
     {
@@ -225,6 +234,8 @@ fnmatch (pattern, string, flags)
     return 0;
 
   return FNM_NOMATCH;
+
+# undef FOLD
 }
 
 #endif	/* _LIBC or not __GNU_LIBRARY__.  */
diff --git a/posix/regex.c b/posix/regex.c
index c277234684..4b640e6079 100644
--- a/posix/regex.c
+++ b/posix/regex.c
@@ -1144,7 +1144,7 @@ typedef struct
     char *destination;							\
     /* Must be int, so when we don't save any registers, the arithmetic	\
        of 0 + -1 isn't done as unsigned.  */				\
-    int this_reg;							\
+    unsigned this_reg;							\
     									\
     DEBUG_STATEMENT (failure_id++);					\
     DEBUG_STATEMENT (nfailure_points_pushed++);				\
@@ -1257,7 +1257,7 @@ typedef struct
 #define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\
 {									\
   DEBUG_STATEMENT (fail_stack_elt_t failure_id;)			\
-  int this_reg;								\
+  unsigned this_reg;							\
   const unsigned char *string_temp;					\
 									\
   assert (!FAIL_STACK_EMPTY ());					\
@@ -5436,7 +5436,8 @@ regerror (errcode, preg, errbuf, errbuf_size)
   size_t msg_size;
 
   if (errcode < 0
-      || errcode >= (sizeof (re_error_msgid) / sizeof (re_error_msgid[0])))
+      || errcode >= (int) (sizeof (re_error_msgid)
+			   / sizeof (re_error_msgid[0])))
     /* Only error codes returned by the rest of the code should be passed
        to this routine.  If we are given anything else, or if other regex
        code generates an invalid error code, then the program has a bug.
diff --git a/posix/unistd.h b/posix/unistd.h
index 14b11b16c0..e9754e1208 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -513,8 +513,8 @@ extern char *ttyname __P ((int __fd));
 #ifdef __USE_REENTRANT
 /* Store at most BUFLEN characters of the pathname of the terminal FD is
    open on in BUF.  Return 0 on success, -1 otherwise.  */
-extern int __ttyname_r __P ((int __fd, char *__buf, int __buflen));
-extern int ttyname_r __P ((int __fd, char *__buf, int __buflen));
+extern int __ttyname_r __P ((int __fd, char *__buf, size_t __buflen));
+extern int ttyname_r __P ((int __fd, char *__buf, size_t __buflen));
 #endif
 
 /* Return 1 if FD is a valid descriptor associated
diff --git a/pwd/fgetpwent.c b/pwd/fgetpwent.c
index 215d6e07c8..0bcc25ca6a 100644
--- a/pwd/fgetpwent.c
+++ b/pwd/fgetpwent.c
@@ -25,7 +25,11 @@ struct passwd *
 fgetpwent (FILE *stream)
 {
   static char buffer[BUFSIZ];
-  static struct passwd result;
+  static struct passwd resbuf;
+  struct passwd *result;
 
-  return __fgetpwent_r (stream, &result, buffer, sizeof buffer);
+  if (__fgetpwent_r (stream, &resbuf, buffer, sizeof buffer, &result) != 0)
+    return NULL;
+
+  return result;
 }
diff --git a/pwd/fgetpwent_r.c b/pwd/fgetpwent_r.c
index bd380bd48c..4e5fe99290 100644
--- a/pwd/fgetpwent_r.c
+++ b/pwd/fgetpwent_r.c
@@ -49,8 +49,9 @@ LINE_PARSER
 
 
 /* Read one entry from the given stream.  */
-struct passwd *
-__fgetpwent_r (FILE *stream, struct passwd *result, char *buffer, int buflen)
+int
+__fgetpwent_r (FILE *stream, struct passwd *resbuf, char *buffer,
+	       size_t buflen, struct passwd **result)
 {
   char *p;
 
@@ -58,7 +59,10 @@ __fgetpwent_r (FILE *stream, struct passwd *result, char *buffer, int buflen)
     {
       p = fgets (buffer, buflen, stream);
       if (p == NULL)
-	return NULL;
+	{
+	  *result = NULL;
+	  return errno;
+	}
 
       /* Skip leading blanks.  */
       while (isspace (*p))
@@ -66,8 +70,9 @@ __fgetpwent_r (FILE *stream, struct passwd *result, char *buffer, int buflen)
     } while (*p == '\0' || *p == '#' ||	/* Ignore empty and comment lines.  */
 	     /* Parse the line.  If it is invalid, loop to
 		get the next line of the file to parse.  */
-	     ! parse_line (p, result, (void *) buffer, buflen));
+	     ! parse_line (p, resbuf, (void *) buffer, buflen));
 
-  return result;
+  *result = resbuf;
+  return 0;
 }
 weak_alias (__fgetpwent_r, fgetpwent_r)
diff --git a/pwd/pwd.h b/pwd/pwd.h
index 9bd380a6db..14d0a9ea7f 100644
--- a/pwd/pwd.h
+++ b/pwd/pwd.h
@@ -54,7 +54,7 @@ extern FILE *__pwdopen __P ((void));
 
 /* Read a password entry from STREAM, filling in P.
    Return the `struct passwd' of P if successful, NULL on failure.  */
-extern struct passwd *__pwdread __P ((FILE * __stream, __ptr_t __p));
+extern struct passwd *__pwdread __P ((FILE *__stream, __ptr_t __p));
 
 /* Return a chunk of memory containing pre-initialized data for __pwdread.  */
 extern __ptr_t __pwdalloc __P ((void));
@@ -80,10 +80,10 @@ extern struct passwd *getpwent __P ((void));
 
 #ifdef	__USE_SVID
 /* Read an entry from STREAM.  */
-extern struct passwd *fgetpwent __P ((FILE * __stream));
+extern struct passwd *fgetpwent __P ((FILE *__stream));
 
 /* Write the given entry onto the given stream.  */
-extern int putpwent __P ((__const struct passwd * __p, FILE * __f));
+extern int putpwent __P ((__const struct passwd *__p, FILE *__f));
 #endif
 
 /* Search for an entry with a matching user ID.  */
@@ -103,35 +103,35 @@ extern struct passwd *getpwnam __P ((__const char *__name));
    may change in later versions of this library.  */
 
 #if defined(__USE_SVID) || defined(__USE_MISC)
-extern struct passwd *__getpwent_r __P ((struct passwd *__resultbuf,
-					 char *__buffer, int __buflen));
-extern struct passwd *getpwent_r __P ((struct passwd *__resultbuf,
-				       char *__buffer, int __buflen));
+extern int __getpwent_r __P ((struct passwd *__resultbuf, char *__buffer,
+			      size_t __buflen, struct passwd **__result));
+extern int getpwent_r __P ((struct passwd *__resultbuf, char *__buffer,
+			    size_t __buflen, struct passwd **__result));
 #endif
 
-extern struct passwd *__getpwuid_r __P ((__uid_t __uid,
-					 struct passwd *__resultbuf,
-					 char *__buffer, int __buflen));
-extern struct passwd *getpwuid_r __P ((__uid_t __uid,
-				       struct passwd *__resultbuf,
-				       char *__buffer, int __buflen));
+extern int __getpwuid_r __P ((__uid_t __uid, struct passwd *__resultbuf,
+			      char *__buffer, size_t __buflen,
+			      struct passwd **__result));
+extern int getpwuid_r __P ((__uid_t __uid, struct passwd *__resultbuf,
+			    char *__buffer, size_t __buflen,
+			    struct passwd **__result));
 
-extern struct passwd *__getpwnam_r __P ((__const char *__name,
-					 struct passwd *__resultbuf,
-					 char *__buffer, int __buflen));
-extern struct passwd *getpwnam_r __P ((__const char *__name,
-				       struct passwd *__resultbuf,
-				       char *__buffer, int __buflen));
+extern int __getpwnam_r __P ((__const char *__name, struct passwd *__resultbuf,
+			      char *__buffer, size_t __buflen,
+			      struct passwd **__result));
+extern int getpwnam_r __P ((__const char *__name, struct passwd *__resultbuf,
+			    char *__buffer, size_t __buflen,
+			    struct passwd **__result));
 
 
 #ifdef	__USE_SVID
 /* Read an entry from STREAM.  */
-extern struct passwd *__fgetpwent_r __P ((FILE * __stream,
-					  struct passwd *__resultbuf,
-					  char *__buffer, int __buflen));
-extern struct passwd *fgetpwent_r __P ((FILE * __stream,
-					struct passwd *__resultbuf,
-					char *__buffer, int __buflen));
+extern int __fgetpwent_r __P ((FILE * __stream, struct passwd *__resultbuf,
+			       char *__buffer, size_t __buflen,
+			       struct passwd **__result));
+extern int fgetpwent_r __P ((FILE * __stream, struct passwd *__resultbuf,
+			     char *__buffer, size_t __buflen,
+			     struct passwd **__result));
 #endif
 
 #endif	/* reentrant */
diff --git a/resolv/gethnamaddr.c b/resolv/gethnamaddr.c
index 7c3096c967..6962f59610 100644
--- a/resolv/gethnamaddr.c
+++ b/resolv/gethnamaddr.c
@@ -455,7 +455,7 @@ gethostbyname2(name, af)
 		break;
 	default:
 		__set_h_errno (NETDB_INTERNAL);
-		errno = EAFNOSUPPORT;
+		__set_errno (EAFNOSUPPORT);
 		return (NULL);
 	}
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 38622e87fe..f906edac0b 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -28,6 +28,8 @@
 /* This is necessary to make this include file properly replace the
    Sun version.  */
 #include <rpc/netdb.h>
+#define __need_size_t
+#include <stddef.h>
 
 /* Absolute file name for network data base files.  */
 #define	_PATH_HEQUIV		"/etc/hosts.equiv"
@@ -43,23 +45,30 @@ __BEGIN_DECLS
 /* Error status for non-reentrant lookup functions.  */
 extern int h_errno;
 
-#if defined __USE_REENTRANT && (!defined _LIBC || defined _LIBC_REENTRANT)
-/* Function to access thread specific `h_errno' variable.  */
+/* Function to get address of global `h_errno' variable.  */
 extern int *__h_errno_location __P ((void)) __attribute__ ((__const__));
 
-/* An alias name for above variable.  */
-extern int __h_errno;
-
-/* Use a macro to access always the thread specific `h_errno' variable.  */
-#define h_errno (*__h_errno_location ())
-
+#ifdef _LIBC
 /* Retain some binary compatibility with old libraries by having both the
    global variable and the per-thread variable set on error.  */
-#define __set_h_errno(x) (h_errno = __h_errno = (x))
-#else
-#define __set_h_errno(x) (h_errno = (x))
+# ifdef _LIBC_REENTRANT
+static inline int
+__set_h_errno (int __err)
+{
+  return *__h_errno_location () = h_errno = __err;
+}
+# else
+#  define __set_h_errno(x) (h_errno = (x))
+# endif	/* _LIBC_REENTRANT */
+#endif /* _LIBC */
+
+
+#if defined __USE_REENTRANT && (!defined _LIBC || defined _LIBC_REENTRANT)
+/* Use a macro to access always the thread specific `h_errno' variable.  */
+# define h_errno (*__h_errno_location ())
 #endif
 
+
 /* Possible values left in `h_errno'.  */
 #define	NETDB_INTERNAL	-1	/* See errno.  */
 #define	NETDB_SUCCESS	0	/* No problem.  */
@@ -122,41 +131,39 @@ extern struct hostent *gethostbyname2 __P ((__const char *__name, int __af));
    argument is a pointer to a variable which gets the value which
    would be stored in the global variable `herrno' by the
    non-reentrant functions.  */
-extern struct hostent *__gethostent_r __P ((struct hostent *__result_buf,
-					    char *__buf, int __buf_len,
-					    int *__h_errnop));
-extern struct hostent *gethostent_r __P ((struct hostent *__result_buf,
-					  char *__buf, int __buf_len,
-					  int *__h_errnop));
-
-extern struct hostent *__gethostbyaddr_r __P ((__const char *__addr, int __len,
-					       int __type,
-					       struct hostent *__result_buf,
-					       char *__buf, int __buflen,
-					       int *__h_errnop));
-extern struct hostent *gethostbyaddr_r __P ((__const char *__addr, int __len,
-					     int __type,
-					     struct hostent *__result_buf,
-					     char *__buf, int __buflen,
-					     int *__h_errnop));
-
-extern struct hostent *__gethostbyname_r __P ((__const char *__name,
-					       struct hostent *__result_buf,
-					       char *__buf, int __buflen,
-					       int *__h_errnop));
-extern struct hostent *gethostbyname_r __P ((__const char *__name,
-					     struct hostent *__result_buf,
-					     char *__buf, int __buflen,
-					     int *__h_errnop));
-
-extern struct hostent *__gethostbyname2_r __P ((__const char *__name, int __af,
-						struct hostent *__result_buf,
-						char *__buf, int __buflen,
-						int *__h_errnop));
-extern struct hostent *gethostbyname2_r __P ((__const char *__name, int __af,
-					      struct hostent *__result_buf,
-					      char *__buf, int __buflen,
-					      int *__h_errnop));
+extern int __gethostent_r __P ((struct hostent *__result_buf, char *__buf,
+				size_t __buflen, struct hostent **__result,
+				int *__h_errnop));
+extern int gethostent_r __P ((struct hostent *__result_buf, char *__buf,
+			      size_t __buflen, struct hostent **__result,
+			      int *__h_errnop));
+
+extern int __gethostbyaddr_r __P ((__const char *__addr, int __len, int __type,
+				   struct hostent *__result_buf, char *__buf,
+				   size_t __buflen, struct hostent **__result,
+				   int *__h_errnop));
+extern int gethostbyaddr_r __P ((__const char *__addr, int __len, int __type,
+				 struct hostent *__result_buf, char *__buf,
+				 size_t __buflen, struct hostent **__result,
+				 int *__h_errnop));
+
+extern int __gethostbyname_r __P ((__const char *__name,
+				   struct hostent *__result_buf, char *__buf,
+				   size_t __buflen, struct hostent **__result,
+				   int *__h_errnop));
+extern int gethostbyname_r __P ((__const char *__name,
+				 struct hostent *__result_buf, char *__buf,
+				 size_t __buflen, struct hostent **__result,
+				 int *__h_errnop));
+
+extern int __gethostbyname2_r __P ((__const char *__name, int __af,
+				    struct hostent *__result_buf, char *__buf,
+				    size_t __buflen, struct hostent **__result,
+				    int *__h_errnop));
+extern int gethostbyname2_r __P ((__const char *__name, int __af,
+				  struct hostent *__result_buf, char *__buf,
+				  size_t __buflen, struct hostent **__result,
+				  int *__h_errnop));
 #endif	/* reentrant */
 
 
@@ -196,32 +203,30 @@ extern struct netent *getnetbyname __P ((__const char *__name));
    argument is a pointer to a variable which gets the value which
    would be stored in the global variable `herrno' by the
    non-reentrant functions.  */
-extern struct netent *__getnetent_r __P ((struct netent *__result_buf,
-					  char *__buf, int __buf_len,
-					  int *__h_errnop));
-extern struct netent *getnetent_r __P ((struct netent *__result_buf,
-					char *__buf, int __buf_len,
-					int *__h_errnop));
-
-extern struct netent *__getnetbyaddr_r __P ((unsigned long int __net,
-					     int __type,
-					     struct netent *__result_buf,
-					     char *__buf, int __buflen,
-					     int *__h_errnop));
-extern struct netent *getnetbyaddr_r __P ((unsigned long int __net,
-					   int __type,
-					   struct netent *__result_buf,
-					   char *__buf, int __buflen,
-					   int *__h_errnop));
-
-extern struct netent *__getnetbyname_r __P ((__const char *__name,
-					     struct netent *__result_buf,
-					     char *__buf, int __buflen,
-					     int *__h_errnop));
-extern struct netent *getnetbyname_r __P ((__const char *__name,
-					   struct netent *__result_buf,
-					   char *__buf, int __buflen,
-					   int *__h_errnop));
+extern int __getnetent_r __P ((struct netent *__result_buf, char *__buf,
+			       size_t __buflen, struct netent **__result,
+			       int *__h_errnop));
+extern int getnetent_r __P ((struct netent *__result_buf, char *__buf,
+			     size_t __buflen, struct netent **__result,
+			     int *__h_errnop));
+
+extern int __getnetbyaddr_r __P ((unsigned long int __net, int __type,
+				  struct netent *__result_buf, char *__buf,
+				  size_t __buflen, struct netent **__result,
+				  int *__h_errnop));
+extern int getnetbyaddr_r __P ((unsigned long int __net, int __type,
+				struct netent *__result_buf, char *__buf,
+				size_t __buflen, struct netent **__result,
+				int *__h_errnop));
+
+extern int __getnetbyname_r __P ((__const char *__name,
+				  struct netent *__result_buf, char *__buf,
+				  size_t __buflen, struct netent **__result,
+				  int *__h_errnop));
+extern int getnetbyname_r __P ((__const char *__name,
+				struct netent *__result_buf, char *__buf,
+				size_t __buflen, struct netent **__result,
+				int *__h_errnop));
 #endif	/* reentrant */
 
 
@@ -258,27 +263,26 @@ extern struct servent *getservbyport __P ((int __port, __const char *__proto));
 #ifdef	__USE_REENTRANT
 /* Reentrant versions of the functions above.  The additional
    arguments specify a buffer of BUFLEN starting at BUF.  */
-extern struct servent *__getservent_r __P ((struct servent *__result_buf,
-					    char *__buf, int __buf_len));
-extern struct servent *getservent_r __P ((struct servent *__result_buf,
-					  char *__buf, int __buf_len));
-
-extern struct servent *__getservbyname_r __P ((__const char *__name,
-					       __const char *__proto,
-					       struct servent *__result_buf,
-					       char *__buf, int __buflen));
-extern struct servent *getservbyname_r __P ((__const char *__name,
-					     __const char *__proto,
-					     struct servent *__result_buf,
-					     char *__buf, int __buflen));
-
-extern struct servent *__getservbyport_r __P ((int __port,
-					       __const char *__proto,
-					       struct servent *__result_buf,
-					       char *__buf, int __buflen));
-extern struct servent *getservbyport_r __P ((int __port, __const char *__proto,
-					     struct servent *__result_buf,
-					     char *__buf, int __buflen));
+extern int __getservent_r __P ((struct servent *__result_buf, char *__buf,
+				size_t __buflen, struct servent **__result));
+extern int getservent_r __P ((struct servent *__result_buf, char *__buf,
+			      size_t __buflen, struct servent **__result));
+
+extern int __getservbyname_r __P ((__const char *__name, __const char *__proto,
+				   struct servent *__result_buf, char *__buf,
+				   size_t __buflen,
+				   struct servent **__result));
+extern int getservbyname_r __P ((__const char *__name, __const char *__proto,
+				 struct servent *__result_buf, char *__buf,
+				 size_t __buflen, struct servent **__result));
+
+extern int __getservbyport_r __P ((int __port, __const char *__proto,
+				   struct servent *__result_buf, char *__buf,
+				   size_t __buflen,
+				   struct servent **__result));
+extern int getservbyport_r __P ((int __port, __const char *__proto,
+				 struct servent *__result_buf, char *__buf,
+				 size_t __buflen, struct servent **__result));
 #endif	/* reentrant */
 
 
@@ -311,24 +315,26 @@ extern struct protoent *getprotobynumber __P ((int __proto));
 #ifdef	__USE_REENTRANT
 /* Reentrant versions of the functions above.  The additional
    arguments specify a buffer of BUFLEN starting at BUF.  */
-extern struct protoent *__getprotoent_r __P ((struct protoent *__result_buf,
-					      char *__buf, int __buf_len));
-extern struct protoent *getprotoent_r __P ((struct protoent *__result_buf,
-					    char *__buf, int __buf_len));
-
-extern struct protoent *__getprotobyname_r __P ((__const char *__name,
-						 struct protoent *__result_buf,
-						 char *__buf, int __buflen));
-extern struct protoent *getprotobyname_r __P ((__const char *__name,
-					       struct protoent *__result_buf,
-					       char *__buf, int __buflen));
-
-extern struct protoent *__getprotobynumber_r __P ((int __proto,
-						   struct protoent *__res_buf,
-						   char *__buf, int __buflen));
-extern struct protoent *getprotobynumber_r __P ((int __proto,
-						 struct protoent *__result_buf,
-						 char *__buf, int __buflen));
+extern int __getprotoent_r __P ((struct protoent *__result_buf, char *__buf,
+				 size_t __buflen, struct protoent **__result));
+extern int getprotoent_r __P ((struct protoent *__result_buf, char *__buf,
+			       size_t __buflen, struct protoent **__result));
+
+extern int __getprotobyname_r __P ((__const char *__name,
+				    struct protoent *__result_buf, char *__buf,
+				    size_t __buflen,
+				    struct protoent **__result));
+extern int getprotobyname_r __P ((__const char *__name,
+				  struct protoent *__result_buf, char *__buf,
+				  size_t __buflen,
+				  struct protoent **__result));
+
+extern int __getprotobynumber_r __P ((int __proto, struct protoent *__res_buf,
+				      char *__buf, size_t __buflen,
+				      struct protoent **__result));
+extern int getprotobynumber_r __P ((int __proto, struct protoent *__result_buf,
+				    char *__buf, size_t __buflen,
+				    struct protoent **__result));
 #endif	/* reentrant */
 
 
@@ -351,10 +357,10 @@ extern int innetgr __P ((__const char *__netgroup, __const char *__host,
 /* Reentrant version of `getnetgrent' where result is placed in BUFFER.  */
 extern int __getnetgrent_r __P ((char **__hostp, char **__userp,
 				 char **__domainp,
-				 char *__buffer, int __buflen));
+				 char *__buffer, size_t __buflen));
 extern int getnetgrent_r __P ((char **__hostp, char **__userp,
 			       char **__domainp,
-			       char *__buffer, int __buflen));
+			       char *__buffer, size_t __buflen));
 #endif
 
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index 3d0e5a921b..aa8e66555d 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -23,20 +23,9 @@ Cambridge, MA 02139, USA.  */
 
 __BEGIN_DECLS
 
-/* Get the system-dependent definitions of RLIM_*.  */
+/* Get the system-dependent definitions of structures and bit values.  */
 #include <resourcebits.h>
 
-struct rlimit
-  {
-    /* The current (soft) limit.  */
-    int rlim_cur;
-    /* The hard limit.  */
-    int rlim_max;
-  };
-
-/* Value used to indicate that there is no limit.  */
-#define RLIM_INFINITY 0x7fffffff
-
 /* Put the soft and hard limits for RESOURCE in *RLIMITS.
    Returns 0 if successful, -1 if not (and sets errno).  */
 extern int __getrlimit __P ((enum __rlimit_resource __resource,
@@ -50,66 +39,6 @@ extern int getrlimit __P ((enum __rlimit_resource __resource,
 extern int setrlimit __P ((enum __rlimit_resource __resource,
 			   struct rlimit *__rlimits));
 
-
-/* Whose usage statistics do you want?  */
-enum __rusage_who
-/* The macro definitions are necessary because some programs want
-   to test for operating system features with #ifdef RUSAGE_SELF.
-   In ANSI C the reflexive definition is a no-op.  */
-  {
-    /* The calling process.  */
-    RUSAGE_SELF = 0,
-#define	RUSAGE_SELF	RUSAGE_SELF
-    /* All of its terminated child processes.  */
-    RUSAGE_CHILDREN = -1
-#define	RUSAGE_CHILDREN	RUSAGE_CHILDREN
-  };
-
-#include <sys/time.h>		/* For `struct timeval'.  */
-
-/* Structure which says how much of each resource has been used.  */
-struct rusage
-  {
-    /* Total amount of user time used.  */
-    struct timeval ru_utime;
-    /* Total amount of system time used.  */
-    struct timeval ru_stime;
-    /* Maximum resident set size (in kilobytes).  */
-    long ru_maxrss;
-    /* Amount of sharing of text segment memory
-       with other processes (kilobyte-seconds).  */
-    long ru_ixrss;
-    /* Amount of data segment memory used (kilobyte-seconds).  */
-    long ru_idrss;
-    /* Amount of stack memory used (kilobyte-seconds).  */
-    long ru_isrss;
-    /* Number of soft page faults (i.e. those serviced by reclaiming
-       a page from the list of pages awaiting reallocation.  */
-    long ru_minflt;
-    /* Number of hard page faults (i.e. those that required I/O).  */
-    long ru_majflt;
-    /* Number of times a process was swapped out of physical memory.  */
-    long ru_nswap;
-    /* Number of input operations via the file system.  Note: This
-       and `ru_oublock' do not include operations with the cache.  */
-    long ru_inblock;
-    /* Number of output operations via the file system.  */
-    long ru_oublock;
-    /* Number of IPC messages sent.  */
-    long ru_msgsnd;
-    /* Number of IPC messages received.  */
-    long ru_msgrcv;
-    /* Number of signals delivered.  */
-    long ru_nsignals;
-    /* Number of voluntary context switches, i.e. because the process
-       gave up the process before it had to (usually to wait for some
-       resource to be available).  */
-    long ru_nvcsw;
-    /* Number of involuntary context switches, i.e. a higher priority process
-       became runnable or the current process used up its time slice.  */
-    long ru_nivcsw;
-  };
-
 /* Return resource usage information on process indicated by WHO
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int __getrusage __P ((enum __rusage_who __who, struct rusage *__usage));
@@ -125,20 +54,6 @@ extern int getrusage __P ((enum __rusage_who __who, struct rusage *__usage));
 extern long int __ulimit __P ((int __cmd, long int __newlimit));
 extern long int ulimit __P ((int __cmd, long int __newlimit));
 
-
-/* Priority limits.  */
-#define	PRIO_MIN	-20	/* Minimum priority a process can have.  */
-#define	PRIO_MAX	20	/* Maximum priority a process can have.  */
-
-/* The type of the WHICH argument to `getpriority' and `setpriority',
-   indicating what flavor of entity the WHO argument specifies.  */
-enum __priority_which
-  {
-    PRIO_PROCESS = 0,		/* WHO is a process ID.  */
-    PRIO_PGRP = 1,		/* WHO is a process group ID.  */
-    PRIO_USER = 2		/* WHO is a user ID.  */
-  };
-
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/setjmp/setjmp.h b/setjmp/setjmp.h
index 8207cdfd82..75abb18c6d 100644
--- a/setjmp/setjmp.h
+++ b/setjmp/setjmp.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.6 NON-LOCAL JUMPS <setjmp.h>
+ *	ISO C Standard: 4.6 NON-LOCAL JUMPS	<setjmp.h>
  */
 
 #ifndef	_SETJMP_H
diff --git a/shadow/fgetspent.c b/shadow/fgetspent.c
index d6c4e4fc05..8782b6b1b9 100644
--- a/shadow/fgetspent.c
+++ b/shadow/fgetspent.c
@@ -25,7 +25,9 @@ struct spwd *
 fgetspent (FILE *stream)
 {
   static char buffer[BUFSIZ];
-  static struct spwd result;
+  static struct spwd resbuf;
+  struct spwd *result;
 
-  return __fgetspent_r (stream, &result, buffer, sizeof buffer);
+  return __fgetspent_r (stream, &resbuf, buffer, sizeof buffer, &result)
+    ? NULL : result;
 }
diff --git a/shadow/fgetspent_r.c b/shadow/fgetspent_r.c
index 6521517a6f..0cdcc76d9b 100644
--- a/shadow/fgetspent_r.c
+++ b/shadow/fgetspent_r.c
@@ -32,8 +32,9 @@ struct spent_data {};
 
 
 /* Read one shadow entry from the given stream.  */
-struct spwd *
-__fgetspent_r (FILE *stream, struct spwd *result, char *buffer, int buflen)
+int
+__fgetspent_r (FILE *stream, struct spwd *resbuf, char *buffer, size_t buflen,
+	       struct spwd **result)
 {
   char *p;
 
@@ -41,7 +42,7 @@ __fgetspent_r (FILE *stream, struct spwd *result, char *buffer, int buflen)
     {
       p = fgets (buffer, buflen, stream);
       if (p == NULL)
-	return NULL;
+	return errno;
 
       /* Skip leading blanks.  */
       while (isspace (*p))
@@ -49,8 +50,9 @@ __fgetspent_r (FILE *stream, struct spwd *result, char *buffer, int buflen)
     } while (*p == '\0' || *p == '#' ||	/* Ignore empty and comment lines.  */
 	     /* Parse the line.  If it is invalid, loop to
 		get the next line of the file to parse.  */
-	     ! parse_line (buffer, (void *) result, NULL, 0));
+	     ! parse_line (buffer, (void *) resbuf, NULL, 0));
 
-  return result;
+  *result = resbuf;
+  return 0;
 }
 weak_alias (__fgetspent_r, fgetspent_r)
diff --git a/shadow/sgetspent.c b/shadow/sgetspent.c
index a3c61f9026..d18e5d78fb 100644
--- a/shadow/sgetspent.c
+++ b/shadow/sgetspent.c
@@ -28,9 +28,10 @@ Cambridge, MA 02139, USA.  */
 struct spwd *
 sgetspent (const char *string)
 {
-  static struct spwd result;
+  static struct spwd resbuf;
   static int max_size = 0;
   static char *buffer = NULL;
+  struct spwd *result;
   int len;
 
   len = strlen (string) + 1;
@@ -42,5 +43,6 @@ sgetspent (const char *string)
 	return NULL;
     }
 
-  return __sgetspent_r (string, &result, buffer, max_size);
+  return __sgetspent_r (string, &resbuf, buffer, max_size, &result)
+    ? NULL : result;
 }
diff --git a/shadow/sgetspent_r.c b/shadow/sgetspent_r.c
index 407886ede4..5270a2a163 100644
--- a/shadow/sgetspent_r.c
+++ b/shadow/sgetspent_r.c
@@ -68,11 +68,13 @@ LINE_PARSER
 
 
 /* Read one shadow entry from the given stream.  */
-struct spwd *
-__sgetspent_r (const char *string, struct spwd *result, char *buffer,
-	       int buflen)
+int
+__sgetspent_r (const char *string, struct spwd *resbuf, char *buffer,
+	       size_t buflen, struct spwd **result)
 {
-  return parse_line (strncpy (buffer, string, buflen), result, NULL, 0)
-    ? result : NULL;
+  *result = parse_line (strncpy (buffer, string, buflen), resbuf, NULL, 0)
+    ? resbuf : NULL;
+
+  return *result == NULL ? errno : 0;
 }
 weak_alias (__sgetspent_r, sgetspent_r)
diff --git a/shadow/shadow.h b/shadow/shadow.h
index 133cfd6009..c27cc9a996 100644
--- a/shadow/shadow.h
+++ b/shadow/shadow.h
@@ -74,31 +74,31 @@ extern int putspent __P ((__const struct spwd *__p, FILE *__stream));
 
 #ifdef	__USE_REENTRANT
 /* Reentrant versions of some of the functions above.  */
-extern struct spwd *__getspent_r __P ((struct spwd *__result_buf,
-				       char *__buffer, int __buflen));
-extern struct spwd *getspent_r __P ((struct spwd *__result_buf,
-				     char *__buffer, int __buflen));
-
-extern struct spwd *__getspnam_r __P ((__const char *__name,
-				       struct spwd *__result_buf,
-				       char *__buffer, int __buflen));
-extern struct spwd *getspnam_r __P ((__const char *__name,
-				     struct spwd *__result_buf,
-				     char *__buffer, int __buflen));
-
-extern struct spwd *__sgetspent_r __P ((__const char *__string,
-					struct spwd *__result_buf,
-					char *__buffer, int __buflen));
-extern struct spwd *sgetspent_r __P ((__const char *__string,
-				      struct spwd *__result_buf,
-				      char *__buffer, int __buflen));
-
-extern struct spwd *__fgetspent_r __P ((FILE *__stream,
-					struct spwd *__result_buf,
-					char *__buffer, int __buflen));
-extern struct spwd *fgetspent_r __P ((FILE *__stream,
-				      struct spwd *__result_buf,
-				      char *__buffer, int __buflen));
+extern int __getspent_r __P ((struct spwd *__result_buf, char *__buffer,
+			      size_t __buflen, struct spwd **__result));
+extern int getspent_r __P ((struct spwd *__result_buf, char *__buffer,
+			    size_t __buflen, struct spwd **__result));
+
+extern int __getspnam_r __P ((__const char *__name, struct spwd *__result_buf,
+			      char *__buffer, size_t __buflen,
+			      struct spwd **__result));
+extern int getspnam_r __P ((__const char *__name, struct spwd *__result_buf,
+			    char *__buffer, size_t __buflen,
+			    struct spwd **__result));
+
+extern int __sgetspent_r __P ((__const char *__string,
+			       struct spwd *__result_buf, char *__buffer,
+			       size_t __buflen, struct spwd **__result));
+extern int sgetspent_r __P ((__const char *__string, struct spwd *__result_buf,
+			     char *__buffer, size_t __buflen,
+			     struct spwd **__result));
+
+extern int __fgetspent_r __P ((FILE *__stream, struct spwd *__result_buf,
+			       char *__buffer, size_t __buflen,
+			       struct spwd **__result));
+extern int fgetspent_r __P ((FILE *__stream, struct spwd *__result_buf,
+			     char *__buffer, size_t __buflen,
+			     struct spwd **__result));
 #endif	/* reentrant */
 
 
diff --git a/shlib-versions b/shlib-versions
index 0c94f3ba2f..58ea1f55b3 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -19,13 +19,13 @@ m68k-*-linux*		libc=6
 alpha-*-linux*		libc=6
 
 # libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release.
-*-*-gnu*		libmachuser=1
+*-*-gnu?*		libmachuser=1
 
 # libhurduser.so.0.0 corresponds to hurd/*.defs as of 7 May 1996.
-*-*-gnu*		libhurduser=0.0
+*-*-gnu?*		libhurduser=0.0
 
 # libc.so.0.2 is for the Hurd alpha release 0.2.
-*-*-gnu*		libc=0.2
+*-*-gnu?*		libc=0.2
 
 # The dynamic loader also requires different names.
 i?86-*-linux*		ld=ld-linux.so.2
@@ -53,5 +53,5 @@ i?86-*-linux*		ld=ld-linux.so.2
 # We use libdb.so.2 for the interface in version 1.85 of the Berkeley DB code.
 *-*-*			libdb=2
 
-# This file defines the shared library version numbers we will install.
+# This defines the shared library version numbers we will install.
 *-*-*			libcrypt=1
diff --git a/signal/Makefile b/signal/Makefile
index 6957953ba7..d3337385c9 100644
--- a/signal/Makefile
+++ b/signal/Makefile
@@ -25,7 +25,7 @@ headers	:= signal.h sys/signal.h signum.h sigcontext.h sigaction.h sigset.h
 
 routines	:= signal raise killpg \
 		   sigaction sigprocmask kill \
-		   sigpending sigsuspend \
+		   sigpending sigsuspend sigwait \
 		   sigblock sigsetmask sigpause sigvec \
 		   sigstack sigaltstack sigintr \
 		   sigsetops sigempty sigfillset sigaddset sigdelset sigismem \
diff --git a/signal/signal.h b/signal/signal.h
index 402d15e0f9..f7b2d131ad 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -177,6 +177,11 @@ extern int sigaction __P ((int __sig, __const struct sigaction *__act,
 /* Put in SET all signals that are blocked and waiting to be delivered.  */
 extern int sigpending __P ((sigset_t *__set));
 
+
+/* Select any of pending signals from SET or wait for any to arrive.  */
+extern int __sigwait __P ((__const sigset_t *__set, int *__sig));
+extern int sigwait __P ((__const sigset_t *__set, int *__sig));
+
 #endif /* <signal.h> included.  */
 
 #endif /* Use POSIX.  */
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 240016c112..920af7938f 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -50,6 +50,7 @@ include ../Rules
 
 CFLAGS-_itoa.c = -Wno-unused
 CFLAGS-tst-printf.c = -Wno-format
+CFLAGS-tstdiomisc.c = -Wno-format
 
 ifeq ($(stdio),libio)
 ifneq (,$(filter %REENTRANT, $(defines)))
diff --git a/stdio-common/bug5.c b/stdio-common/bug5.c
index def73397de..59fb6bb9d9 100644
--- a/stdio-common/bug5.c
+++ b/stdio-common/bug5.c
@@ -3,7 +3,6 @@
    exhibits itself, outfile will be missing the 2nd through 1023rd
    characters.  */
 
-#include <ansidecl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -11,14 +10,15 @@
 static char buf[8192];
 
 int
-DEFUN_VOID(main)
+main (void)
 {
   FILE *in;
   FILE *out;
   static char inname[] = "/tmp/bug5.in";
   static char outname[] = "/tmp/bug5.out";
   char *printbuf;
-  int i, result;
+  size_t i;
+  int result;
 
   /* Create a test file.  */
   in = fopen (inname, "w+");
@@ -28,7 +28,7 @@ DEFUN_VOID(main)
       return 1;
     }
   for (i = 0; i < 1000; ++i)
-    fprintf (in, "%d\n", i);
+    fprintf (in, "%u\n", i);
 
   out = fopen (outname, "w");
   if (out == NULL)
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index 7ab46f1ae2..967ece2cf8 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -156,7 +156,7 @@ __printf_fp (FILE *fp,
      position.	*/
   mp_limb_t fp_input[(LDBL_MANT_DIG + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB];
   /* We need to shift the contents of fp_input by this amount of bits.	*/
-  int to_shift;
+  int to_shift = 0;
 
   /* The significant of the floting-point value in question  */
   MPN_VAR(frac);
diff --git a/stdio-common/test_rdwr.c b/stdio-common/test_rdwr.c
index e8423f256b..cd739a6c71 100644
--- a/stdio-common/test_rdwr.c
+++ b/stdio-common/test_rdwr.c
@@ -16,7 +16,6 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-#include <ansidecl.h>
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -24,11 +23,11 @@ Cambridge, MA 02139, USA.  */
 
 
 int
-DEFUN(main, (argc, argv), int argc AND char **argv)
+main (int argc, char **argv)
 {
-  static CONST char hello[] = "Hello, world.\n";
-  static CONST char replace[] = "Hewwo, world.\n";
-  static CONST size_t replace_from = 2, replace_to = 4;
+  static const char hello[] = "Hello, world.\n";
+  static const char replace[] = "Hewwo, world.\n";
+  static const size_t replace_from = 2, replace_to = 4;
   char filename[FILENAME_MAX];
   char *name = strrchr(*argv, '/');
   char buf[BUFSIZ];
@@ -78,7 +77,7 @@ DEFUN(main, (argc, argv), int argc AND char **argv)
 
   {
     long int where = ftell(f);
-    if (where == replace_from)
+    if (where == (long int) replace_from)
       {
 	register size_t i;
 	for (i = replace_from; i < replace_to; ++i)
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index 82b0e06a31..9eb6295c5d 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -145,9 +145,9 @@ extern void __funlockfile (FILE *);
 #define outstring(String, Len)						      \
   do									      \
     {									      \
-      if (PUT (s, String, Len) != Len)					      \
+      if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len))		      \
 	return -1;							      \
-      done += Len;							      \
+      done += (Len);							      \
     }									      \
   while (0)
 
@@ -1075,7 +1075,7 @@ do_positional:
     size_t max_ref_arg = 0;
 
     /* Just a counter.  */
-    int cnt;
+    size_t cnt;
 
 
     if (grouping == (const char *) -1)
@@ -1194,7 +1194,7 @@ do_positional:
 	}
 
     /* Now walk through all format specifiers and process them.  */
-    for (; nspecs_done < nspecs; ++nspecs_done)
+    for (; (size_t) nspecs_done < nspecs; ++nspecs_done)
       {
 #undef REF
 #define REF(Name) &&do2_##Name
@@ -1501,7 +1501,7 @@ buffered_vfprintf (register _IO_FILE *s, const CHAR_T *format,
   /* Now flush anything from the helper to the S. */
   if ((to_flush = hp->_IO_write_ptr - hp->_IO_write_base) > 0)
     {
-      if (_IO_sputn (s, hp->_IO_write_base, to_flush) != to_flush)
+      if ((int) _IO_sputn (s, hp->_IO_write_base, to_flush) != to_flush)
 	return -1;
     }
 
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index 5564e2b0e6..28f8ceb820 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -172,8 +172,9 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
       unsigned long int ul;
     } num;
   /* Character-buffer pointer.  */
-  register char *str, **strptr;
-  size_t strsize;
+  char *str = NULL;
+  char **strptr = NULL;
+  size_t strsize = 0;
   /* We must not react on white spaces immediately because they can
      possibly be matched even if in the input stream no character is
      available anymore.  */
diff --git a/stdio/stdio.h b/stdio/stdio.h
index 8072625312..12996b8607 100644
--- a/stdio/stdio.h
+++ b/stdio/stdio.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.9 INPUT/OUTPUT	<stdio.h>
+ *	ISO C Standard: 4.9 INPUT/OUTPUT	<stdio.h>
  */
 
 #ifndef	_STDIO_H
diff --git a/stdlib/atexit.c b/stdlib/atexit.c
index a2ab453576..675de668cc 100644
--- a/stdlib/atexit.c
+++ b/stdlib/atexit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -16,16 +16,16 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-#include <ansidecl.h>
+#include <libc-lock.h>
 #include <stdlib.h>
 #include "exit.h"
 
 
 /* Register FUNC to be executed by `exit'.  */
 int
-DEFUN(atexit, (func), void EXFUN((*func), (NOARGS)))
+atexit (void (*func) (void))
 {
-  struct exit_function *new = __new_exitfn();
+  struct exit_function *new = __new_exitfn ();
 
   if (new == NULL)
     return -1;
@@ -36,30 +36,55 @@ DEFUN(atexit, (func), void EXFUN((*func), (NOARGS)))
 }
 
 
+/* We change global data, so we need locking.  */
+__libc_lock_define_initialized (static, lock)
+
+
 static struct exit_function_list fnlist = { NULL, 0, };
 struct exit_function_list *__exit_funcs = &fnlist;
 
 struct exit_function *
-DEFUN_VOID(__new_exitfn)
+__new_exitfn (void)
 {
-  register struct exit_function_list *l;
+  struct exit_function_list *l;
+  size_t i = 0;
+
+  __libc_lock_lock (lock)
 
   for (l = __exit_funcs; l != NULL; l = l->next)
     {
-      register size_t i;
       for (i = 0; i < l->idx; ++i)
 	if (l->fns[i].flavor == ef_free)
-	  return &l->fns[i];
-      if (l->idx < sizeof(l->fns) / sizeof(l->fns[0]))
-	return &l->fns[l->idx++];
+	  break;
+      if (i < l->idx)
+	break;
+
+      if (l->idx < sizeof (l->fns) / sizeof (l->fns[0]))
+	{
+	  i = l->idx++;
+	  break;
+	}
     }
 
-  l = (struct exit_function_list *) malloc(sizeof(struct exit_function_list));
   if (l == NULL)
-    return NULL;
-  l->next = __exit_funcs;
-  __exit_funcs = l;
+    {
+      l = (struct exit_function_list *)
+	malloc (sizeof (struct exit_function_list));
+      if (l != NULL)
+	{
+	  l->next = __exit_funcs;
+	  __exit_funcs = l;
+
+	  l->idx = 1;
+      	  i = 0;
+	}
+    }
+
+  /* Mark entry as used, but we don't know the flavor now.  */
+  if (l != NULL)
+    l->fns[i].flavor = ef_us;
+
+  __libc_lock_unlock (lock)
 
-  l->idx = 1;
-  return &l->fns[0];
+  return l == NULL ? NULL : &l->fns[i];
 }
diff --git a/stdlib/exit.c b/stdlib/exit.c
index 4f33a25cc4..ec7ee6a2db 100644
--- a/stdlib/exit.c
+++ b/stdlib/exit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -16,7 +16,6 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-#include <ansidecl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -32,25 +31,26 @@ DEFINE_HOOK (__libc_atexit, (void))
    in the reverse of the order in which they were registered
    perform stdio cleanup, and terminate program execution with STATUS.  */
 void
-DEFUN(exit, (status), int status)
+exit (int status)
 {
-  register CONST struct exit_function_list *l;
+  const struct exit_function_list *l;
 
   for (l = __exit_funcs; l != NULL; l = l->next)
     {
-      register size_t i = l->idx;
+      size_t i = l->idx;
       while (i-- > 0)
 	{
-	  CONST struct exit_function *CONST f = &l->fns[i];
+	  const struct exit_function *const f = &l->fns[i];
 	  switch (f->flavor)
 	    {
 	    case ef_free:
+	    case ef_us:
 	      break;
 	    case ef_on:
-	      (*f->func.on.fn)(status, f->func.on.arg);
+	      (*f->func.on.fn) (status, f->func.on.arg);
 	      break;
 	    case ef_at:
-	      (*f->func.at)();
+	      (*f->func.at) ();
 	      break;
 	    }
 	}
@@ -60,11 +60,10 @@ DEFUN(exit, (status), int status)
   RUN_HOOK (__libc_atexit, ());
 #else
   {
-    extern void EXFUN(_cleanup, (NOARGS));
-    _cleanup();
+    extern void _cleanup (void);
+    _cleanup ();
   }
 #endif
 
-  _exit(status);
+  _exit (status);
 }
-
diff --git a/stdlib/exit.h b/stdlib/exit.h
index 214217853e..83d20b7451 100644
--- a/stdlib/exit.h
+++ b/stdlib/exit.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996 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,14 @@ Cambridge, MA 02139, USA.  */
 
 struct exit_function
   {
-    enum { ef_free, ef_on, ef_at } flavor;	/* `ef_free' MUST be zero!  */
+    enum { ef_free, ef_us, ef_on, ef_at } flavor; /* `ef_free' MUST be zero! */
     union
       {
-	void EXFUN((*at), (NOARGS));
+	void (*at) (void);
 	struct
 	  {
-	    void EXFUN((*fn), (int status, PTR arg));
-	    PTR arg;
+	    void (*fn) (int status, void *arg);
+	    void *arg;
 	  } on;
       } func;
   };
@@ -39,6 +39,6 @@ struct exit_function_list
   };
 extern struct exit_function_list *__exit_funcs;
 
-extern struct exit_function *EXFUN(__new_exitfn, (NOARGS));
+extern struct exit_function *__new_exitfn (void);
 
 #endif	/* exit.h  */
diff --git a/stdlib/random.c b/stdlib/random.c
index e2b191b696..461b76f29b 100644
--- a/stdlib/random.c
+++ b/stdlib/random.c
@@ -22,6 +22,7 @@
  * Rewritten to use reentrant functions by Ulrich Drepper, 1995.
  */
 
+#include <libc-lock.h>
 #include <limits.h>
 #include <stddef.h>
 #include <stdlib.h>
@@ -162,6 +163,11 @@ static struct random_data unsafe_state =
     end_ptr : &randtbl[sizeof (randtbl) / sizeof (randtbl[0])]
 };
 
+/* POSIX.1c requires that there is mutual exclusion for the `rand' and
+   `srand' functions to prevent concurrent calls from modifying common
+   data.  */
+__libc_lock_define_initialized (static, lock)
+
 /* Initialize the random number generator based on the given seed.  If the
    type is the trivial no-state-information type, just remember the seed.
    Otherwise, initializes state[] based on the given "seed" via a linear
@@ -174,7 +180,9 @@ void
 __srandom (x)
      unsigned int x;
 {
+  __libc_lock_lock (lock)
   (void) __srandom_r (x, &unsafe_state);
+  __libc_lock_unlock (lock)
 }
 
 weak_alias (__srandom, srandom)
@@ -197,10 +205,16 @@ __initstate (seed, arg_state, n)
      void *arg_state;
      size_t n;
 {
-  void *ostate = (void *) &unsafe_state.state[-1];
+  void *ostate;
+
+  __libc_lock_lock (lock)
+
+  ostate = (void *) &unsafe_state.state[-1];
 
   __initstate_r (seed, arg_state, n, &unsafe_state);
 
+  __libc_lock_unlock (lock)
+
   return ostate;
 }
 
@@ -218,10 +232,16 @@ void *
 __setstate (arg_state)
      void *arg_state;
 {
-  void *ostate = (void *) &unsafe_state.state[-1];
+  void *ostate;
+
+  __libc_lock_lock (lock)
+
+  ostate = (void *) &unsafe_state.state[-1];
 
   if (__setstate_r (arg_state, &unsafe_state) < 0)
-    return NULL;
+    ostate = NULL;
+
+  __libc_lock_unlock (lock)
 
   return ostate;
 }
@@ -244,8 +264,12 @@ __random ()
 {
   int32_t retval;
 
+  __libc_lock_lock (lock)
+
   (void) __random_r (&unsafe_state, &retval);
 
+  __libc_lock_unlock (lock)
+
   return retval;
 }
 
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index cb48aa1f1c..d11b8bf73b 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.10 GENERAL UTILITIES	<stdlib.h>
+ *	ISO S Standard: 4.10 GENERAL UTILITIES	<stdlib.h>
  */
 
 #ifndef	_STDLIB_H
diff --git a/string/argz.h b/string/argz.h
index b6906d976e..d7814fdd2e 100644
--- a/string/argz.h
+++ b/string/argz.h
@@ -110,7 +110,7 @@ extern char *argz_next __P ((char *argz, size_t __argz_len,
 
 #if defined (__OPTIMIZE__) && __GNUC__ >= 2
 extern inline char *
-__argz_next (char *__argz, size_t __argz_len, const char *__entry)
+__argz_next (char *__argz, size_t __argz_len, __const char *__entry)
 {
   if (__entry)
     {
@@ -120,13 +120,10 @@ __argz_next (char *__argz, size_t __argz_len, const char *__entry)
       return __entry >= __argz + __argz_len ? NULL : (char *) __entry;
     }
   else
-    if (__argz_len > 0)
-      return __argz;
-    else
-      return 0;
+    return __argz_len > 0 ? __argz : 0;
 }
 extern inline char *
-argz_next (char *__argz, size_t __argz_len, const char *__entry)
+argz_next (char *__argz, size_t __argz_len, __const char *__entry)
 {
   return __argz_next (__argz, __argz_len, __entry);
 }
diff --git a/string/stratcliff.c b/string/stratcliff.c
index 5f6a467c15..10c1f1f6b7 100644
--- a/string/stratcliff.c
+++ b/string/stratcliff.c
@@ -14,12 +14,14 @@ int
 main (int argc, char *argv[])
 {
   size_t size = sysconf (_SC_PAGESIZE);
-  char *adr;
+  char *adr, *dest;
   int result = 0;
 
-  adr = (char *) mmap (NULL, size, PROT_READ|PROT_WRITE,
-                       MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
-  if (adr == NULL)
+  adr = (char *) mmap (NULL, 3 * size, PROT_READ|PROT_WRITE,
+		       MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+  dest = (char *) mmap (NULL, 3*size, PROT_READ|PROT_WRITE,
+			MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+  if (adr == (char *)-1L || dest == (char *)-1L)
     {
       if (errno == ENOSYS)
         puts ("No test, mmap not available.");
@@ -31,9 +33,16 @@ main (int argc, char *argv[])
     }
   else
     {
-      char dest[size];
       int inner, middle, outer;
 
+      mprotect(adr, size, PROT_NONE);
+      mprotect(adr+2*size, size, PROT_NONE);
+      adr += size;
+
+      mprotect(dest, size, PROT_NONE);
+      mprotect(dest+2*size, size, PROT_NONE);
+      dest += size;
+
       memset (adr, 'T', size);
 
       /* strlen test */
diff --git a/string/string.h b/string/string.h
index a8b34b2b33..414f2cb22a 100644
--- a/string/string.h
+++ b/string/string.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 92, 93, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.11 STRING HANDLING	<string.h>
+ *	ISO C Standard: 4.11 STRING HANDLING	<string.h>
  */
 
 #ifndef	_STRING_H
diff --git a/sunrpc/rpc/netdb.h b/sunrpc/rpc/netdb.h
index c4043b807d..f77c6b3d76 100644
--- a/sunrpc/rpc/netdb.h
+++ b/sunrpc/rpc/netdb.h
@@ -38,27 +38,33 @@
 #define _RPC_NETDB_H	1
 #include <features.h>
 
+#define __need_size_t
+#include <stddef.h>
+
 __BEGIN_DECLS
 
-struct rpcent {
-      char    *r_name;        /* name of server for this rpc program */
-      char    **r_aliases;    /* alias list */
-      int     r_number;       /* rpc program number */
+struct rpcent
+{
+  char *r_name;		/* Name of server for this rpc program.  */
+  char **r_aliases;	/* Alias list.  */
+  int r_number;		/* RPC program number.  */
 };
 
-struct rpcent	*getrpcbyname __P ((const char *__name));
-struct rpcent	*getrpcbynumber __P ((int __number));
-struct rpcent	*getrpcent __P ((void));
+extern struct rpcent *getrpcbyname __P ((__const char *__name));
+extern struct rpcent *getrpcbynumber __P ((int __number));
+extern struct rpcent *getrpcent __P ((void));
 
 #ifdef __USE_REENTRANT
-struct rpcent	*getrpcbyname_r __P ((const char *__name,
-				      struct rpcent *__result,
-				      char *__buffer, int __buflen));
-struct rpcent	*getrpcbynumber_r __P ((int __number,
-					struct rpcent *__result,
-					char *__buffer, int __buflen));
-struct rpcent	*getrpcent_r __P ((struct rpcent *__result, char *__buffer,
-				   int __buflen));
+extern int getrpcbyname_r __P ((__const char *__name,
+				struct rpcent *__result_buf, char *__buffer,
+				size_t __buflen, struct rpcent **__result));
+
+extern int getrpcbynumber_r __P ((int __number, struct rpcent *__result_buf,
+				  char *__buffer, size_t __buflen,
+				  struct rpcent **__result));
+
+extern int getrpcent_r __P ((struct rpcent *__result_buf, char *__buffer,
+			     size_t __buflen, struct rpcent **__result));
 #endif
 
 __END_DECLS
diff --git a/sunrpc/xdr_float.c b/sunrpc/xdr_float.c
index 549f8bd97b..4e322eccf1 100644
--- a/sunrpc/xdr_float.c
+++ b/sunrpc/xdr_float.c
@@ -6,23 +6,23 @@
  * may copy or modify Sun RPC without charge, but are not authorized
  * to license or distribute it to anyone else except as part of a product or
  * program developed by the user.
- * 
+ *
  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- * 
+ *
  * Sun RPC is provided with no support and without any obligation on the
  * part of Sun Microsystems, Inc. to assist in its use, correction,
  * modification or enhancement.
- * 
+ *
  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
  * OR ANY PART THEREOF.
- * 
+ *
  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  * or profits or other special, indirect and consequential damages, even if
  * Sun has been advised of the possibility of such damages.
- * 
+ *
  * Sun Microsystems, Inc.
  * 2550 Garcia Avenue
  * Mountain View, California  94043
@@ -42,6 +42,7 @@ static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro";
  */
 
 #include <stdio.h>
+#include <endian.h>
 
 #include <rpc/types.h>
 #include <rpc/xdr.h>
@@ -51,6 +52,8 @@ static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro";
  * This routine works on Suns (Sky / 68000's) and Vaxen.
  */
 
+#define LSW	(__BYTE_ORDER == __BIG_ENDIAN)
+
 #ifdef vax
 
 /* What IEEE single precision floating point looks like on a Vax */
@@ -96,9 +99,7 @@ xdr_float(xdrs, fp)
 	switch (xdrs->x_op) {
 
 	case XDR_ENCODE:
-#ifndef vax
-		return (XDR_PUTLONG(xdrs, (long *)fp));
-#else
+#ifdef vax
 		vs = *((struct vax_single *)fp);
 		for (i = 0, lim = sgl_limits;
 			i < sizeof(sgl_limits)/sizeof(struct sgl_limits);
@@ -115,12 +116,18 @@ xdr_float(xdrs, fp)
 	shipit:
 		is.sign = vs.sign;
 		return (XDR_PUTLONG(xdrs, (long *)&is));
+#else
+		if (sizeof(float) == sizeof(long))
+			return (XDR_PUTLONG(xdrs, (long *)fp));
+		else if (sizeof(float) == sizeof(int)) {
+			long tmp = *(int *)fp;
+			return (XDR_PUTLONG(xdrs, &tmp));
+		}
+		break;
 #endif
 
 	case XDR_DECODE:
-#ifndef vax
-		return (XDR_GETLONG(xdrs, (long *)fp));
-#else
+#ifdef vax
 		vsp = (struct vax_single *)fp;
 		if (!XDR_GETLONG(xdrs, (long *)&is))
 			return (FALSE);
@@ -139,6 +146,17 @@ xdr_float(xdrs, fp)
 	doneit:
 		vsp->sign = is.sign;
 		return (TRUE);
+#else
+		if (sizeof(float) == sizeof(long))
+			return (XDR_GETLONG(xdrs, (long *)fp));
+		else if (sizeof(float) == sizeof(int)) {
+			long tmp;
+			if (XDR_GETLONG(xdrs, &tmp)) {
+				*(int *)fp = tmp;
+				return (TRUE);
+			}
+		}
+		break;
 #endif
 
 	case XDR_FREE:
@@ -192,7 +210,6 @@ xdr_double(xdrs, dp)
 	register XDR *xdrs;
 	double *dp;
 {
-	register long *lp;
 #ifdef vax
 	struct	ieee_double id;
 	struct	vax_double vd;
@@ -203,9 +220,7 @@ xdr_double(xdrs, dp)
 	switch (xdrs->x_op) {
 
 	case XDR_ENCODE:
-#ifndef vax
-		lp = (long *)dp;
-#else
+#ifdef vax
 		vd = *((struct vax_double *)dp);
 		for (i = 0, lim = dbl_limits;
 			i < sizeof(dbl_limits)/sizeof(struct dbl_limits);
@@ -226,15 +241,24 @@ xdr_double(xdrs, dp)
 				((vd.mantissa4 >> 3) & MASK(13));
 	shipit:
 		id.sign = vd.sign;
-		lp = (long *)&id;
+		dp = (double *)&id;
 #endif
-		return (XDR_PUTLONG(xdrs, lp++) && XDR_PUTLONG(xdrs, lp));
+		if (2*sizeof(long) == sizeof(double)) {
+			long *lp = (long *)dp;
+			return (XDR_PUTLONG(xdrs, lp+!LSW) &&
+				XDR_PUTLONG(xdrs, lp+LSW));
+		} else if (2*sizeof(int) == sizeof(double)) {
+			int *ip = (int *)dp;
+			long tmp[2];
+			tmp[0] = ip[!LSW];
+			tmp[1] = ip[LSW];
+			return (XDR_PUTLONG(xdrs, tmp) &&
+				XDR_PUTLONG(xdrs, tmp+1));
+		}
+		break;
 
 	case XDR_DECODE:
-#ifndef vax
-		lp = (long *)dp;
-		return (XDR_GETLONG(xdrs, lp++) && XDR_GETLONG(xdrs, lp));
-#else
+#ifdef vax
 		lp = (long *)&id;
 		if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp))
 			return (FALSE);
@@ -258,6 +282,22 @@ xdr_double(xdrs, dp)
 		vd.sign = id.sign;
 		*dp = *((double *)&vd);
 		return (TRUE);
+#else
+		if (2*sizeof(long) == sizeof(double)) {
+			long *lp = (long *)dp;
+			return (XDR_GETLONG(xdrs, lp+!LSW) &&
+				XDR_GETLONG(xdrs, lp+LSW));
+		} else if (2*sizeof(int) == sizeof(double)) {
+			int *ip = (int *)dp;
+			long tmp[2];
+			if (XDR_GETLONG(xdrs, tmp+!LSW) &&
+			    XDR_GETLONG(xdrs, tmp+LSW)) {
+				ip[0] = tmp[0];
+				ip[1] = tmp[1];
+				return (TRUE);
+			}
+		}
+		break;
 #endif
 
 	case XDR_FREE:
diff --git a/sysdeps/generic/crypt-entry.c b/sysdeps/generic/crypt-entry.c
index de15904b2c..ab1c6faaab 100644
--- a/sysdeps/generic/crypt-entry.c
+++ b/sysdeps/generic/crypt-entry.c
@@ -48,7 +48,7 @@ crypt_r (key, salt, data)
     return md5_crypt_r (key, salt, (char *) data, sizeof (struct crypt_data));
 
   /* We don't have DES encryption.  */
-  errno = ENOSYS;
+  __set_errno (ENOSYS);
   return NULL;
 }
 
@@ -63,6 +63,6 @@ crypt (key, salt)
     return md5_crypt (key, salt);
 
   /* We don't have DES encryption.  */
-  errno = ENOSYS;
+  __set_errno (ENOSYS);
   return NULL;
 }
diff --git a/sysdeps/generic/resourcebits.h b/sysdeps/generic/resourcebits.h
index 74cbcb0e97..01dbb8f952 100644
--- a/sysdeps/generic/resourcebits.h
+++ b/sysdeps/generic/resourcebits.h
@@ -1,4 +1,4 @@
-/* Bit values for resource limits.  4.4 BSD/generic GNU version.
+/* Bit values & structures for resource limits.  4.4 BSD/generic GNU version.
 Copyright (C) 1994, 1996 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
@@ -59,5 +59,88 @@ enum __rlimit_resource
 #define	RLIMIT_NOFILE	RLIMIT_NOFILE
 
     RLIMIT_NLIMITS,		/* Number of limit flavors.  */
-    RLIM_NLIMITS = RLIMIT_NLIMITS /* Traditional name for same.  */
+    RLIM_NLIMITS = RLIMIT_NLIMITS, /* Traditional name for same.  */
+
+    RLIM_INFINITY = 0x7fffffff /* Value to indicate that there is no limit.  */
+#define RLIM_INFINITY RLIM_INFINITY
+  };
+
+struct rlimit
+  {
+    /* The current (soft) limit.  */
+    int rlim_cur;
+    /* The hard limit.  */
+    int rlim_max;
+  };
+
+/* Whose usage statistics do you want?  */
+enum __rusage_who
+/* The macro definitions are necessary because some programs want
+   to test for operating system features with #ifdef RUSAGE_SELF.
+   In ISO C the reflexive definition is a no-op.  */
+  {
+    /* The calling process.  */
+    RUSAGE_SELF = 0,
+#define RUSAGE_SELF     RUSAGE_SELF
+    /* All of its terminated child processes.  */
+    RUSAGE_CHILDREN = -1
+#define RUSAGE_CHILDREN RUSAGE_CHILDREN
+  };
+
+#include <sys/time.h>           /* For `struct timeval'.  */
+
+/* Structure which says how much of each resource has been used.  */
+struct rusage
+  {
+    /* Total amount of user time used.  */
+    struct timeval ru_utime;
+    /* Total amount of system time used.  */
+    struct timeval ru_stime;
+    /* Maximum resident set size (in kilobytes).  */
+    long int ru_maxrss;
+    /* Amount of sharing of text segment memory
+       with other processes (kilobyte-seconds).  */
+    long int ru_ixrss;
+    /* Amount of data segment memory used (kilobyte-seconds).  */
+    long int ru_idrss;
+    /* Amount of stack memory used (kilobyte-seconds).  */
+    long int ru_isrss;
+    /* Number of soft page faults (i.e. those serviced by reclaiming
+       a page from the list of pages awaiting reallocation.  */
+    long int ru_minflt;
+    /* Number of hard page faults (i.e. those that required I/O).  */
+    long int ru_majflt;
+    /* Number of times a process was swapped out of physical memory.  */
+    long int ru_nswap;
+    /* Number of input operations via the file system.  Note: This
+       and `ru_oublock' do not include operations with the cache.  */
+    long int ru_inblock;
+    /* Number of output operations via the file system.  */
+    long int ru_oublock;
+    /* Number of IPC messages sent.  */
+    long int ru_msgsnd;
+    /* Number of IPC messages received.  */
+    long int ru_msgrcv;
+    /* Number of signals delivered.  */
+    long int ru_nsignals;
+    /* Number of voluntary context switches, i.e. because the process
+       gave up the process before it had to (usually to wait for some
+       resource to be available).  */
+    long int ru_nvcsw;
+    /* Number of involuntary context switches, i.e. a higher priority process
+       became runnable or the current process used up its time slice.  */
+    long int ru_nivcsw;
+  };
+
+/* Priority limits.  */
+#define PRIO_MIN        -20     /* Minimum priority a process can have.  */
+#define PRIO_MAX        20      /* Maximum priority a process can have.  */
+
+/* The type of the WHICH argument to `getpriority' and `setpriority',
+   indicating what flavor of entity the WHO argument specifies.  */
+enum __priority_which
+  {
+    PRIO_PROCESS = 0,           /* WHO is a process ID.  */
+    PRIO_PGRP = 1,              /* WHO is a process group ID.  */
+    PRIO_USER = 2               /* WHO is a user ID.  */
   };
diff --git a/sysdeps/generic/uname.c b/sysdeps/generic/uname.c
index c0bc13e02a..f5f90239ca 100644
--- a/sysdeps/generic/uname.c
+++ b/sysdeps/generic/uname.c
@@ -44,7 +44,7 @@ uname (name)
 	{
 	  /* Hostname is meaningless for this machine.  */
 	  name->nodename[0] = '\0';
-	  errno = save;
+	  __set_errno (save);
 	}
 #ifdef	ENAMETOOLONG
       else if (errno == ENAMETOOLONG)
diff --git a/sysdeps/libm-ieee754/e_jnf.c b/sysdeps/libm-ieee754/e_jnf.c
index b9951f6b43..9e5279c30a 100644
--- a/sysdeps/libm-ieee754/e_jnf.c
+++ b/sysdeps/libm-ieee754/e_jnf.c
@@ -8,7 +8,7 @@
  *
  * Developed at SunPro, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice 
+ * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
@@ -53,7 +53,7 @@ static float zero  =  0.0000000000e+00;
 	ix = 0x7fffffff&hx;
     /* if J(n,NaN) is NaN */
 	if(ix>0x7f800000) return x+x;
-	if(n<0){		
+	if(n<0){
 		n = -n;
 		x = -x;
 		hx ^= 0x80000000;
@@ -64,7 +64,7 @@ static float zero  =  0.0000000000e+00;
 	x = fabsf(x);
 	if(ix==0||ix>=0x7f800000) 	/* if x is 0 or inf */
 	    b = zero;
-	else if((float)n<=x) {   
+	else if((float)n<=x) {
 		/* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
 	    a = __ieee754_j0f(x);
 	    b = __ieee754_j1f(x);
@@ -75,7 +75,7 @@ static float zero  =  0.0000000000e+00;
 	    }
 	} else {
 	    if(ix<0x30800000) {	/* x < 2**-29 */
-    /* x is tiny, return the first Taylor expansion of J(n,x) 
+    /* x is tiny, return the first Taylor expansion of J(n,x)
      * J(n,x) = 1/n!*(x/2)^n  - ...
      */
 		if(n>33)	/* underflow */
@@ -90,14 +90,14 @@ static float zero  =  0.0000000000e+00;
 		}
 	    } else {
 		/* use backward recurrence */
-		/* 			x      x^2      x^2       
+		/* 			x      x^2      x^2
 		 *  J(n,x)/J(n-1,x) =  ----   ------   ------   .....
 		 *			2n  - 2(n+1) - 2(n+2)
 		 *
-		 * 			1      1        1       
+		 * 			1      1        1
 		 *  (for large x)   =  ----  ------   ------   .....
 		 *			2n   2(n+1)   2(n+2)
-		 *			-- - ------ - ------ - 
+		 *			-- - ------ - ------ -
 		 *			 x     x         x
 		 *
 		 * Let w = 2n/x and h=2/x, then the above quotient
@@ -113,9 +113,9 @@ static float zero  =  0.0000000000e+00;
 		 * To determine how many terms needed, let
 		 * Q(0) = w, Q(1) = w(w+h) - 1,
 		 * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
-		 * When Q(k) > 1e4	good for single 
-		 * When Q(k) > 1e9	good for double 
-		 * When Q(k) > 1e17	good for quadruple 
+		 * When Q(k) > 1e4	good for single
+		 * When Q(k) > 1e9	good for double
+		 * When Q(k) > 1e17	good for quadruple
 		 */
 	    /* determine k */
 		float t,v;
@@ -137,7 +137,7 @@ static float zero  =  0.0000000000e+00;
 		 *  single 8.8722839355e+01
 		 *  double 7.09782712893383973096e+02
 		 *  long double 1.1356523406294143949491931077970765006170e+04
-		 *  then recurrent value may overflow and the result is 
+		 *  then recurrent value may overflow and the result is
 		 *  likely underflow to zero
 		 */
 		tmp = n;
@@ -173,13 +173,14 @@ static float zero  =  0.0000000000e+00;
 }
 
 #ifdef __STDC__
-	float __ieee754_ynf(int n, float x) 
+	float __ieee754_ynf(int n, float x)
 #else
-	float __ieee754_ynf(n,x) 
+	float __ieee754_ynf(n,x)
 	int n; float x;
 #endif
 {
-	int32_t i,hx,ix,ib;
+	int32_t i,hx,ix;
+	u_int32_t ib;
 	int32_t sign;
 	float a, b, temp;
 
@@ -202,7 +203,7 @@ static float zero  =  0.0000000000e+00;
 	b = __ieee754_y1f(x);
 	/* quit if b is -inf */
 	GET_FLOAT_WORD(ib,b);
-	for(i=1;i<n&&ib!=0xff800000;i++){ 
+	for(i=1;i<n&&ib!=0xff800000;i++){
 	    temp = b;
 	    b = ((float)(i+i)/x)*b - a;
 	    GET_FLOAT_WORD(ib,b);
diff --git a/sysdeps/libm-ieee754/e_pow.c b/sysdeps/libm-ieee754/e_pow.c
index 0d42381946..4b9ba3d5eb 100644
--- a/sysdeps/libm-ieee754/e_pow.c
+++ b/sysdeps/libm-ieee754/e_pow.c
@@ -5,7 +5,7 @@
  *
  * Developed at SunPro, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice 
+ * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: e_pow.c,v 1.9 1995/05/12 04:57:32 jtc Exp $";
  *	1. Compute and return log2(x) in two pieces:
  *		log2(x) = w1 + w2,
  *	   where w1 has 53-24 = 29 bit trailing zeros.
- *	2. Perform y*log2(x) = n+y' by simulating muti-precision 
+ *	2. Perform y*log2(x) = n+y' by simulating muti-precision
  *	   arithmetic, where |y'|<=0.5.
  *	3. Return x**y = 2**n*exp(y'*log2)
  *
@@ -49,13 +49,13 @@ static char rcsid[] = "$NetBSD: e_pow.c,v 1.9 1995/05/12 04:57:32 jtc Exp $";
  * Accuracy:
  *	pow(x,y) returns x**y nearly rounded. In particular
  *			pow(integer,integer)
- *	always returns the correct integer provided it is 
+ *	always returns the correct integer provided it is
  *	representable.
  *
  * Constants :
- * The hexadecimal values are the intended ones for the following 
- * constants. The decimal values may be used, provided that the 
- * compiler will convert from decimal to binary accurately enough 
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
  * to produce the hexadecimal values shown.
  */
 
@@ -63,9 +63,9 @@ static char rcsid[] = "$NetBSD: e_pow.c,v 1.9 1995/05/12 04:57:32 jtc Exp $";
 #include "math_private.h"
 
 #ifdef __STDC__
-static const double 
+static const double
 #else
-static double 
+static double
 #endif
 bp[] = {1.0, 1.5,},
 dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */
@@ -117,12 +117,12 @@ ivln2_l  =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
 	ix = hx&0x7fffffff;  iy = hy&0x7fffffff;
 
     /* y==zero: x**0 = 1 */
-	if((iy|ly)==0) return one; 	
+	if((iy|ly)==0) return one;
 
     /* +-NaN return x+y */
 	if(ix > 0x7ff00000 || ((ix==0x7ff00000)&&(lx!=0)) ||
-	   iy > 0x7ff00000 || ((iy==0x7ff00000)&&(ly!=0))) 
-		return x+y;	
+	   iy > 0x7ff00000 || ((iy==0x7ff00000)&&(ly!=0)))
+		return x+y;
 
     /* determine if y is an odd int when x < 0
      * yisint = 0	... y is not an integer
@@ -130,22 +130,22 @@ ivln2_l  =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
      * yisint = 2	... y is an even int
      */
 	yisint  = 0;
-	if(hx<0) {	
+	if(hx<0) {
 	    if(iy>=0x43400000) yisint = 2; /* even integer y */
 	    else if(iy>=0x3ff00000) {
 		k = (iy>>20)-0x3ff;	   /* exponent */
 		if(k>20) {
 		    j = ly>>(52-k);
-		    if((j<<(52-k))==ly) yisint = 2-(j&1);
+		    if((u_int32_t)(j<<(52-k))==ly) yisint = 2-(j&1);
 		} else if(ly==0) {
 		    j = iy>>(20-k);
-		    if((j<<(20-k))==iy) yisint = 2-(j&1);
+		    if((int32_t)(j<<(20-k))==iy) yisint = 2-(j&1);
 		}
-	    }		
-	} 
+	    }
+	}
 
     /* special value of y */
-	if(ly==0) { 	
+	if(ly==0) {
 	    if (iy==0x7ff00000) {	/* y is +-inf */
 	        if(((ix-0x3ff00000)|lx)==0)
 		    return  y - y;	/* inf**+-1 is NaN */
@@ -153,14 +153,14 @@ ivln2_l  =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
 		    return (hy>=0)? y: zero;
 	        else			/* (|x|<1)**-,+inf = inf,0 */
 		    return (hy<0)?-y: zero;
-	    } 
+	    }
 	    if(iy==0x3ff00000) {	/* y is  +-1 */
 		if(hy<0) return one/x; else return x;
 	    }
 	    if(hy==0x40000000) return x*x; /* y is  2 */
 	    if(hy==0x3fe00000) {	/* y is  0.5 */
 		if(hx>=0)	/* x >= +0 */
-		return __ieee754_sqrt(x);	
+		return __ieee754_sqrt(x);
 	    }
 	}
 
@@ -173,13 +173,13 @@ ivln2_l  =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
 		if(hx<0) {
 		    if(((ix-0x3ff00000)|yisint)==0) {
 			z = (z-z)/(z-z); /* (-1)**non-int is NaN */
-		    } else if(yisint==1) 
+		    } else if(yisint==1)
 			z = -z;		/* (x<0)**odd = -(|x|**odd) */
 		}
 		return z;
 	    }
 	}
-    
+
     /* (x<0)**(non-int) is NaN */
 	if(((((u_int32_t)hx>>31)-1)|yisint)==0) return (x-x)/(x-x);
 
@@ -192,7 +192,7 @@ ivln2_l  =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
 	/* over/underflow if x is not close to one */
 	    if(ix<0x3fefffff) return (hy<0)? huge*huge:tiny*tiny;
 	    if(ix>0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
-	/* now |1-x| is tiny <= 2**-20, suffice to compute 
+	/* now |1-x| is tiny <= 2**-20, suffice to compute
 	   log(x) by x-x^2/2+x^3/3-x^4/4 */
 	    t = x-1;		/* t has 20 trailing zeros */
 	    w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
@@ -289,7 +289,7 @@ ivln2_l  =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
 	    n = ((n&0x000fffff)|0x00100000)>>(20-k);
 	    if(j<0) n = -n;
 	    p_h -= t;
-	} 
+	}
 	t = p_l+p_h;
 	SET_LOW_WORD(t,0);
 	u = t*lg2_h;
diff --git a/sysdeps/libm-ieee754/e_powf.c b/sysdeps/libm-ieee754/e_powf.c
index 37e32ab3ca..1358555128 100644
--- a/sysdeps/libm-ieee754/e_powf.c
+++ b/sysdeps/libm-ieee754/e_powf.c
@@ -8,7 +8,7 @@
  *
  * Developed at SunPro, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice 
+ * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
@@ -74,12 +74,12 @@ ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
 	ix = hx&0x7fffffff;  iy = hy&0x7fffffff;
 
     /* y==zero: x**0 = 1 */
-	if(iy==0) return one; 	
+	if(iy==0) return one;
 
     /* +-NaN return x+y */
 	if(ix > 0x7f800000 ||
 	   iy > 0x7f800000)
-		return x+y;	
+		return x+y;
 
     /* determine if y is an odd int when x < 0
      * yisint = 0	... y is not an integer
@@ -87,14 +87,14 @@ ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
      * yisint = 2	... y is an even int
      */
 	yisint  = 0;
-	if(hx<0) {	
+	if(hx<0) {
 	    if(iy>=0x4b800000) yisint = 2; /* even integer y */
 	    else if(iy>=0x3f800000) {
 		k = (iy>>23)-0x7f;	   /* exponent */
 		j = iy>>(23-k);
 		if((j<<(23-k))==iy) yisint = 2-(j&1);
-	    }		
-	} 
+	    }
+	}
 
     /* special value of y */
 	if (iy==0x7f800000) {	/* y is +-inf */
@@ -104,14 +104,14 @@ ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
 	        return (hy>=0)? y: zero;
 	    else			/* (|x|<1)**-,+inf = inf,0 */
 	        return (hy<0)?-y: zero;
-	} 
+	}
 	if(iy==0x3f800000) {	/* y is  +-1 */
 	    if(hy<0) return one/x; else return x;
 	}
 	if(hy==0x40000000) return x*x; /* y is  2 */
 	if(hy==0x3f000000) {	/* y is  0.5 */
 	    if(hx>=0)	/* x >= +0 */
-	    return __ieee754_sqrtf(x);	
+	    return __ieee754_sqrtf(x);
 	}
 
 	ax   = fabsf(x);
@@ -122,12 +122,12 @@ ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
 	    if(hx<0) {
 		if(((ix-0x3f800000)|yisint)==0) {
 		    z = (z-z)/(z-z); /* (-1)**non-int is NaN */
-		} else if(yisint==1) 
+		} else if(yisint==1)
 		    z = -z;		/* (x<0)**odd = -(|x|**odd) */
 	    }
 	    return z;
 	}
-    
+
     /* (x<0)**(non-int) is NaN */
 	if(((((u_int32_t)hx>>31)-1)|yisint)==0) return (x-x)/(x-x);
 
@@ -136,7 +136,7 @@ ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
 	/* over/underflow if x is not close to one */
 	    if(ix<0x3f7ffff8) return (hy<0)? huge*huge:tiny*tiny;
 	    if(ix>0x3f800007) return (hy>0)? huge*huge:tiny*tiny;
-	/* now |1-x| is tiny <= 2**-20, suffice to compute 
+	/* now |1-x| is tiny <= 2**-20, suffice to compute
 	   log(x) by x-x^2/2+x^3/3-x^4/4 */
 	    t = x-1;		/* t has 20 trailing zeros */
 	    w = (t*t)*((float)0.5-t*((float)0.333333333333-t*(float)0.25));
@@ -217,7 +217,7 @@ ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
 	}
 	else if ((j&0x7fffffff)>0x43160000)		/* z <= -150 */
 	    return s*tiny*tiny;				/* underflow */
-	else if (j==0xc3160000){			/* z == -150 */
+	else if ((u_int32_t) j==0xc3160000){		/* z == -150 */
 	    if(p_l<=z-p_h) return s*tiny*tiny;		/* underflow */
 	}
     /*
@@ -233,7 +233,7 @@ ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
 	    n = ((n&0x007fffff)|0x00800000)>>(23-k);
 	    if(j<0) n = -n;
 	    p_h -= t;
-	} 
+	}
 	t = p_l+p_h;
 	GET_FLOAT_WORD(is,t);
 	SET_FLOAT_WORD(t,is&0xfffff000);
diff --git a/sysdeps/libm-ieee754/e_rem_pio2f.c b/sysdeps/libm-ieee754/e_rem_pio2f.c
index e5d50a11b4..4b8c4466bd 100644
--- a/sysdeps/libm-ieee754/e_rem_pio2f.c
+++ b/sysdeps/libm-ieee754/e_rem_pio2f.c
@@ -8,7 +8,7 @@
  *
  * Developed at SunPro, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice 
+ * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
@@ -18,8 +18,8 @@ static char rcsid[] = "$NetBSD: e_rem_pio2f.c,v 1.5 1995/05/10 20:46:03 jtc Exp
 #endif
 
 /* __ieee754_rem_pio2f(x,y)
- * 
- * return the remainder of x rem pi/2 in y[0]+y[1] 
+ *
+ * return the remainder of x rem pi/2 in y[0]+y[1]
  * use __kernel_rem_pio2f()
  */
 
@@ -27,7 +27,7 @@ static char rcsid[] = "$NetBSD: e_rem_pio2f.c,v 1.5 1995/05/10 20:46:03 jtc Exp
 #include "math_private.h"
 
 /*
- * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi 
+ * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
  */
 #ifdef __STDC__
 static const int32_t two_over_pi[] = {
@@ -35,27 +35,27 @@ static const int32_t two_over_pi[] = {
 static int32_t two_over_pi[] = {
 #endif
 0xA2, 0xF9, 0x83, 0x6E, 0x4E, 0x44, 0x15, 0x29, 0xFC,
-0x27, 0x57, 0xD1, 0xF5, 0x34, 0xDD, 0xC0, 0xDB, 0x62, 
+0x27, 0x57, 0xD1, 0xF5, 0x34, 0xDD, 0xC0, 0xDB, 0x62,
 0x95, 0x99, 0x3C, 0x43, 0x90, 0x41, 0xFE, 0x51, 0x63,
-0xAB, 0xDE, 0xBB, 0xC5, 0x61, 0xB7, 0x24, 0x6E, 0x3A, 
+0xAB, 0xDE, 0xBB, 0xC5, 0x61, 0xB7, 0x24, 0x6E, 0x3A,
 0x42, 0x4D, 0xD2, 0xE0, 0x06, 0x49, 0x2E, 0xEA, 0x09,
-0xD1, 0x92, 0x1C, 0xFE, 0x1D, 0xEB, 0x1C, 0xB1, 0x29, 
+0xD1, 0x92, 0x1C, 0xFE, 0x1D, 0xEB, 0x1C, 0xB1, 0x29,
 0xA7, 0x3E, 0xE8, 0x82, 0x35, 0xF5, 0x2E, 0xBB, 0x44,
-0x84, 0xE9, 0x9C, 0x70, 0x26, 0xB4, 0x5F, 0x7E, 0x41, 
+0x84, 0xE9, 0x9C, 0x70, 0x26, 0xB4, 0x5F, 0x7E, 0x41,
 0x39, 0x91, 0xD6, 0x39, 0x83, 0x53, 0x39, 0xF4, 0x9C,
-0x84, 0x5F, 0x8B, 0xBD, 0xF9, 0x28, 0x3B, 0x1F, 0xF8, 
+0x84, 0x5F, 0x8B, 0xBD, 0xF9, 0x28, 0x3B, 0x1F, 0xF8,
 0x97, 0xFF, 0xDE, 0x05, 0x98, 0x0F, 0xEF, 0x2F, 0x11,
-0x8B, 0x5A, 0x0A, 0x6D, 0x1F, 0x6D, 0x36, 0x7E, 0xCF, 
+0x8B, 0x5A, 0x0A, 0x6D, 0x1F, 0x6D, 0x36, 0x7E, 0xCF,
 0x27, 0xCB, 0x09, 0xB7, 0x4F, 0x46, 0x3F, 0x66, 0x9E,
-0x5F, 0xEA, 0x2D, 0x75, 0x27, 0xBA, 0xC7, 0xEB, 0xE5, 
+0x5F, 0xEA, 0x2D, 0x75, 0x27, 0xBA, 0xC7, 0xEB, 0xE5,
 0xF1, 0x7B, 0x3D, 0x07, 0x39, 0xF7, 0x8A, 0x52, 0x92,
-0xEA, 0x6B, 0xFB, 0x5F, 0xB1, 0x1F, 0x8D, 0x5D, 0x08, 
+0xEA, 0x6B, 0xFB, 0x5F, 0xB1, 0x1F, 0x8D, 0x5D, 0x08,
 0x56, 0x03, 0x30, 0x46, 0xFC, 0x7B, 0x6B, 0xAB, 0xF0,
-0xCF, 0xBC, 0x20, 0x9A, 0xF4, 0x36, 0x1D, 0xA9, 0xE3, 
+0xCF, 0xBC, 0x20, 0x9A, 0xF4, 0x36, 0x1D, 0xA9, 0xE3,
 0x91, 0x61, 0x5E, 0xE6, 0x1B, 0x08, 0x65, 0x99, 0x85,
-0x5F, 0x14, 0xA0, 0x68, 0x40, 0x8D, 0xFF, 0xD8, 0x80, 
+0x5F, 0x14, 0xA0, 0x68, 0x40, 0x8D, 0xFF, 0xD8, 0x80,
 0x4D, 0x73, 0x27, 0x31, 0x06, 0x06, 0x15, 0x56, 0xCA,
-0x73, 0xA8, 0xC9, 0x60, 0xE2, 0x7B, 0xC0, 0x8C, 0x6B, 
+0x73, 0xA8, 0xC9, 0x60, 0xE2, 0x7B, 0xC0, 0x8C, 0x6B,
 };
 
 /* This array is like the one in e_rem_pio2.c, but the numbers are
@@ -84,9 +84,9 @@ static int32_t npio2_hw[] = {
  */
 
 #ifdef __STDC__
-static const float 
+static const float
 #else
-static float 
+static float
 #endif
 zero =  0.0000000000e+00, /* 0x00000000 */
 half =  5.0000000000e-01, /* 0x3f000000 */
@@ -115,7 +115,7 @@ pio2_3t =  6.1232342629e-17; /* 0x248d3132 */
 	if(ix<=0x3f490fd8)   /* |x| ~<= pi/4 , no need for reduction */
 	    {y[0] = x; y[1] = 0; return 0;}
 	if(ix<0x4016cbe4) {  /* |x| < 3pi/4, special case with n=+-1 */
-	    if(hx>0) { 
+	    if(hx>0) {
 		z = x - pio2_1;
 		if((ix&0xfffffff0)!=0x3fc90fd0) { /* 24+24 bit pi OK */
 		    y[0] = z - pio2_1t;
@@ -145,27 +145,27 @@ pio2_3t =  6.1232342629e-17; /* 0x248d3132 */
 	    fn = (float)n;
 	    r  = t-fn*pio2_1;
 	    w  = fn*pio2_1t;	/* 1st round good to 40 bit */
-	    if(n<32&&(ix&0xffffff00)!=npio2_hw[n-1]) {	
+	    if(n<32&&(int32_t)(ix&0xffffff00)!=npio2_hw[n-1]) {
 		y[0] = r-w;	/* quick check no cancellation */
 	    } else {
 	        u_int32_t high;
 	        j  = ix>>23;
-	        y[0] = r-w; 
+	        y[0] = r-w;
 		GET_FLOAT_WORD(high,y[0]);
 	        i = j-((high>>23)&0xff);
 	        if(i>8) {  /* 2nd iteration needed, good to 57 */
 		    t  = r;
-		    w  = fn*pio2_2;	
+		    w  = fn*pio2_2;
 		    r  = t-w;
-		    w  = fn*pio2_2t-((t-r)-w);	
+		    w  = fn*pio2_2t-((t-r)-w);
 		    y[0] = r-w;
 		    GET_FLOAT_WORD(high,y[0]);
 		    i = j-((high>>23)&0xff);
 		    if(i>25)  {	/* 3rd iteration need, 74 bits acc */
 		    	t  = r;	/* will cover all possible cases */
-		    	w  = fn*pio2_3;	
+		    	w  = fn*pio2_3;
 		    	r  = t-w;
-		    	w  = fn*pio2_3t-((t-r)-w);	
+		    	w  = fn*pio2_3t-((t-r)-w);
 		    	y[0] = r-w;
 		    }
 		}
@@ -174,7 +174,7 @@ pio2_3t =  6.1232342629e-17; /* 0x248d3132 */
 	    if(hx<0) 	{y[0] = -y[0]; y[1] = -y[1]; return -n;}
 	    else	 return n;
 	}
-    /* 
+    /*
      * all other (large) arguments
      */
 	if(ix>=0x7f800000) {		/* x is inf or NaN */
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 32b050ecf4..90af24fb61 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -287,6 +287,10 @@ static int gaih_inet(const char *name, const struct gaih_service *service,
     struct gaih_servtuple *st2;
     struct gaih_addrtuple *at2 = at;
     int j;
+#ifndef MAXHOSTNAMELEN
+# define MAXHOSTNAMELEN 128
+#endif /* MAXHOSTNAMELEN */
+    char buffer[MAXHOSTNAMELEN];
 
     while(at2) {
       if (req->ai_flags & AI_CANONNAME) {
@@ -308,9 +312,9 @@ static int gaih_inet(const char *name, const struct gaih_service *service,
 	    sizeof(struct in_addr), at2->family);
 #endif /* HOSTTABLE */
 
-	if (!h) {
-	  c = inet_ntop(at2->family, at2->addr, NULL, 0);
-	} else
+	if (!h)
+	  c = inet_ntop(at2->family, at2->addr, buffer, sizeof(buffer));
+	else
           c = h->h_name;
 
 	if (!c) {
diff --git a/sysdeps/posix/rename.c b/sysdeps/posix/rename.c
index c318081bac..b8d31f900c 100644
--- a/sysdeps/posix/rename.c
+++ b/sysdeps/posix/rename.c
@@ -31,7 +31,7 @@ rename (old, new)
     {
       if (errno == EEXIST)
 	{
-	  errno = save;
+	  __set_errno (save);
 	  /* Race condition, required for 1003.1 conformance.  */
 	  if (__unlink (new) < 0 ||
 	      __link (old, new) < 0)
diff --git a/sysdeps/posix/sigwait.c b/sysdeps/posix/sigwait.c
new file mode 100644
index 0000000000..0cd5f80fda
--- /dev/null
+++ b/sysdeps/posix/sigwait.c
@@ -0,0 +1,92 @@
+/* sigwait - implementation of sigwait function from POSIX.1c.
+   Copyright (C) 1996 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <assert.h>
+#include <errno.h>
+#include <signal.h>
+
+
+/* This is our dummy signal handler we use here.  */
+static void ignore_signal (int sig);
+
+/* Place where to remember which signal we got.  Please note that this
+   implementation cannot be used for the threaded libc.  The
+   libpthread must provide an own version.  */
+static int was_sig;
+
+
+int
+__sigwait (const sigset_t *set, int *sig)
+{
+  sigset_t tmp_mask;
+  struct sigaction saved[NSIG];
+  struct sigaction action;
+  int save_errno;
+  int this;
+
+  /* Prepare set.  */
+  sigfillset (&tmp_mask);
+
+  /* Unblock all signals in the SET and register our nice handler.  */
+  action.sa_handler = ignore_signal;
+  action.sa_flags = 0;
+  sigfillset (&action.sa_mask);		/* Block all signals for handler.  */
+
+  /* Make sure we recognize error conditions by setting WAS_SIG to a
+     value which does not describe a legal signal number.  */
+  was_sig = -1;
+
+  for (this = 0; this < NSIG; ++this)
+    if (sigismember (set, this))
+      {
+	/* Unblock this signal.  */
+	sigdelset (&tmp_mask, this);
+
+	/* Register temporary action handler.  */
+	if (sigaction (this, &action, &saved[this]) != 0)
+	  goto restore_handler;
+      }
+
+  /* Now we can wait for signals.  */
+  sigsuspend (&tmp_mask);
+
+ restore_handler:
+  save_errno = errno;
+
+  while (--this >= 0)
+    if (sigismember (set, this))
+      /* We ignore errors here since we must restore all handlers.  */
+      sigaction (this, &saved[this], NULL);
+
+  __set_errno (save_errno);
+
+  /* Store the result and return.  */
+  *sig = was_sig;
+  return was_sig == -1 ? -1 : 0;
+}
+weak_alias (__sigwait, sigwait)
+
+
+static void
+ignore_signal (int sig)
+{
+  /* Remember the signal.  */
+  was_sig = sig;
+}
diff --git a/sysdeps/posix/ttyname_r.c b/sysdeps/posix/ttyname_r.c
index d7f6026d8a..5b62826a19 100644
--- a/sysdeps/posix/ttyname_r.c
+++ b/sysdeps/posix/ttyname_r.c
@@ -36,7 +36,7 @@ int
 __ttyname_r (fd, buf, buflen)
      int fd;
      char *buf;
-     int buflen;
+     size_t buflen;
 {
   static const char dev[] = "/dev";
   struct stat st;
@@ -50,21 +50,24 @@ __ttyname_r (fd, buf, buflen)
      the loop.  */
   if (buflen < (int) (sizeof (dev) + 1))
     {
-      __set_errno (EINVAL);
-      return -1;
+      __set_errno (ERANGE);
+      return ERANGE;
     }
 
   if (!__isatty (fd))
-    return -1;
+    {
+      __set_errno (ENOTTY);
+      return ENOTTY;
+    }
 
   if (fstat (fd, &st) < 0)
-    return -1;
+    return errno;
   mydev = st.st_dev;
   myino = st.st_ino;
 
   dirstream = opendir (dev);
   if (dirstream == NULL)
-    return -1;
+    return errno;
 
   /* Prepare the result buffer.  */
   memcpy (buf, dev, sizeof (dev) - 1);
@@ -75,9 +78,16 @@ __ttyname_r (fd, buf, buflen)
     if ((ino_t) d->d_fileno == myino)
       {
 	char *cp;
+	size_t needed = _D_EXACT_NAMLEN (d) + 1;
+
+	if (needed > buflen)
+	  {
+	    (void) closedir (dirstream);
+	    __set_errno (ERANGE);
+	    return ERANGE;
+	  }
 
-	cp = __stpncpy (&buf[sizeof (dev)], d->d_name,
-			MIN ((int) (_D_EXACT_NAMLEN (d) + 1), buflen));
+	cp = __stpncpy (&buf[sizeof (dev)], d->d_name, needed);
 	cp[0] = '\0';
 
 	if (stat (buf, &st) == 0 && st.st_dev == mydev)
@@ -90,6 +100,8 @@ __ttyname_r (fd, buf, buflen)
 
   (void) closedir (dirstream);
   __set_errno (save);
-  return -1;
+  /* It is not clear what to return in this case.  `isatty' says FD
+     refers to a TTY but no entry in /dev has this inode.  */
+  return ENOTTY;
 }
 weak_alias (__ttyname_r, ttyname_r)
diff --git a/sysdeps/stub/setrlimit.c b/sysdeps/stub/setrlimit.c
index 79b96235b7..5978602906 100644
--- a/sysdeps/stub/setrlimit.c
+++ b/sysdeps/stub/setrlimit.c
@@ -27,7 +27,7 @@ setrlimit (resource, rlimits)
      enum __rlimit_resource resource;
      struct rlimit *rlimits;
 {
-  errno = ENOSYS;
+  __set_errno (ENOSYS);
   return -1;
 }
 
diff --git a/sysdeps/stub/sigwait.c b/sysdeps/stub/sigwait.c
new file mode 100644
index 0000000000..28b86aa698
--- /dev/null
+++ b/sysdeps/stub/sigwait.c
@@ -0,0 +1,31 @@
+/* sigwait - implementation of sigwait function from POSIX.1c.
+   Copyright (C) 1996 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 Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <signal.h>
+
+int
+__sigwait (const sigset_t *set, int *sig)
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+weak_alias (__sigwait, sigwait)
+
+stub_warning (sigwait)
diff --git a/sysdeps/unix/bsd/sun/sunos4/resourcebits.h b/sysdeps/unix/bsd/sun/sunos4/resourcebits.h
index 485dec9b81..8f515db330 100644
--- a/sysdeps/unix/bsd/sun/sunos4/resourcebits.h
+++ b/sysdeps/unix/bsd/sun/sunos4/resourcebits.h
@@ -52,5 +52,88 @@ enum __rlimit_resource
 #defin	RLIMIT_NOFILE	RLIMIT_NOFILE
 #defin	RLIMIT_OFILE	RLIMIT_OFILE
 
-    RLIM_NLIMITS
+    RLIM_NLIMITS,
+
+    RLIM_INFINITY = 0x7fffffff /* Value to indicate that there is no limit.  */
+#define RLIM_INFINITY RLIM_INFINITY
+  };
+
+struct rlimit
+  {
+    /* The current (soft) limit.  */
+    int rlim_cur;
+    /* The hard limit.  */
+    int rlim_max;
+  };
+
+/* Whose usage statistics do you want?  */
+enum __rusage_who
+/* The macro definitions are necessary because some programs want
+   to test for operating system features with #ifdef RUSAGE_SELF.
+   In ISO C the reflexive definition is a no-op.  */
+  {
+    /* The calling process.  */
+    RUSAGE_SELF = 0,
+#define RUSAGE_SELF     RUSAGE_SELF
+    /* All of its terminated child processes.  */
+    RUSAGE_CHILDREN = -1
+#define RUSAGE_CHILDREN RUSAGE_CHILDREN
+  };
+
+#include <sys/time.h>           /* For `struct timeval'.  */
+
+/* Structure which says how much of each resource has been used.  */
+struct rusage
+  {
+    /* Total amount of user time used.  */
+    struct timeval ru_utime;
+    /* Total amount of system time used.  */
+    struct timeval ru_stime;
+    /* Maximum resident set size (in kilobytes).  */
+    long int ru_maxrss;
+    /* Amount of sharing of text segment memory
+       with other processes (kilobyte-seconds).  */
+    long int ru_ixrss;
+    /* Amount of data segment memory used (kilobyte-seconds).  */
+    long int ru_idrss;
+    /* Amount of stack memory used (kilobyte-seconds).  */
+    long int ru_isrss;
+    /* Number of soft page faults (i.e. those serviced by reclaiming
+       a page from the list of pages awaiting reallocation.  */
+    long int ru_minflt;
+    /* Number of hard page faults (i.e. those that required I/O).  */
+    long int ru_majflt;
+    /* Number of times a process was swapped out of physical memory.  */
+    long int ru_nswap;
+    /* Number of input operations via the file system.  Note: This
+       and `ru_oublock' do not include operations with the cache.  */
+    long int ru_inblock;
+    /* Number of output operations via the file system.  */
+    long int ru_oublock;
+    /* Number of IPC messages sent.  */
+    long int ru_msgsnd;
+    /* Number of IPC messages received.  */
+    long int ru_msgrcv;
+    /* Number of signals delivered.  */
+    long int ru_nsignals;
+    /* Number of voluntary context switches, i.e. because the process
+       gave up the process before it had to (usually to wait for some
+       resource to be available).  */
+    long int ru_nvcsw;
+    /* Number of involuntary context switches, i.e. a higher priority process
+       became runnable or the current process used up its time slice.  */
+    long int ru_nivcsw;
+  };
+
+/* Priority limits.  */
+#define PRIO_MIN        -20     /* Minimum priority a process can have.  */
+#define PRIO_MAX        20      /* Maximum priority a process can have.  */
+
+/* The type of the WHICH argument to `getpriority' and `setpriority',
+   indicating what flavor of entity the WHO argument specifies.  */
+enum __priority_which
+  {
+    PRIO_PROCESS = 0,           /* WHO is a process ID.  */
+    PRIO_PGRP = 1,              /* WHO is a process group ID.  */
+    PRIO_USER = 2               /* WHO is a user ID.  */
   };
diff --git a/sysdeps/unix/getlogin_r.c b/sysdeps/unix/getlogin_r.c
index f80b2c7518..aa2c0617e6 100644
--- a/sysdeps/unix/getlogin_r.c
+++ b/sysdeps/unix/getlogin_r.c
@@ -72,8 +72,18 @@ getlogin_r (name, name_len)
     }
   else
     {
-      strncpy (name, ut->ut_line, name_len);
-      result = 0;
+      size_t needed = strlen (ut->ut_line) + 1;
+
+      if (needed < name_len)
+	{
+	  __set_errno (ERANGE);
+	  result = ERANGE;
+	}
+      else
+	{
+	  memcpy (name, ut->ut_line, needed);
+	  result = 0;
+	}
     }
   endutent_r (&utmp_data);
 
diff --git a/sysdeps/unix/sysv/linux/errnos.h b/sysdeps/unix/sysv/linux/errnos.h
index 40707d1d62..4456e570f0 100644
--- a/sysdeps/unix/sysv/linux/errnos.h
+++ b/sysdeps/unix/sysv/linux/errnos.h
@@ -19,34 +19,40 @@ Boston, MA 02111-1307, USA.  */
 
 #ifdef _ERRNO_H
 
-#undef EDOM
-#undef ERANGE
-#include <linux/errno.h>
+# undef EDOM
+# undef ERANGE
+# include <linux/errno.h>
 
-#ifndef __ASSEMBLER__
-#if defined __USE_REENTRANT && (!defined _LIBC || defined _LIBC_REENTRANT)
-/* Declare alias of `errno' variable so it is accessible even if macro
-   with name `errno' is defined.  */
-extern int __errno;
+# ifndef __ASSEMBLER__
+#  ifdef _LIBC
+/* We now need a declaration of the `errno' variable.  */
+extern int errno;
 
-/* When using threads, errno is a per-thread value.  */
+/* Function to get address of global `errno' variable.  */
 extern int *__errno_location __P ((void)) __attribute__ ((__const__));
-#define errno	(*__errno_location ())
-
-#define __set_errno(val) errno = __errno = (val)
-
-#else /* !__USE_REENTRENT || (_LIBC && !_LIBC_REENTRANT) */
 
-#define __set_errno(val) errno = (val)
-
-#endif /* __USE_REENTRANT && (!_LIBC || _LIBC_REENTRANT) */
-#endif /* !__ASSEMBLER */
+#   ifdef _LIBC_REENTRANT
+static inline int
+__set_errno (int __err)
+{
+  return *__errno_location () = errno = __err;
+}
+#   else /* !_LIBC_REENTRANT */
+#    define __set_errno(val) errno = (val)
+#   endif /* _LIBC_REENTRANT */
+#  endif /* _LIBC */
+
+#  if defined __USE_REENTRANT && (!defined _LIBC || defined _LIBC_REENTRANT)
+/* When using threads, errno is a per-thread value.  */
+#   define errno (*__errno_location ())
+#  endif
+# endif /* !__ASSEMBLER__ */
 #endif /* _ERRNO_H */
 
 #if !defined (_ERRNO_H) && defined (__need_Emath)
 /* This is ugly but the kernel header is not clean enough.  We must
    define only the values EDOM and ERANGE in case __need_Emath is
    defined.  The value is the same for all Linux ports.  */
-#define EDOM	33	/* Math argument out of domain of function.  */
-#define ERANGE	34	/* Math result not representable.  */
+# define EDOM	33	/* Math argument out of domain of function.  */
+# define ERANGE	34	/* Math result not representable.  */
 #endif /* !_ERRNO_H && __need_Emath */
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.S b/sysdeps/unix/sysv/linux/i386/sysdep.S
index 742ba2b1a9..c9c78842d8 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.S
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.S
@@ -32,10 +32,7 @@ Cambridge, MA 02139, USA.  */
 errno:	.zero 4
 	.globl _errno
 	.type _errno,@object
-_errno = errno	/* This name is expected by hj libc.so.5 startup code.  */
-	.globl __errno
-	.type __errno,@object
-__errno = errno	/* This name is expected by the MT code.  */
+_errno = errno	/* This name is expected by hj's libc.so.5 startup code.  */
 	.text
 
 /* The following code is only used in the shared library when we
diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.S b/sysdeps/unix/sysv/linux/m68k/sysdep.S
index 848ece58e8..7016a26a60 100644
--- a/sysdeps/unix/sysv/linux/m68k/sysdep.S
+++ b/sysdeps/unix/sysv/linux/m68k/sysdep.S
@@ -32,10 +32,7 @@ errno:	.space 4
 	.size errno,4
 	.globl _errno
 	.type _errno,@object
-_errno = errno	/* This name is expected by hj libc.so.5 startup code.  */
-	.globl __errno
-	.type __errno,@object
-__errno = errno	/* This name is expected by the MT code.  */
+_errno = errno	/* This name is expected by hj's libc.so.5 startup code.  */
 	.text
 
 /* The following code is only used in the shared library when we
diff --git a/time/test-tz.c b/time/test-tz.c
index 47565cedec..c59a8b5ecf 100644
--- a/time/test-tz.c
+++ b/time/test-tz.c
@@ -21,7 +21,7 @@ main(int argc, char ** argv)
   int errors = 0;
   struct tm tm;
   time_t t;
-  int i;
+  unsigned int i;
 
   memset (&tm, 0, sizeof (tm));
   tm.tm_isdst = 0;
@@ -39,7 +39,7 @@ main(int argc, char ** argv)
       t = mktime(&tm);
       if (t != tests[i].expected)
 	{
-	  printf ("%s: flunked test %d (expected %lu, got %lu)\n",
+	  printf ("%s: flunked test %u (expected %lu, got %lu)\n",
 		  argv[0], i, (long) tests[i].expected, (long) t);
 	  ++errors;
 	}
diff --git a/time/time.h b/time/time.h
index 2dc25ab0b9..de7214ac52 100644
--- a/time/time.h
+++ b/time/time.h
@@ -1,23 +1,23 @@
 /* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
- *	ANSI Standard: 4.12 DATE and TIME	<time.h>
+ *	ISO C Standard: 4.12 DATE and TIME	<time.h>
  */
 
 #ifndef	_TIME_H
diff --git a/wctype/wctype.h b/wctype/wctype.h
index 87451e5d83..7a165810cf 100644
--- a/wctype/wctype.h
+++ b/wctype/wctype.h
@@ -1,20 +1,20 @@
 /* Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   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 Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
-Library General Public License for more details.
+   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
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
  *	ISO/IEC 9899:1990/Amendment 1:1995 7.15:
@@ -44,7 +44,7 @@ typedef unsigned int wint_t;
 
 /* Scalar type that can hold values which represent locale-specific
    character mappings.  */
-typedef const unsigned int *wctrans_t;
+typedef __const unsigned int *wctrans_t;
 
 /* Scalar type that can hold values which represent locale-specific
    character classifications.  */
@@ -96,52 +96,52 @@ enum
 
 /* Test for any wide character for which `iswalpha' or `iswdigit' is
    true.  */
-int iswalnum __P ((wint_t __wc));
+extern int iswalnum __P ((wint_t __wc));
 
 /* Test for any wide character for which `iswupper' or 'iswlower' is
    true, or any wide character that is one of a locale-specific set of
    wide-characters for which none of `iswcntrl', `iswdigit',
    `iswpunct', or `iswspace' is true.  */
-int iswalpha __P ((wint_t __wc));
+extern int iswalpha __P ((wint_t __wc));
 
 /* Test for any control wide character.  */
-int iswcntrl __P ((wint_t __wc));
+extern int iswcntrl __P ((wint_t __wc));
 
 /* Test for any wide character that corresponds to a decimal-digit
    character.  */
-int iswdigit __P ((wint_t __wc));
+extern int iswdigit __P ((wint_t __wc));
 
 /* Test for any wide character for which `iswprint' is true and
    `iswspace' is false.  */
-int iswgraph __P ((wint_t __wc));
+extern int iswgraph __P ((wint_t __wc));
 
 /* Test for any wide character that corresponds to a lowercase letter
    or is one of a locale-specific set of wide characters for which
    none of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true.  */
-int iswlower __P ((wint_t __wc));
+extern int iswlower __P ((wint_t __wc));
 
 /* Test for any printing wide character.  */
-int iswprint __P ((wint_t __wc));
+extern int iswprint __P ((wint_t __wc));
 
 /* Test for any printing wide character that is one of a
    locale-specific et of wide characters for which neither `iswspace'
    nor `iswalnum' is true.  */
-int iswpunct __P ((wint_t __wc));
+extern int iswpunct __P ((wint_t __wc));
 
 /* Test for any wide character that corresponds to a locale-specific
    set of wide characters for which none of `iswalnum', `iswgraph', or
    `iswpunct' is true.  */
-int iswspace __P ((wint_t __wc));
+extern int iswspace __P ((wint_t __wc));
 
 /* Test for any wide character that corresponds to an uppercase letter
    or is one of a locale-specific set of wide character for which none
    of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true.  */
-int iswupper __P ((wint_t __wc));
+extern int iswupper __P ((wint_t __wc));
 
 /* Test for any wide character that corresponds to a hexadecimal-digit
    character equivalent to that performed be the functions described
    in the previous subclause.  */
-int iswxdigit __P ((wint_t __wc));
+extern int iswxdigit __P ((wint_t __wc));
 
 /*
  * Extensible wide-character classification functions: 7.15.2.2.
@@ -149,11 +149,11 @@ int iswxdigit __P ((wint_t __wc));
 
 /* Construct value that describes a class of wide characters identified
    by the string argument PROPERTY.  */
-wctype_t wctype __P ((__const char *__property));
+extern wctype_t wctype __P ((__const char *__property));
 
 /* Determine whether the wide-character WC has the property described by
    DESC.  */
-int iswctype __P ((wint_t __wc, wctype_t __desc));
+extern int iswctype __P ((wint_t __wc, wctype_t __desc));
 
 
 /*
@@ -161,10 +161,10 @@ int iswctype __P ((wint_t __wc, wctype_t __desc));
  */
 
 /* Converts an uppercase letter to the corresponding lowercase letter.  */
-wint_t towlower __P ((wint_t __wc));
+extern wint_t towlower __P ((wint_t __wc));
 
 /* Converts an lowercase letter to the corresponding uppercase letter.  */
-wint_t towupper __P ((wint_t __wc));
+extern wint_t towupper __P ((wint_t __wc));
 
 /*
  * Extensible wide-character mapping functions: 7.15.3.2.
@@ -172,10 +172,10 @@ wint_t towupper __P ((wint_t __wc));
 
 /* Construct value that describes a mapping between wide characters
    identified by the string argument PROPERTY.  */
-wctrans_t wctrans __P ((__const char *__property));
+extern wctrans_t wctrans __P ((__const char *__property));
 
 /* Map the wide character WC using the mapping described by DESC.  */
-wint_t towctrans __P ((wint_t __wc, wctrans_t __desc));
+extern wint_t towctrans __P ((wint_t __wc, wctrans_t __desc));