summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-02-03 03:18:58 +0000
committerUlrich Drepper <drepper@redhat.com>1997-02-03 03:18:58 +0000
commit1228ed5cd520342af906f07eb1b21be82d0b40d0 (patch)
treede90f47d4acf5c7d92e68d9e5bf4e43a33144a17
parentc0e4567461c09ba47ddbc20e6b0ab09bdb0237ab (diff)
downloadglibc-1228ed5cd520342af906f07eb1b21be82d0b40d0.tar.gz
glibc-1228ed5cd520342af906f07eb1b21be82d0b40d0.tar.xz
glibc-1228ed5cd520342af906f07eb1b21be82d0b40d0.zip
update from main archive 970202 cvs/libc-970203
1997-02-03 02:33  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-deps.c (_dl_map_object_deps): Handle multiple AUXILIARY
	entries.  This is still no complete implementation since AUXILIARY
	entries in other shared objects are not yet handled.

	* libio/libio.h (_IO_cookie_io_functions_t): Move to C++ protected
	place.

	* po/es.po: Update.
	* po/fr.po: Update.
	* po/nl.po: Update.

	* time/Makefile: Better cross-compile support.  Avoid test which
	cannot be run.
	(CFLAGS-tzset.c): New variable.  Overwrite TZDEFAULT value from
	tzfile.h file.
	* time/tzfile.c (__tzfile_read): Allow TZDEFAULT start with '/' even
	in SUID programs.
	* time/tzset.c (__tzset_internal): If TZ envvar is not set use same
	default values as in tzfile.c.

	* elf/dynamic-link.h (elf_get_dynamic_info): Recognize versioning
	tags.
	* elf/link.h: Likewise.
	* elf/elf.h: Add tag definitions and data structures for versioning.

1997-02-03 02:17  Ulrich Drepper  <drepper@cygnus.com>

	* nis/rpcsvc/yp.x (struct ypresp_key_val): There is not stupid
	"Sun bug".  This is the order of elements also used by 4.4BSD.
	* nis/rpcsvc/yp.h: Likewise.
	Reported by HJ Lu.

1997-02-02 12:13  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* sunrpc/Makefile ($(objpfx)x%.h, $(objpfx)x%.c): Add "@:" as
	action.

	* Makefile (install): Pass installation directories as arguments
	to ldconfig.

1997-02-02 23:15  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/malloc.c (__after_morecore_hook): New variable.
	(malloc_extend_top): Call __after_morecore_hook if set.
	(main_trim): Likewise.
	* malloc/malloc.h: Add declaration of __after_morecore_hook.
	Suggested by Marcus Daniels.

1997-02-02 23:00  Marcus G. Daniels  <marcus@tdb.com>

	* malloc/malloc.c (rEALLOc): Protect tsd_setspecific call by
	#ifndef NO_THREADS.
	(mallinfo): Likewise.

	* malloc/malloc.c (__morecore): Make external since it is used in
	programs.

1997-02-02 15:10  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/statbuf.h (struct stat): Make st_dev field
	unsigned.

1997-02-01 23:36  Richard Henderson  <rth@tamu.edu>

	* sysdeps/alpha/stxncpy.S ($unaligned) [src % 8 > dst % 8]: Don't
	use t6 as a temporary; it contains bits we still need in $u_head.

1997-01-31 15:05  John Bowman  <bowman@ipp-garching.mpg.de>

	* sysdeps/i386/fpu/__math.h [__USE_MISC]: Don't declare prototypes
	using __ prefix.  Add prototype for log1p.
-rw-r--r--ChangeLog74
-rw-r--r--Makefile2
-rw-r--r--README4
-rw-r--r--elf/dl-deps.c73
-rw-r--r--elf/dynamic-link.h10
-rw-r--r--elf/elf.h84
-rw-r--r--elf/link.h7
-rw-r--r--libio/libio.h18
-rw-r--r--malloc/malloc.c21
-rw-r--r--malloc/malloc.h1
-rw-r--r--nis/rpcsvc/yp.h224
-rw-r--r--nis/rpcsvc/yp.x57
-rw-r--r--po/es.po430
-rw-r--r--po/fr.po6
-rw-r--r--po/nl.po68
-rw-r--r--sunrpc/Makefile2
-rw-r--r--sysdeps/alpha/stxncpy.S6
-rw-r--r--sysdeps/i386/fpu/__math.h25
-rw-r--r--sysdeps/unix/sysv/linux/statbuf.h6
-rw-r--r--time/Makefile16
-rw-r--r--time/tzfile.c24
-rw-r--r--time/tzset.c14
22 files changed, 751 insertions, 421 deletions
diff --git a/ChangeLog b/ChangeLog
index 3ea031bed0..4383e66c07 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,77 @@
+1997-02-03 02:33  Ulrich Drepper  <drepper@cygnus.com>
+
+	* elf/dl-deps.c (_dl_map_object_deps): Handle multiple AUXILIARY
+	entries.  This is still no complete implementation since AUXILIARY
+	entries in other shared objects are not yet handled.
+
+	* libio/libio.h (_IO_cookie_io_functions_t): Move to C++ protected
+	place.
+
+	* po/es.po: Update.
+	* po/fr.po: Update.
+	* po/nl.po: Update.
+
+	* time/Makefile: Better cross-compile support.  Avoid test which
+	cannot be run.
+	(CFLAGS-tzset.c): New variable.  Overwrite TZDEFAULT value from
+	tzfile.h file.
+	* time/tzfile.c (__tzfile_read): Allow TZDEFAULT start with '/' even
+	in SUID programs.
+	* time/tzset.c (__tzset_internal): If TZ envvar is not set use same
+	default values as in tzfile.c.
+
+	* elf/dynamic-link.h (elf_get_dynamic_info): Recognize versioning
+	tags.
+	* elf/link.h: Likewise.
+	* elf/elf.h: Add tag definitions and data structures for versioning.
+
+1997-02-03 02:17  Ulrich Drepper  <drepper@cygnus.com>
+
+	* nis/rpcsvc/yp.x (struct ypresp_key_val): There is not stupid
+	"Sun bug".  This is the order of elements also used by 4.4BSD.
+	* nis/rpcsvc/yp.h: Likewise.
+	Reported by HJ Lu.
+
+1997-02-02 12:13  H.J. Lu  <hjl@gnu.ai.mit.edu>
+
+	* sunrpc/Makefile ($(objpfx)x%.h, $(objpfx)x%.c): Add "@:" as
+	action.
+
+	* Makefile (install): Pass installation directories as arguments
+	to ldconfig.
+
+1997-02-02 23:15  Ulrich Drepper  <drepper@cygnus.com>
+
+	* malloc/malloc.c (__after_morecore_hook): New variable.
+	(malloc_extend_top): Call __after_morecore_hook if set.
+	(main_trim): Likewise.
+	* malloc/malloc.h: Add declaration of __after_morecore_hook.
+	Suggested by Marcus Daniels.
+
+1997-02-02 23:00  Marcus G. Daniels  <marcus@tdb.com>
+
+	* malloc/malloc.c (rEALLOc): Protect tsd_setspecific call by
+	#ifndef NO_THREADS.
+	(mallinfo): Likewise.
+
+	* malloc/malloc.c (__morecore): Make external since it is used in
+	programs.
+
+1997-02-02 15:10  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/unix/sysv/linux/statbuf.h (struct stat): Make st_dev field
+	unsigned.
+
+1997-02-01 23:36  Richard Henderson  <rth@tamu.edu>
+
+	* sysdeps/alpha/stxncpy.S ($unaligned) [src % 8 > dst % 8]: Don't
+	use t6 as a temporary; it contains bits we still need in $u_head.
+
+1997-01-31 15:05  John Bowman  <bowman@ipp-garching.mpg.de>
+
+	* sysdeps/i386/fpu/__math.h [__USE_MISC]: Don't declare prototypes
+	using __ prefix.  Add prototype for log1p.
+
 1997-02-02 00:39  Ulrich Drepper  <drepper@cygnus.com>
 
 	* dirent/dirent.h: Add description _DIRENT_HAVE_D_TYPE.
diff --git a/Makefile b/Makefile
index 03408c768e..f2d796f19b 100644
--- a/Makefile
+++ b/Makefile
@@ -119,7 +119,7 @@ ifeq (no,$(cross-compiling))
 ifeq (yes,$(build-shared))
 install:
 	test ! -x $(common-objpfx)elf/ldconfig || \
-	  $(common-objpfx)elf/ldconfig -d
+	  $(common-objpfx)elf/ldconfig -d $(inst_slibdir) $(inst_libdir)
 endif
 endif
 
diff --git a/README b/README
index 32b6973893..83cf531d28 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This directory contains the version 2.0 test release of the GNU C Library.
+This directory contains the version 2.0.1 test release of the GNU C Library.
 Many bugs have been fixed since the last release.
 Some bugs surely remain.
 
@@ -46,7 +46,7 @@ provides the Unix `crypt' function, plus some other entry points.
 Because of the United States export restriction on DES implementations,
 we are distributing this code separately from the rest of the C
 library.  There is an extra distribution tar file just for crypt; it is
-called `glibc-crypt-2.0.tar.gz'.  You can just unpack the crypt
+called `glibc-crypt-2.0.1.tar.gz'.  You can just unpack the crypt
 distribution along with the rest of the C library and build; you can
 also build the library without getting crypt.  Users outside the USA
 can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
index f034196762..7a6772979b 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -32,7 +32,7 @@ _dl_map_object_deps (struct link_map *map,
       struct link_map *map;
       struct list *next;
     };
-  struct list head[2 + npreloads], *tailp, *scanp;
+  struct list *head, *tailp, *scanp;
   struct list duphead, *duptailp;
   unsigned int nduplist;
   unsigned int nlist, naux, i;
@@ -49,36 +49,57 @@ _dl_map_object_deps (struct link_map *map,
 
   naux = nlist = 0;
 
-#define AUXTAG	(DT_NUM + DT_PROCNUM + DT_EXTRATAGIDX (DT_AUXILIARY))
+  /* XXX The AUXILIARY implementation isn't correct in the moment. XXX
+     XXX The problem is that we currently do not handle auxiliary  XXX
+     XXX entries in the loaded objects.				   XXX */
 
+#define AUXTAG	(DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM \
+		 + DT_EXTRATAGIDX (DT_AUXILIARY))
+
+  /* First determine the number of auxiliary objects we have to load.  */
   if (map->l_info[AUXTAG])
     {
-      /* There is an auxiliary library specified.  We try to load it,
-	 and if we can, use its symbols in preference to our own.
-	 But if we can't load it, we just silently ignore it.
-	 XXX support multiple DT_AUXILIARYs?
-       */
-      struct link_map *aux;
-      void openaux (void)
-	{
-	  const char *strtab
-	    = ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
-	  aux = _dl_map_object (map, strtab + map->l_info[AUXTAG]->d_un.d_val,
-				map->l_type == lt_executable ? lt_library :
-				map->l_type, trace_mode);
-	}
-      char *errstring;
-      const char *objname;
-      if (! _dl_catch_error (&errstring, &objname, &openaux))
-	{
-	  /* The auxiliary object is actually there.  Use it
-	     as the first search element, even before MAP itself.  */
-	  preload (aux);
-	  naux = 1;
-	}
+      ElfW(Dyn) *d;
+      for (d = map->l_ld; d->d_tag != DT_NULL; ++d)
+	if (d->d_tag == DT_AUXILIARY)
+	  ++naux;
+    }
+
+  /* Now we can allocate the array for the linker maps. */
+  head = (struct list *) alloca (sizeof (struct list)
+				 * (naux + npreloads + 2));
+
+  /* Load the auxiliary objects, even before the object itself.  */
+  if (map->l_info[AUXTAG])
+    {
+      /* There is at least one auxiliary library specified.  We try to
+	 load it, and if we can, use its symbols in preference to our
+	 own.  But if we can't load it, we just silently ignore it.  */
+      const char *strtab
+	= ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
+      ElfW(Dyn) *d;
+
+      for (d = map->l_ld; d->d_tag != DT_NULL; ++d)
+	if (d->d_tag == DT_AUXILIARY)
+	  {
+	    struct link_map *aux;
+	    void openaux (void)
+	      {
+		aux = _dl_map_object (map, strtab + d->d_un.d_val,
+				      (map->l_type == lt_executable
+				       ? lt_library : map->l_type),
+				      trace_mode);
+	      }
+	    char *errstring;
+	    const char *objname;
+	    if (! _dl_catch_error (&errstring, &objname, openaux))
+	      /* The auxiliary object is actually there.  Use it as
+		 the first search element, even before MAP itself.  */
+	      preload (aux);
+	  }
     }
 
-  /* Start the search list with one element: MAP itself.  */
+  /* Next load MAP itself.  */
   preload (map);
 
   /* Add the preloaded items after MAP but before any of its dependencies.  */
diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h
index c613f824d8..1d134ddf2f 100644
--- a/elf/dynamic-link.h
+++ b/elf/dynamic-link.h
@@ -26,11 +26,12 @@
 
 static inline void __attribute__ ((unused))
 elf_get_dynamic_info (ElfW(Dyn) *dyn,
-		      ElfW(Dyn) *info[DT_NUM + DT_PROCNUM + DT_EXTRANUM])
+		      ElfW(Dyn) *info[DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM
+				     + DT_EXTRANUM])
 {
   unsigned int i;
 
-  for (i = 0; i < DT_NUM + DT_PROCNUM + DT_EXTRANUM; ++i)
+  for (i = 0; i < DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM + DT_EXTRANUM; ++i)
     info[i] = NULL;
 
   if (! dyn)
@@ -43,8 +44,11 @@ elf_get_dynamic_info (ElfW(Dyn) *dyn,
       else if (dyn->d_tag >= DT_LOPROC &&
 	       dyn->d_tag < DT_LOPROC + DT_PROCNUM)
 	info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn;
+      else if ((Elf32_Word) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)
+	info[DT_VERSIONTAGIDX (dyn->d_tag) + DT_NUM + DT_PROCNUM] = dyn;
       else if ((Elf32_Word) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)
-	info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_PROCNUM] = dyn;
+	info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_PROCNUM
+	     + DT_VERSIONTAGNUM] = dyn;
       else
 	assert (! "bad dynamic tag");
       dyn++;
diff --git a/elf/elf.h b/elf/elf.h
index d25934b411..05eeb3664f 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -232,6 +232,11 @@ typedef struct
 #define SHT_SHLIB	10		/* Reserved */
 #define SHT_DYNSYM	11		/* Dynamic linker symbol table */
 #define	SHT_NUM		12		/* Number of defined types.  */
+#define SHT_LOSUNW	0x6ffffffd	/* Sun-specific low bound.  */
+#define SHT_GNU_verdef	0x6ffffffd	/* Version definition section.  */
+#define SHT_GNU_verneed	0x6ffffffe	/* Version needs section.  */
+#define SHT_GNU_versym	0x6fffffff	/* Version symbol table.  */
+#define SHT_HISUNW	0x6fffffff	/* Sun-specific high bound.  */
 #define SHT_LOPROC	0x70000000	/* Start of processor-specific */
 #define SHT_HIPROC	0x7fffffff	/* End of processor-specific */
 #define SHT_LOUSER	0x80000000	/* Start of application-specific */
@@ -464,6 +469,20 @@ typedef struct
 #define DT_HIPROC	0x7fffffff	/* End of processor-specific */
 #define	DT_PROCNUM	DT_MIPS_NUM	/* Most used by any processor */
 
+/* The versioning entry types.  The next are defined as part of the
+   GNU extension.  */
+#define DT_VERSYM	0x6ffffff0
+
+/* These were chosen by Sun.  */
+#define	DT_VERDEF	0x6ffffffc	/* Address of version definition
+					   table */
+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of version definitions */
+#define	DT_VERNEED	0x6ffffffe	/* Address of table with needed
+					   versions */
+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of needed versions */
+#define DT_VERSIONTAGIDX(tag)	(DT_VERNEEDNUM - (tag))	/* Reverse order! */
+#define DT_VERSIONTAGNUM 16
+
 /* Sun added these machine-independent extensions in the "processor-specific"
    range.  Be compatible.  */
 #define DT_AUXILIARY    0x7ffffffd      /* Shared object to load before self */
@@ -471,6 +490,71 @@ typedef struct
 #define DT_EXTRATAGIDX(tag)	((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
 #define DT_EXTRANUM	3
 
+/* Version definition sections.  */
+
+typedef struct
+{
+  Elf32_Half	vd_version;		/* Version revision */
+  Elf32_Half	vd_flags;		/* Version information */
+  Elf32_Half	vd_ndx;			/* Version Index */
+  Elf32_Half	vd_cnt;			/* Number of associated aux entries */
+  Elf32_Word	vd_hash;		/* Version name hash value */
+  Elf32_Word	vd_aux;			/* Offset in bytes to verdaux array */
+  Elf32_Word	vd_next;		/* Offset in bytes to next verdef
+					   entry */
+} Elf32_Verdef;
+
+/* Legal values for vd_version (version revision).  */
+#define VER_DEF_NONE	0		/* No version */
+#define VER_DEF_CURRENT	1		/* Current version */
+#define VER_DEF_NUM	2		/* Given version number */
+
+/* Legal values for vd_flags (version information flags).  */
+#define VER_FLG_BASE	0x1		/* Version definition of file itself */
+#define VER_FLG_WEAK	0x2		/* Weak version identifier */
+
+/* Auxialiary version information.  */
+
+typedef struct
+{
+  Elf32_Addr	vda_name;		/* Version or dependency names */
+  Elf32_Word	vda_next;		/* Offset in bytes to next verdaux
+					   entry */
+} Elf32_Verdaux;
+
+/* Version dependency section.  */
+
+typedef struct
+{
+  Elf32_Half	vn_version;		/* Version of structure */
+  Elf32_Half	vn_cnt;			/* Number of associated aux entries */
+  Elf32_Addr	vn_file;		/* Offset of filename for this
+					   dependency */
+  Elf32_Word	vn_aux;			/* Offset in bytes to vernaux array */
+  Elf32_Word	vn_next;		/* Offset in bytes to next verneed
+					   entry */
+} Elf32_Verneed;
+
+/* Legal values for vn_version (version revision).  */
+#define VER_NEED_NONE	 0		/* No version */
+#define VER_NEED_CURRENT 1		/* Current version */
+#define VER_NEED_NUM	 2		/* Given version number */
+
+/* Auxiliary needed version information.  */
+
+typedef struct
+{
+  Elf32_Word	vna_hash;		/* Hash value of dependency name */
+  Elf32_Half	vna_flags;		/* Dependency specific information */
+  Elf32_Half	vna_other;		/* Unused */
+  Elf32_Addr	vna_name;		/* Dependency name string offset */
+  Elf32_Word	vna_next;		/* Offset in bytes to next vernaux
+					   entry */
+} Elf32_Vernaux;
+
+/* Legal values for vna_flags.  */
+#define VER_FLG_WEAK	0x2		/* Weak verison identifier */
+
 
 /* Auxiliary vector.  */
 
diff --git a/elf/link.h b/elf/link.h
index 95d8f0912d..b05ecca199 100644
--- a/elf/link.h
+++ b/elf/link.h
@@ -99,9 +99,12 @@ struct link_map
        [0,DT_NUM) are indexed by the processor-independent tags.
        [DT_NUM,DT_NUM+DT_PROCNUM) are indexed by the tag minus DT_LOPROC.
        [DT_NUM+DT_PROCNUM,DT_NUM+DT_PROCNUM+DT_EXTRANUM) are indexed
-       by DT_EXTRATAGIDX(tagvalue) (see <elf.h>).  */
+       by DT_EXTRATAGIDX(tagvalue) and
+       [DT_NUM+DT_PROCNUM+DT_VERSIONTAGNUM,
+        DT_NUM+DT_PROCNUM+DT_VERSIONTAGNUM+DT_EXTRANUM)
+       are indexed by DT_EXTRATAGIDX(tagvalue) (see <elf.h>).  */
 
-    ElfW(Dyn) *l_info[DT_NUM + DT_PROCNUM + DT_EXTRANUM];
+    ElfW(Dyn) *l_info[DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM + DT_EXTRANUM];
     const ElfW(Phdr) *l_phdr;	/* Pointer to program header table in core.  */
     ElfW(Addr) l_entry;		/* Entry point location.  */
     ElfW(Half) l_phnum;		/* Number of program header entries.  */
diff --git a/libio/libio.h b/libio/libio.h
index c51cad4234..d0a76c34b2 100644
--- a/libio/libio.h
+++ b/libio/libio.h
@@ -149,15 +149,6 @@ the executable file might be covered by the GNU General Public License. */
 
 struct _IO_jump_t;  struct _IO_FILE;
 
-/* Define the user-visible type, with user-friendly member names.  */
-typedef struct
-{
-  _IO_ssize_t (*read) __P ((struct _IO_FILE *, void *, _IO_ssize_t));
-  _IO_ssize_t (*write) __P ((struct _IO_FILE *, const void *, _IO_ssize_t));
-  _IO_fpos_t (*seek) __P ((struct _IO_FILE *, _IO_off_t, int));
-  int (*close) __P ((struct _IO_FILE *));
-} _IO_cookie_io_functions_t;
-
 /* Handle lock.  */
 #ifdef _IO_MTSAFE_IO
 #include <stdio-lock.h>
@@ -236,6 +227,15 @@ extern struct _IO_FILE_plus _IO_stdin_, _IO_stdout_, _IO_stderr_;
 #define _IO_stderr ((_IO_FILE*)(&_IO_stderr_))
 
 
+/* Define the user-visible type, with user-friendly member names.  */
+typedef struct
+{
+  _IO_ssize_t (*read) __P ((struct _IO_FILE *, void *, _IO_ssize_t));
+  _IO_ssize_t (*write) __P ((struct _IO_FILE *, const void *, _IO_ssize_t));
+  _IO_fpos_t (*seek) __P ((struct _IO_FILE *, _IO_off_t, int));
+  int (*close) __P ((struct _IO_FILE *));
+} _IO_cookie_io_functions_t;
+
 /* Special file type for fopencookie function.  */
 struct _IO_cookie_file {
   struct _IO_FILE file;
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 57867c90c6..0380527f64 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -820,12 +820,12 @@ do {                                                                          \
 #if __STD_C
 
 Void_t * __default_morecore (ptrdiff_t);
-static Void_t *(*__morecore)(ptrdiff_t) = __default_morecore;
+Void_t *(*__morecore)(ptrdiff_t) = __default_morecore;
 
 #else
 
 Void_t * __default_morecore ();
-static Void_t *(*__morecore)() = __default_morecore;
+Void_t *(*__morecore)() = __default_morecore;
 
 #endif
 
@@ -1615,6 +1615,7 @@ __malloc_ptr_t weak_variable (*__realloc_hook)
  __MALLOC_P ((__malloc_ptr_t __ptr, size_t __size)) = realloc_hook_ini;
 __malloc_ptr_t weak_variable (*__memalign_hook)
  __MALLOC_P ((size_t __size, size_t __alignment)) = memalign_hook_ini;
+void weak_variable (*__after_morecore_hook) __MALLOC_P ((void)) = NULL;
 
 /* Activate a standard set of debugging hooks. */
 void
@@ -2215,6 +2216,10 @@ static void malloc_extend_top(ar_ptr, nb) arena *ar_ptr; INTERNAL_SIZE_T nb;
         (brk < old_end && old_top != initial_top(&main_arena)))
       return;
 
+    /* Call the `morecore' hook if necessary.  */
+    if (__after_morecore_hook)
+      (*__after_morecore_hook) ();
+
     sbrked_mem += sbrk_size;
 
     if (brk == old_end) { /* can just add bytes to current top */
@@ -2243,6 +2248,10 @@ static void malloc_extend_top(ar_ptr, nb) arena *ar_ptr; INTERNAL_SIZE_T nb;
       new_brk = (char*)(MORECORE (correction));
       if (new_brk == (char*)(MORECORE_FAILURE)) return;
 
+      /* Call the `morecore' hook if necessary.  */
+      if (__after_morecore_hook)
+	(*__after_morecore_hook) ();
+
       sbrked_mem += correction;
 
       top(&main_arena) = (mchunkptr)brk;
@@ -2914,8 +2923,10 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;
   (void)mutex_lock(&ar_ptr->mutex);
 #endif
 
+#ifndef NO_THREADS
   /* As in malloc(), remember this arena for the next allocation. */
   tsd_setspecific(arena_key, (Void_t *)ar_ptr);
+#endif
 
   newp = chunk_realloc(ar_ptr, oldp, oldsize, nb);
 
@@ -3421,6 +3432,10 @@ main_trim(pad) size_t pad;
 
   new_brk = (char*)(MORECORE (-extra));
 
+  /* Call the `morecore' hook if necessary.  */
+  if (__after_morecore_hook)
+    (*__after_morecore_hook) ();
+
   if (new_brk == (char*)(MORECORE_FAILURE)) { /* sbrk failed? */
     /* Try to figure out what we have */
     current_brk = (char*)(MORECORE (0));
@@ -3703,7 +3718,9 @@ struct mallinfo mALLINFo()
   struct mallinfo mi;
   Void_t *vptr = NULL;
 
+#ifndef NO_THREADS
   tsd_getspecific(arena_key, vptr);
+#endif
   malloc_update_mallinfo((vptr ? (arena*)vptr : &main_arena), &mi);
   return mi;
 }
diff --git a/malloc/malloc.h b/malloc/malloc.h
index 5794f26663..b27d06252c 100644
--- a/malloc/malloc.h
+++ b/malloc/malloc.h
@@ -181,6 +181,7 @@ extern __malloc_ptr_t (*__realloc_hook) __MALLOC_P ((__malloc_ptr_t __ptr,
 						     size_t __size));
 extern __malloc_ptr_t (*__memalign_hook) __MALLOC_P ((size_t __size,
 						      size_t __alignment));
+extern void (*__after_morecore_hook) __MALLOC_P ((void));
 
 /* Activate a standard set of debugging hooks. */
 extern void __malloc_check_init __MALLOC_P ((void));
diff --git a/nis/rpcsvc/yp.h b/nis/rpcsvc/yp.h
index f625eced50..0bee83b259 100644
--- a/nis/rpcsvc/yp.h
+++ b/nis/rpcsvc/yp.h
@@ -5,23 +5,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
@@ -51,13 +51,13 @@ enum ypstat {
 	YP_VERS = -8,
 };
 typedef enum ypstat ypstat;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypstat(XDR *, ypstat*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypstat(XDR *, ypstat*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypstat();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 enum ypxfrstat {
@@ -79,69 +79,69 @@ enum ypxfrstat {
 	YPXFR_REFUSED = -14,
 };
 typedef enum ypxfrstat ypxfrstat;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypxfrstat(XDR *, ypxfrstat*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypxfrstat(XDR *, ypxfrstat*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypxfrstat();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 typedef char *domainname;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_domainname(XDR *, domainname*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_domainname(XDR *, domainname*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_domainname();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 typedef char *mapname;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_mapname(XDR *, mapname*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_mapname(XDR *, mapname*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_mapname();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 typedef char *peername;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_peername(XDR *, peername*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_peername(XDR *, peername*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_peername();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 typedef struct {
 	u_int keydat_len;
 	char *keydat_val;
 } keydat;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_keydat(XDR *, keydat*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_keydat(XDR *, keydat*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_keydat();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 typedef struct {
 	u_int valdat_len;
 	char *valdat_val;
 } valdat;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_valdat(XDR *, valdat*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_valdat(XDR *, valdat*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_valdat();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypmap_parms {
@@ -151,13 +151,13 @@ struct ypmap_parms {
 	peername peer;
 };
 typedef struct ypmap_parms ypmap_parms;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypmap_parms(XDR *, ypmap_parms*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypmap_parms(XDR *, ypmap_parms*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypmap_parms();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypreq_key {
@@ -166,13 +166,13 @@ struct ypreq_key {
 	keydat key;
 };
 typedef struct ypreq_key ypreq_key;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypreq_key(XDR *, ypreq_key*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypreq_key(XDR *, ypreq_key*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypreq_key();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypreq_nokey {
@@ -180,13 +180,13 @@ struct ypreq_nokey {
 	mapname map;
 };
 typedef struct ypreq_nokey ypreq_nokey;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypreq_nokey();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypreq_xfr {
@@ -196,13 +196,13 @@ struct ypreq_xfr {
 	u_int port;
 };
 typedef struct ypreq_xfr ypreq_xfr;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypreq_xfr();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypresp_val {
@@ -210,28 +210,28 @@ struct ypresp_val {
 	valdat val;
 };
 typedef struct ypresp_val ypresp_val;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypresp_val(XDR *, ypresp_val*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypresp_val(XDR *, ypresp_val*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypresp_val();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypresp_key_val {
 	ypstat stat;
-	valdat val;
 	keydat key;
+	valdat val;
 };
 typedef struct ypresp_key_val ypresp_key_val;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypresp_key_val();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypresp_master {
@@ -239,13 +239,13 @@ struct ypresp_master {
 	peername peer;
 };
 typedef struct ypresp_master ypresp_master;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypresp_master(XDR *, ypresp_master*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypresp_master(XDR *, ypresp_master*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypresp_master();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypresp_order {
@@ -253,13 +253,13 @@ struct ypresp_order {
 	u_int ordernum;
 };
 typedef struct ypresp_order ypresp_order;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypresp_order(XDR *, ypresp_order*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypresp_order(XDR *, ypresp_order*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypresp_order();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypresp_all {
@@ -269,13 +269,13 @@ struct ypresp_all {
 	} ypresp_all_u;
 };
 typedef struct ypresp_all ypresp_all;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypresp_all(XDR *, ypresp_all*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypresp_all(XDR *, ypresp_all*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypresp_all();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypresp_xfr {
@@ -283,13 +283,13 @@ struct ypresp_xfr {
 	ypxfrstat xfrstat;
 };
 typedef struct ypresp_xfr ypresp_xfr;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypresp_xfr();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypmaplist {
@@ -297,13 +297,13 @@ struct ypmaplist {
 	struct ypmaplist *next;
 };
 typedef struct ypmaplist ypmaplist;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypmaplist(XDR *, ypmaplist*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypmaplist(XDR *, ypmaplist*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypmaplist();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypresp_maplist {
@@ -311,13 +311,13 @@ struct ypresp_maplist {
 	ypmaplist *maps;
 };
 typedef struct ypresp_maplist ypresp_maplist;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypresp_maplist();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 enum yppush_status {
@@ -339,13 +339,13 @@ enum yppush_status {
 	YPPUSH_REFUSED = -14,
 };
 typedef enum yppush_status yppush_status;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_yppush_status(XDR *, yppush_status*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_yppush_status(XDR *, yppush_status*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_yppush_status();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct yppushresp_xfr {
@@ -353,13 +353,13 @@ struct yppushresp_xfr {
 	yppush_status status;
 };
 typedef struct yppushresp_xfr yppushresp_xfr;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_yppushresp_xfr();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 enum ypbind_resptype {
@@ -367,13 +367,13 @@ enum ypbind_resptype {
 	YPBIND_FAIL_VAL = 2,
 };
 typedef enum ypbind_resptype ypbind_resptype;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypbind_resptype();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypbind_binding {
@@ -381,13 +381,13 @@ struct ypbind_binding {
 	char ypbind_binding_port[2];
 };
 typedef struct ypbind_binding ypbind_binding;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypbind_binding(XDR *, ypbind_binding*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypbind_binding(XDR *, ypbind_binding*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypbind_binding();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 struct ypbind_resp {
@@ -398,13 +398,13 @@ struct ypbind_resp {
 	} ypbind_resp_u;
 };
 typedef struct ypbind_resp ypbind_resp;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypbind_resp(XDR *, ypbind_resp*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypbind_resp(XDR *, ypbind_resp*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypbind_resp();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 #define YPBIND_ERR_ERR 1
 #define YPBIND_ERR_NOSERV 2
@@ -416,13 +416,13 @@ struct ypbind_setdom {
 	u_int ypsetdom_vers;
 };
 typedef struct ypbind_setdom ypbind_setdom;
-#ifdef __cplusplus 
+#ifdef __cplusplus
 extern "C" bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*);
-#elif __STDC__ 
+#elif __STDC__
 extern  bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*);
-#else /* Old Style C */ 
+#else /* Old Style C */
 bool_t xdr_ypbind_setdom();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 
 #define YPPROG ((u_long)100004)
@@ -504,7 +504,7 @@ extern  ypresp_order * ypproc_order_2_svc(ypreq_nokey *, struct svc_req *);
 extern  ypresp_maplist * ypproc_maplist_2(domainname *, CLIENT *);
 extern  ypresp_maplist * ypproc_maplist_2_svc(domainname *, struct svc_req *);
 
-#else /* Old Style C */ 
+#else /* Old Style C */
 #define YPPROC_NULL ((u_long)0)
 extern  void * ypproc_null_2();
 extern  void * ypproc_null_2_svc();
@@ -541,7 +541,7 @@ extern  ypresp_order * ypproc_order_2_svc();
 #define YPPROC_MAPLIST ((u_long)11)
 extern  ypresp_maplist * ypproc_maplist_2();
 extern  ypresp_maplist * ypproc_maplist_2_svc();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 #define YPPUSH_XFRRESPPROG ((u_long)0x40000000)
 #define YPPUSH_XFRRESPVERS ((u_long)1)
@@ -562,14 +562,14 @@ extern  void * yppushproc_null_1_svc(void *, struct svc_req *);
 extern  void * yppushproc_xfrresp_1(yppushresp_xfr *, CLIENT *);
 extern  void * yppushproc_xfrresp_1_svc(yppushresp_xfr *, struct svc_req *);
 
-#else /* Old Style C */ 
+#else /* Old Style C */
 #define YPPUSHPROC_NULL ((u_long)0)
 extern  void * yppushproc_null_1();
 extern  void * yppushproc_null_1_svc();
 #define YPPUSHPROC_XFRRESP ((u_long)1)
 extern  void * yppushproc_xfrresp_1();
 extern  void * yppushproc_xfrresp_1_svc();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 #define YPBINDPROG ((u_long)100007)
 #define YPBINDVERS ((u_long)2)
@@ -596,7 +596,7 @@ extern  ypbind_resp * ypbindproc_domain_2_svc(domainname *, struct svc_req *);
 extern  void * ypbindproc_setdom_2(ypbind_setdom *, CLIENT *);
 extern  void * ypbindproc_setdom_2_svc(ypbind_setdom *, struct svc_req *);
 
-#else /* Old Style C */ 
+#else /* Old Style C */
 #define YPBINDPROC_NULL ((u_long)0)
 extern  void * ypbindproc_null_2();
 extern  void * ypbindproc_null_2_svc();
@@ -606,6 +606,6 @@ extern  ypbind_resp * ypbindproc_domain_2_svc();
 #define YPBINDPROC_SETDOM ((u_long)2)
 extern  void * ypbindproc_setdom_2();
 extern  void * ypbindproc_setdom_2_svc();
-#endif /* Old Style C */ 
+#endif /* Old Style C */
 
 #endif /* !__RPCSVC_YP_H__ */
diff --git a/nis/rpcsvc/yp.x b/nis/rpcsvc/yp.x
index be855df749..6be27820b3 100644
--- a/nis/rpcsvc/yp.x
+++ b/nis/rpcsvc/yp.x
@@ -7,23 +7,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
@@ -82,7 +82,7 @@ typedef opaque valdat<YPMAXRECORD>;
 
 
 struct ypmap_parms {
-	domainname domain;	
+	domainname domain;
 	mapname map;
 	unsigned int ordernum;
 	peername peer;
@@ -95,10 +95,10 @@ struct ypreq_key {
 };
 
 struct ypreq_nokey {
-	domainname domain;	
+	domainname domain;
 	mapname map;
 };
-	
+
 struct ypreq_xfr {
 	ypmap_parms map_parms;
 	unsigned int transid;
@@ -114,18 +114,13 @@ struct ypresp_val {
 
 struct ypresp_key_val {
 	ypstat stat;
-#ifdef STUPID_SUN_BUG
 	keydat key;
 	valdat val;
-#else
-	valdat val;
-	keydat key;
-#endif
 };
 
 
 struct ypresp_master {
-	ypstat stat;	
+	ypstat stat;
 	peername peer;
 };
 
@@ -184,31 +179,31 @@ struct yppushresp_xfr {
  * Response structure and overall result status codes.  Success and failure
  * represent two separate response message types.
  */
- 
+
 enum ypbind_resptype {
-	YPBIND_SUCC_VAL = 1, 
+	YPBIND_SUCC_VAL = 1,
 	YPBIND_FAIL_VAL = 2
 };
- 
+
 struct ypbind_binding {
     opaque ypbind_binding_addr[4]; /* In network order */
     opaque ypbind_binding_port[2]; /* In network order */
-};   
+};
 
 union ypbind_resp switch (ypbind_resptype ypbind_status) {
 case YPBIND_FAIL_VAL:
         unsigned ypbind_error;
 case YPBIND_SUCC_VAL:
         ypbind_binding ypbind_bindinfo;
-};     
+};
 
 /* Detailed failure reason codes for response field ypbind_error*/
- 
+
 const YPBIND_ERR_ERR    = 1;	/* Internal error */
 const YPBIND_ERR_NOSERV = 2;	/* No bound server for passed domain */
 const YPBIND_ERR_RESC   = 3;	/* System resource allocation failure */
- 
- 
+
+
 /*
  * Request data structure for ypbind "Set domain" procedure.
  */
@@ -224,11 +219,11 @@ struct ypbind_setdom {
  */
 program YPPROG {
 	version YPVERS {
-		void 
+		void
 		YPPROC_NULL(void) = 0;
 
-		bool 
-		YPPROC_DOMAIN(domainname) = 1;	
+		bool
+		YPPROC_DOMAIN(domainname) = 1;
 
 		bool
 		YPPROC_DOMAIN_NONACK(domainname) = 2;
@@ -236,10 +231,10 @@ program YPPROG {
 		ypresp_val
 		YPPROC_MATCH(ypreq_key) = 3;
 
-		ypresp_key_val 
+		ypresp_key_val
 		YPPROC_FIRST(ypreq_key) = 4;
 
-		ypresp_key_val 
+		ypresp_key_val
 		YPPROC_NEXT(ypreq_key) = 5;
 
 		ypresp_xfr
@@ -257,7 +252,7 @@ program YPPROG {
 		ypresp_order
 		YPPROC_ORDER(ypreq_nokey) = 10;
 
-		ypresp_maplist 
+		ypresp_maplist
 		YPPROC_MAPLIST(domainname) = 11;
 	} = 2;
 } = 100004;
@@ -272,7 +267,7 @@ program YPPUSH_XFRRESPPROG {
 		YPPUSHPROC_NULL(void) = 0;
 
 #ifdef STUPID_SUN_BUG
-		yppushresp_xfr	
+		yppushresp_xfr
 		YPPUSHPROC_XFRRESP(void) = 1;
 #else
 		void
@@ -288,7 +283,7 @@ program YPBINDPROG {
 	version YPBINDVERS {
 		void
 		YPBINDPROC_NULL(void) = 0;
-	
+
 		ypbind_resp
 		YPBINDPROC_DOMAIN(domainname) = 1;
 
@@ -296,5 +291,3 @@ program YPBINDPROG {
 		YPBINDPROC_SETDOM(ypbind_setdom) = 2;
 	} = 2;
 } = 100007;
-
-
diff --git a/po/es.po b/po/es.po
index 78f4f4d8b5..7632f72e3b 100644
--- a/po/es.po
+++ b/po/es.po
@@ -4,9 +4,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU libc 1.98\n"
-"POT-Creation-Date: 1996-12-03 13:50+0100\n"
-"PO-Revision-Date: 1996-12-14 17:30+0100\n"
+"Project-Id-Version: GNU libc 1.100\n"
+"POT-Creation-Date: 1997-01-06 15:00+0100\n"
+"PO-Revision-Date: 1997-01-25 21:52+0100\n"
 "Last-Translator: Enrique Melero Gómez <justine@iprolink.ch>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -33,31 +33,31 @@ msgstr "       rpcinfo [ -n númpuerto ] -t host númprog [ númvers ]\n"
 msgid "   program vers proto   port\n"
 msgstr "   programa vers proto   puerto\n"
 
-#: time/zic.c:424
+#: time/zic.c:425
 #, 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
+#: locale/programs/ld-collate.c:360 locale/programs/ld-ctype.c:1235
 msgid " done\n"
 msgstr " hecho\n"
 
-#: time/zic.c:421
+#: time/zic.c:422
 #, c-format
 msgid "\"%s\", line %d: %s"
 msgstr "\"%s\", línea %d: %s"
 
-#: time/zic.c:945
+#: time/zic.c:949
 #, 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:953
+#: time/zic.c:957
 #, 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:758
+#: time/zic.c:760
 #, c-format
 msgid "%s in ruleless zone"
 msgstr "%s en una zona sin reglas"
@@ -92,7 +92,7 @@ msgstr "%s%s%s:%u: %s%sError no esperado: %s.\n"
 msgid "%s%sUnknown signal %d\n"
 msgstr "%s%sSeñal desconocida %d\n"
 
-#: time/zic.c:2139
+#: time/zic.c:2155
 #, c-format
 msgid "%s: %d did not sign extend correctly\n"
 msgstr "%s: %d no extendió el signo correctamente\n"
@@ -102,38 +102,43 @@ msgstr "%s: %d no extendió el signo correctamente\n"
 msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
 msgstr "%s: <mb_cur_max> debe ser más grande que <mb_cur_min>\n"
 
-#: time/zic.c:1430
+#: time/zic.c:1445
 #, c-format
 msgid "%s: Can't create %s: %s\n"
 msgstr "%s: No se puede crear %s: %s\n"
 
-#: time/zic.c:2118
+#: time/zic.c:2134
 #, c-format
 msgid "%s: Can't create directory %s: %s\n"
 msgstr "%s; No se puede crear el directorio %s: %s\n"
 
 # Sugerencia: "desde %s hasta %s" o bien "de %s a %s" pero no mezclar. sv+
-#: time/zic.c:612
+#: time/zic.c:614
 #, c-format
 msgid "%s: Can't link from %s to %s: %s\n"
 msgstr "%s: No se pudo crear un enlace desde %s a %s: %s\n"
 
-#: time/zic.c:783
+#: time/zic.c:786
 #, c-format
 msgid "%s: Can't open %s: %s\n"
 msgstr "%s: No se puede abrir %s: %s\n"
 
-#: time/zic.c:851
+#: time/zic.c:1435
+#, c-format
+msgid "%s: Can't remove %s: %s\n"
+msgstr "%s: No se puede eliminar %s: %s\n"
+
+#: time/zic.c:855
 #, c-format
 msgid "%s: Error closing %s: %s\n"
 msgstr "%s: Error al cerrar %s: %s\n"
 
-#: time/zic.c:845
+#: time/zic.c:848
 #, c-format
 msgid "%s: Error reading %s\n"
 msgstr "%s: Error al leer %s\n"
 
-#: time/zic.c:1494
+#: time/zic.c:1509
 #, c-format
 msgid "%s: Error writing %s\n"
 msgstr "%s: Error al escribir %s\n"
@@ -174,44 +179,44 @@ msgstr "%s: Error al escribir en la salida estándar "
 # Segundo, según he visto en la documentación, sólo existe un archivo
 # de leap lines, por eso pongo 'el'... em+
 #
-#: time/zic.c:830
+#: time/zic.c:833
 #, 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:362
+#: time/zic.c:363
 #, c-format
 msgid "%s: Memory exhausted: %s\n"
 msgstr "%s: Memoria agotada: %s\n"
 
-#: time/zic.c:527
+#: time/zic.c:528
 #, 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"
 
-#: time/zic.c:487
+#: time/zic.c:488
 #, 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"
 
-#: time/zic.c:497
+#: time/zic.c:498
 #, 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"
 
-#: time/zic.c:507
+#: time/zic.c:508
 #, 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"
 
-#: time/zic.c:517
+#: time/zic.c:518
 #, c-format
 msgid "%s: More than one -y option specified\n"
 msgstr "%s: La opción -y se ha especificado más de una vez\n"
 
-#: time/zic.c:1845
+#: time/zic.c:1860
 #, c-format
 msgid "%s: command was '%s', result was %d\n"
 msgstr "%s: la orden fue '%s', el resultado fue %d\n"
@@ -224,7 +229,7 @@ msgstr "%s: la orden fue '%s', el resultado fue %d\n"
 msgid "%s: error in state machine"
 msgstr "%s: error en la máquina de estado"
 
-#: posix/getopt.c:687
+#: posix/getopt.c:743
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: opción no permitida -- %c\n"
@@ -240,47 +245,47 @@ msgstr "%s: opción no permitida -- %c\n"
 # Se puede poner retroreferencia porque significa referencia hacia atrás.
 # (Bueno, en este caso esa palabra se usa poco, pero inválida no). sv+
 #
-#: posix/getopt.c:690
+#: posix/getopt.c:746
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opción no válida -- %c\n"
 
-#: posix/getopt.c:611
+#: posix/getopt.c:667
 #, 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:582
+#: posix/getopt.c:638
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: la opción `%s' es ambigua\n"
 
-#: posix/getopt.c:628 posix/getopt.c:801
+#: posix/getopt.c:684 posix/getopt.c:858
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: la opción `%s' requiere un argumento\n"
 
-#: posix/getopt.c:606
+#: posix/getopt.c:662
 #, 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:786
+#: posix/getopt.c:843
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
 
-#: posix/getopt.c:767
+#: posix/getopt.c:824
 #, c-format
 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
+#: posix/getopt.c:777 posix/getopt.c:907
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: la opción requiere un argumento --%c\n"
 
-#: time/zic.c:837 time/zic.c:1248 time/zic.c:1268
+#: time/zic.c:840 time/zic.c:1252 time/zic.c:1272
 #, c-format
 msgid "%s: panic: Invalid l_value %d\n"
 msgstr "%s: grave: valor_l no válido %d\n"
@@ -290,17 +295,17 @@ msgstr "%s: grave: valor_l no válido %d\n"
 msgid "%s: premature end of file"
 msgstr "%s: fin de archivo no esperado"
 
-#: posix/getopt.c:661
+#: posix/getopt.c:717
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: opción desconocida `%c%s'\n"
 
-#: posix/getopt.c:657
+#: posix/getopt.c:713
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: opción desconocida `--%s'\n"
 
-#: time/zic.c:446
+#: time/zic.c:447
 #, c-format
 msgid ""
 "%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d "
@@ -332,7 +337,7 @@ msgstr "(error de autentificación desconocido - %d)"
 msgid "(unknown)"
 msgstr "(señal desconocida)"
 
-#: catgets/gencat.c:253
+#: catgets/gencat.c:254
 msgid "*standard input*"
 msgstr "*entrada estándar*"
 
@@ -341,21 +346,21 @@ 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:358
+#: inet/rcmd.c:359
 msgid ".rhosts fstat failed"
 msgstr "No se pudo obtener información (fstat) del archivo .rhosts"
 
 # ## Lo mismo con lstat. sv
-#: inet/rcmd.c:354
+#: inet/rcmd.c:355
 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:356
+#: inet/rcmd.c:357
 msgid ".rhosts not regular file"
 msgstr ".rhosts no es un archivo regular"
 
-#: inet/rcmd.c:362
+#: inet/rcmd.c:363
 msgid ".rhosts writeable by other than owner"
 msgstr ".rhosts puede ser modificado por otros además del propietario"
 
@@ -389,6 +394,10 @@ msgstr "El carácter <SP> no está en la clase `%s'"
 msgid "?"
 msgstr "?"
 
+#: sysdeps/unix/sysv/linux/siglist.h:27
+msgid "Aborted"
+msgstr "Abortado"
+
 #: stdio-common/../sysdeps/gnu/errlist.c:762
 msgid "Accessing a corrupted shared library"
 msgstr "Accediendo a una biblioteca compartida que está corrompida"
@@ -410,6 +419,8 @@ msgstr "Esta familia de direcciones no está soportada por el protocolo"
 msgid "Advertise error"
 msgstr "Error de advertencia"
 
+#: stdio-common/../sysdeps/unix/siglist.c:43
+#: sysdeps/unix/sysv/linux/siglist.h:33
 msgid "Alarm clock"
 msgstr "Temporizador"
 
@@ -455,6 +466,11 @@ msgstr "Formato de archivo fuente incorrecto"
 msgid "Bad message"
 msgstr "Mensaje erróneo"
 
+#: stdio-common/../sysdeps/unix/siglist.c:41
+#: sysdeps/unix/sysv/linux/siglist.h:56
+msgid "Bad system call"
+msgstr "Llamada al sistema erronea"
+
 # ## Ya estamos ...
 # ¿ Dispositivo de bloques ?, ¿ cómo se le puede llamar a esto ?
 # ## al principio puse, 'se precisa de' pero me sonó mal
@@ -493,12 +509,17 @@ msgstr "Problema en la selección del `broadcast'"
 #. 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
+#: stdio-common/../sysdeps/unix/siglist.c:42
+#: sysdeps/unix/sysv/linux/siglist.h:32
 msgid "Broken pipe"
 msgstr "Tubería (pipe) rota"
 
+#: stdio-common/../sysdeps/unix/siglist.c:39
+#: sysdeps/unix/sysv/linux/siglist.h:30
 msgid "Bus error"
 msgstr "Error del bus"
 
+#: sysdeps/unix/sysv/linux/siglist.h:43
 msgid "CPU time limit exceeded"
 msgstr "Rebasado el límite de tiempo de CPU"
 
@@ -506,7 +527,7 @@ msgstr "Rebasado el límite de tiempo de CPU"
 msgid "Can not access a needed shared library"
 msgstr "No se puede acceder a una biblioteca compartida que se necesita"
 
-#: nis/ypclnt.c:637
+#: nis/ypclnt.c:694
 msgid "Can't bind to server which serves this domain"
 msgstr ""
 "Ha fallado la llamada a bind() con el servidor que sirve a este dominio"
@@ -515,15 +536,15 @@ msgstr ""
 #
 # Sugerencia: to map -> asignar, map -> correspondencia. sv+
 #
-#: nis/ypclnt.c:649
+#: nis/ypclnt.c:706
 msgid "Can't communicate with portmapper"
 msgstr "no se puede comunicar con el mapeador de puertos (`portmapper')"
 
-#: nis/ypclnt.c:651
+#: nis/ypclnt.c:708
 msgid "Can't communicate with ypbind"
 msgstr "No se puede establecer comunicación con 'ypbind'"
 
-#: nis/ypclnt.c:653
+#: nis/ypclnt.c:710
 msgid "Can't communicate with ypserv"
 msgstr "No se puede establecer comunicación con 'ypserv'"
 
@@ -583,6 +604,8 @@ msgstr "No se pudo especificar la opción SO_BROADCAST para el `socket'"
 msgid "Channel number out of range"
 msgstr "Número de canal fuera de rango"
 
+#: stdio-common/../sysdeps/unix/siglist.c:49
+#: sysdeps/unix/sysv/linux/siglist.h:39
 msgid "Child exited"
 msgstr "El proceso hijo terminó"
 
@@ -604,7 +627,7 @@ msgstr "Error de comunicación al enviar"
 msgid "Computer bought the farm"
 msgstr "El ordenador ha comprado una granja"
 
-#: locale/programs/ld-ctype.c:1197
+#: locale/programs/ld-ctype.c:1198
 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"
@@ -641,6 +664,8 @@ msgstr "Conexión reinicializada por la máquina remota"
 msgid "Connection timed out"
 msgstr "Expiró el tiempo de conexión"
 
+#: stdio-common/../sysdeps/unix/siglist.c:48
+#: sysdeps/unix/sysv/linux/siglist.h:38
 msgid "Continued"
 msgstr "Continúa"
 
@@ -659,7 +684,11 @@ msgstr ""
 "No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN\n"
 "FIN DETERMINADO.\n"
 
-#: nis/ypclnt.c:663
+#: stdio-common/../sysdeps/unix/siglist.c:53
+msgid "Cputime limit exceeded"
+msgstr "Rebasado el límite de tiempo de CPU"
+
+#: nis/ypclnt.c:720
 msgid "Database is busy"
 msgstr "La base de datos está ocupada"
 
@@ -703,10 +732,17 @@ msgid "Disc quota exceeded"
 msgstr "Se ha excedido la cuota de disco"
 
 # FUZZY
-#: nis/ypclnt.c:709
+#: nis/ypclnt.c:766
 msgid "Domain not bound"
 msgstr "No se pudo conectar con el dominio"
 
+#  ???, siempre lo he usado como trap, nunca encontramos la palabra
+#  y es una señal estándar Unix, así que no creo conveniente traducirla
+#: stdio-common/../sysdeps/unix/siglist.c:36
+#: sysdeps/unix/sysv/linux/siglist.h:53
+msgid "EMT trap"
+msgstr "`trap' de EMT"
+
 #: sunrpc/clnt_perr.c:254
 #, c-format
 msgid "Error %d"
@@ -761,6 +797,7 @@ msgstr "error `deadlock' al bloquear el archivo"
 msgid "File name too long"
 msgstr "Nombre de archivo demasiado largo"
 
+#: sysdeps/unix/sysv/linux/siglist.h:44
 msgid "File size limit exceeded"
 msgstr "Superado el límite de tamaño de archivo"
 
@@ -769,6 +806,12 @@ msgstr "Superado el límite de tamaño de archivo"
 msgid "File too large"
 msgstr "Archivo demasiado grande"
 
+#: stdio-common/../sysdeps/unix/siglist.c:54
+msgid "Filesize limit exceeded"
+msgstr "Superado el límite de tamaño de archivo"
+
+#: stdio-common/../sysdeps/unix/siglist.c:37
+#: sysdeps/unix/sysv/linux/siglist.h:28
 msgid "Floating point exception"
 msgstr "Excepción de coma flotante"
 
@@ -796,6 +839,8 @@ msgstr "Error injustificado"
 #  Habrá que mirar esto
 #  Mirado, efectivamente esto es una señal que habrá
 #  que dejarla con su nombre original ( entre paréntesis )
+#: stdio-common/../sysdeps/unix/siglist.c:30
+#: sysdeps/unix/sysv/linux/siglist.h:22
 msgid "Hangup"
 msgstr "Colgar (hangup)"
 
@@ -835,11 +880,14 @@ msgstr "El host no está operativo"
 msgid "Host name lookup failure"
 msgstr "Nombre de host no encontrado"
 
+#: stdio-common/../sysdeps/unix/siglist.c:52
+#: sysdeps/unix/sysv/linux/siglist.h:42
 msgid "I/O possible"
 msgstr "Operación de entrada/salida permitida"
 
 #  ???, siempre lo he usado como trap, nunca encontramos la palabra
 #  y es una señal estándar Unix, así que no creo conveniente traducirla
+#: stdio-common/../sysdeps/unix/siglist.c:35
 msgid "IOT trap"
 msgstr "`trap' de IOT"
 
@@ -849,9 +897,16 @@ 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".
+#: sysdeps/unix/sysv/linux/siglist.h:25
 msgid "Illegal Instruction"
 msgstr "Instrucción ilegal"
 
+# Se trata de una instrucción ilegal en el juego de instrucciones del 486
+# que provoca una "excepción".
+#: stdio-common/../sysdeps/unix/siglist.c:33
+msgid "Illegal instruction"
+msgstr "Instrucción ilegal"
+
 # ¿"seek" no era "desplazamiento"? sv
 # Según el contexto no se puede saber a qué se refiere
 # cambio ... por no permitida em+
@@ -898,27 +953,33 @@ msgstr "Función ioctl no apropiada para el dispositivo"
 msgid "Inappropriate operation for background process"
 msgstr "Operación no válida para un proceso en segundo plano"
 
+#: sysdeps/unix/sysv/linux/siglist.h:62
+msgid "Information request"
+msgstr "Petición de información"
+
 #. 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"
 
 #  ??? lo mismo que arriba
-#: nis/ypclnt.c:643
+#: nis/ypclnt.c:700
 msgid "Internal NIS error"
 msgstr "Error interno del determinador de nombres"
 
 # FUZZY FUZZY
 # Esto se está poniendo imposible, estas funciones
 # nuevas ...
-#: nis/ypclnt.c:707
+#: nis/ypclnt.c:764
 msgid "Internal ypbind error"
 msgstr "Error en la llamada a bind para el servicio de páginas amarillas"
 
+#: stdio-common/../sysdeps/unix/siglist.c:31
+#: sysdeps/unix/sysv/linux/siglist.h:23
 msgid "Interrupt"
 msgstr "Interrupción"
 
-#. TRANS Interrupted function call; an asynchronous signal occured and prevented
+#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
 #. TRANS completion of the call.  When this happens, you should try the call
 #. TRANS again.
 #. TRANS
@@ -1026,6 +1087,8 @@ msgstr "Es un archivo de tipo `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
+#: stdio-common/../sysdeps/unix/siglist.c:38
+#: sysdeps/unix/sysv/linux/siglist.h:29
 msgid "Killed"
 msgstr "Terminado (killed)"
 
@@ -1055,11 +1118,11 @@ msgstr "En enlace se ha cortado"
 msgid "Link number out of range"
 msgstr "Número de enlace fuera de rango"
 
-#: nis/ypclnt.c:655
+#: nis/ypclnt.c:712
 msgid "Local domain name not set"
 msgstr "No se ha establecido el nombre del dominio local"
 
-#: nis/ypclnt.c:645
+#: nis/ypclnt.c:702
 msgid "Local resource allocation failure"
 msgstr "La asignación de recursos locales ha fallado"
 
@@ -1088,7 +1151,7 @@ msgstr "Se ha intentado un multihop"
 # No debe explicarse la terminología dentro de su propio contexto.
 # Creo que deberías borrar lo que hay entre paréntesis.
 # De verdad. sv+
-#: nis/ypclnt.c:659
+#: nis/ypclnt.c:716
 msgid "NIS client/server version mismatch - can't supply service"
 msgstr ""
 "La versión de NIS (sistema de información de la red) del servidor y del "
@@ -1097,7 +1160,7 @@ msgstr ""
 
 # Aquí se podría poner "la tabla NIS". sv+
 # mapa es un palabro.
-#: nis/ypclnt.c:657
+#: nis/ypclnt.c:714
 msgid "NIS map data base is bad"
 msgstr "La base de datos del mapa NIS no es correcta"
 
@@ -1218,7 +1281,7 @@ msgstr "Ningún mensaje del tipo deseado"
 
 # FUZZY
 # Bueno, bueno
-#: nis/ypclnt.c:647
+#: nis/ypclnt.c:704
 msgid "No more records in map database"
 msgstr "No hay más registros en la base de datos del mapa"
 
@@ -1264,11 +1327,11 @@ msgstr "No queda espacio en el dispositivo"
 msgid "No such file or directory"
 msgstr "No existe el archivo o el directorio"
 
-#: nis/ypclnt.c:641
+#: nis/ypclnt.c:698
 msgid "No such key in map"
 msgstr "No exite esta clave en el mapa"
 
-#: nis/ypclnt.c:639
+#: nis/ypclnt.c:696
 msgid "No such map in server's domain"
 msgstr "No existe este mapa en el dominio del servidor"
 
@@ -1316,7 +1379,7 @@ msgstr "Resultado numérico fuera de rango"
 msgid "Object is remote"
 msgstr "El objeto es remoto"
 
-#: time/zic.c:1939
+#: time/zic.c:1954
 msgid "Odd number of quotation marks"
 msgstr "Número impar de comillas"
 
@@ -1383,10 +1446,11 @@ msgid "Package not installed"
 msgstr "El paquete no está instalado"
 
 #. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/ypclnt.c:661 stdio-common/../sysdeps/gnu/errlist.c:96
+#: nis/ypclnt.c:718 stdio-common/../sysdeps/gnu/errlist.c:96
 msgid "Permission denied"
 msgstr "Permiso denegado"
 
+#: sysdeps/unix/sysv/linux/siglist.h:64
 msgid "Power failure"
 msgstr "Fallo de alimentación"
 
@@ -1404,6 +1468,8 @@ msgstr "Fin no esperado de la expresión regular"
 # me acuerdo de cuál. sv
 # Gracias por la explicación, sé que era algo referente
 #  al trace o debug de un programa. Miro a la alemana.
+#: stdio-common/../sysdeps/unix/siglist.c:56
+#: sysdeps/unix/sysv/linux/siglist.h:46
 msgid "Profiling timer expired"
 msgstr "El tiempo de CPU expiró"
 
@@ -1439,6 +1505,8 @@ msgid "Protocol wrong type for socket"
 msgstr "Tipo de protocolo incorrecto para el `socket'"
 
 # ## Podría ser también "Abandonar" sv+
+#: stdio-common/../sysdeps/unix/siglist.c:32
+#: sysdeps/unix/sysv/linux/siglist.h:24
 msgid "Quit"
 msgstr "Abandona"
 
@@ -1457,7 +1525,7 @@ msgstr "error específico de RFS"
 msgid "RPC bad procedure for program"
 msgstr "RPC: procedimiento erróneo para el programa"
 
-#: nis/ypclnt.c:635
+#: nis/ypclnt.c:692
 msgid "RPC failure on NIS operation"
 msgstr "Fallo RPC en una operación NIS"
 
@@ -1623,10 +1691,10 @@ msgstr "Elimine la contraseña o haga el archivo no legible por otros."
 # ## Lo cambio. Ver fileutils. sv+
 #: 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 "Comunicar `bugs' a <bug-glibc@prep.ai.mit.edu>.\n"
+msgid "Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"
+msgstr "Comunicar `bugs' usando el programa `glibcbug' a <bugs@gnu.ai.mit.edu>.\n"
 
-#: nis/ypclnt.c:633
+#: nis/ypclnt.c:690
 msgid "Request arguments bad"
 msgstr "Los argumentos de la petición son incorrectos"
 
@@ -1652,6 +1720,10 @@ msgstr "Error interno del determinador de nombres"
 msgid "Resource deadlock avoided"
 msgstr "Esquivado el bloqueo para el recurso"
 
+#: stdio-common/../sysdeps/unix/siglist.c:58
+msgid "Resource lost"
+msgstr "Recurso perdido"
+
 #. 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.
@@ -1693,6 +1765,8 @@ msgstr "Recurso no disponible temporalmente"
 #  No, en inglés siempre se ha dicho así. Siempre he traducido
 #  Segmentation fault como violación de segmento. Consultémoslo,
 #  es un mensaje que se ve demasiado a menudo em
+#: stdio-common/../sysdeps/unix/siglist.c:40
+#: sysdeps/unix/sysv/linux/siglist.h:31
 msgid "Segmentation fault"
 msgstr "Violación de segmento"
 
@@ -1704,6 +1778,10 @@ msgstr "El servidor rechazó la credencial"
 msgid "Server rejected verifier"
 msgstr "El servidor rechazó el verificador"
 
+#: stdio-common/../sysdeps/unix/siglist.c:29
+msgid "Signal 0"
+msgstr "Señal 0"
+
 #. 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"
@@ -1723,6 +1801,10 @@ msgstr "El programa provocó el fin de la conexión"
 msgid "Srmount error"
 msgstr "Error de `srmount'"
 
+#: sysdeps/unix/sysv/linux/siglist.h:59
+msgid "Stack fault"
+msgstr "Fallo en la pila"
+
 # ?? sugerencias ?
 # Habrá que traducir el "handle" de alguna forma... sv
 # No veo porqué. em
@@ -1740,20 +1822,28 @@ msgstr "Error de `srmount'"
 msgid "Stale NFS file handle"
 msgstr "Archivo NFS bloqueado"
 
+#: stdio-common/../sysdeps/unix/siglist.c:47
+#: sysdeps/unix/sysv/linux/siglist.h:37
 msgid "Stopped"
 msgstr "Parado"
 
+#: stdio-common/../sysdeps/unix/siglist.c:46
+#: sysdeps/unix/sysv/linux/siglist.h:36
 msgid "Stopped (signal)"
 msgstr "Parado (por una señal)"
 
 # Perdonad que sea tan largo, pero es algo que nunca esta de más
 # Creo que mejora al original ;)
+#: stdio-common/../sysdeps/unix/siglist.c:50
+#: sysdeps/unix/sysv/linux/siglist.h:40
 msgid "Stopped (tty input)"
 msgstr "Parado (requiere entrada de terminal)"
 
 # Perdonad que sea tan largo, pero es algo que nunca esta de más
 # Creo que mejora al original ;)
 #
+#: stdio-common/../sysdeps/unix/siglist.c:51
+#: sysdeps/unix/sysv/linux/siglist.h:41
 msgid "Stopped (tty output)"
 msgstr "Parado (requiere salida por terminal)"
 
@@ -1773,15 +1863,17 @@ msgstr "La estructura necesita una limpieza"
 # me gustaría que hubiera otra palabra mejor. SV
 # Siempre me han gustado F&C ;-)
 # A mí también :-) sv
-#: nis/ypclnt.c:631 nis/ypclnt.c:705 posix/regex.c:940
+#: nis/ypclnt.c:688 nis/ypclnt.c:762 posix/regex.c:940
 #: stdio-common/../sysdeps/gnu/errlist.c:7
 msgid "Success"
 msgstr "Conseguido"
 
-#: nis/ypclnt.c:711
+#: nis/ypclnt.c:768
 msgid "System resource allocation failure"
 msgstr "Fallo en la asignación de recursos del sistema"
 
+#: stdio-common/../sysdeps/unix/siglist.c:44
+#: sysdeps/unix/sysv/linux/siglist.h:34
 msgid "Terminated"
 msgstr "Terminado"
 
@@ -1848,6 +1940,11 @@ msgstr "Demasiadas referencias: no se pueden solapar"
 msgid "Too many users"
 msgstr "Demasiados usuarios"
 
+#: stdio-common/../sysdeps/unix/siglist.c:34
+msgid "Trace/BPT trap"
+msgstr "`trap' para seguimiento/BPT"
+
+#: sysdeps/unix/sysv/linux/siglist.h:26
 msgid "Trace/breakpoint trap"
 msgstr "`trap' para punto de parada/seguimiento"
 
@@ -1890,7 +1987,7 @@ msgid "Try `%s --help' for more information.\n"
 msgstr "Pruebe `%s --help' para más información.\n"
 
 # ## Nota: este no tiene nada que ver con el anterior. sv
-#: inet/rcmd.c:136
+#: inet/rcmd.c:137
 #, c-format
 msgid "Trying %s...\n"
 msgstr "Intentando %s...\n"
@@ -1900,7 +1997,7 @@ msgstr "Intentando %s...\n"
 msgid "Unknown .netrc keyword %s"
 msgstr "palabra clave desconocida en .netrc %s"
 
-#: nis/ypclnt.c:665
+#: nis/ypclnt.c:722
 msgid "Unknown NIS error code"
 msgstr "Error del NIS desconocido"
 
@@ -1931,7 +2028,7 @@ msgstr "Señal desconocida %d"
 msgid "Unknown system error"
 msgstr "Error del sistema desconocido"
 
-#: nis/ypclnt.c:713
+#: nis/ypclnt.c:770
 msgid "Unknown ypbind error"
 msgstr "Error desconocido en la llamada a 'ypbind()'"
 
@@ -1960,6 +2057,8 @@ msgstr "Variable desconocida `%s'"
 
 # Sugerencia: de E/S sv+
 #  ?? sigo pensando en una traducción para condición
+#: stdio-common/../sysdeps/unix/siglist.c:45
+#: sysdeps/unix/sysv/linux/siglist.h:35
 msgid "Urgent I/O condition"
 msgstr "Condición urgente de entrada/saluda"
 
@@ -2109,9 +2208,13 @@ msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
 msgstr ""
 "Modo de empleo: rpcinfo [ -n númpuerto ] -u host progrnúm [ numversión ]\n"
 
+#: stdio-common/../sysdeps/unix/siglist.c:59
+#: sysdeps/unix/sysv/linux/siglist.h:48
 msgid "User defined signal 1"
 msgstr "Señal definida por el usuario 1"
 
+#: stdio-common/../sysdeps/unix/siglist.c:60
+#: sysdeps/unix/sysv/linux/siglist.h:49
 msgid "User defined signal 2"
 msgstr "Señal definida por el usuario 2"
 
@@ -2119,14 +2222,18 @@ msgstr "Señal definida por el usuario 2"
 msgid "Value too large for defined data type"
 msgstr "Valor demasiado grande para el tipo de datos definido"
 
+#: stdio-common/../sysdeps/unix/siglist.c:55
+#: sysdeps/unix/sysv/linux/siglist.h:45
 msgid "Virtual timer expired"
 msgstr "El temporizador virtual llegó al final"
 
 # # Otra opción, resultado incongruente al ejecutar la orden em
-#: time/zic.c:1844
+#: time/zic.c:1859
 msgid "Wild result from command execution"
 msgstr "Resultado salvaje en la ejecución de la orden"
 
+#: stdio-common/../sysdeps/unix/siglist.c:57
+#: sysdeps/unix/sysv/linux/siglist.h:47
 msgid "Window changed"
 msgstr "Ventana cambiada"
 
@@ -2136,20 +2243,20 @@ msgstr "Ventana cambiada"
 msgid "Written by %s.\n"
 msgstr "Escrito por %s.\n"
 
-#: nis/ypclnt.c:146
+#: nis/ypclnt.c:142
 msgid "YPBINDPROC_DOMAIN: Internal error\n"
 msgstr "YPBINDPROC_DOMAIN: Error interno\n"
 
-#: nis/ypclnt.c:150
+#: nis/ypclnt.c:146
 #, c-format
 msgid "YPBINDPROC_DOMAIN: No server for domain %s\n"
 msgstr "YPBINDPROC_DOMAIN: No hay servidor para el dominio %s\n"
 
-#: nis/ypclnt.c:154
+#: nis/ypclnt.c:150
 msgid "YPBINDPROC_DOMAIN: Resource allocation failure\n"
 msgstr "YPBINDPROC_DOMAIN: Fallo en la asignación de recursos\n"
 
-#: nis/ypclnt.c:158
+#: nis/ypclnt.c:154
 msgid "YPBINDPROC_DOMAIN: Unknown error\n"
 msgstr "YPBINDPROC_DOMAIN: Error desconocido\n"
 
@@ -2176,7 +2283,7 @@ msgid "You really blew it this time"
 msgstr "Esta vez si que lo has roto"
 
 # VER
-#: time/zic.c:1050
+#: time/zic.c:1054
 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"
@@ -2230,7 +2337,7 @@ msgstr "el argumento para `%s' debe ser un único carácter"
 msgid "auth_none.c - Fatal marshalling problem"
 msgstr "auth_none.c - Problema muy grave con autorización marshall"
 
-#: inet/rcmd.c:360
+#: inet/rcmd.c:361
 msgid "bad .rhosts owner"
 msgstr "El propietario del archivo .rhosts no es válido"
 
@@ -2238,20 +2345,20 @@ msgstr "El propietario del archivo .rhosts no es válido"
 msgid "bad argument"
 msgstr "Argumento no válido"
 
-#: time/zic.c:1172
+#: time/zic.c:1176
 msgid "blank FROM field on Link line"
 msgstr "Campo FROM vacío en la línea `Link'"
 
-#: time/zic.c:1176
+#: time/zic.c:1180
 msgid "blank TO field on Link line"
 msgstr "Campo TO vacío en la línea `Link'"
 
-#: malloc/mcheck.c:189
+#: new-malloc/mcheck.c:191
 msgid "block freed twice"
 msgstr "bloque liberado dos veces"
 
 # Revisar lo de bogus. creo que es eso.
-#: malloc/mcheck.c:192
+#: new-malloc/mcheck.c:194
 msgid "bogus mcheck_status, library is buggy"
 msgstr "Valor de mcheck_status incorrecto, la biblioteca tiene un bug"
 
@@ -2269,8 +2376,8 @@ 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"
+#: time/zic.c:1700
+msgid "can't determine time zone abbreviation to use just after until time"
 msgstr ""
 "No se puede determinar la abreviación de zona horaria que se usará justo\n"
 "después"
@@ -2305,7 +2412,7 @@ msgstr "no se puede insertar la nueva definición para el símbolo de unión: %s"
 msgid "cannot open database file `%s': %s"
 msgstr "no se puede abrir el archivo de datos `%s': %s"
 
-#: catgets/gencat.c:259 db/makedb.c:180
+#: catgets/gencat.c:260 db/makedb.c:180
 #, c-format
 msgid "cannot open input file `%s'"
 msgstr "no se puede abrir el archivo de entrada `%s'"
@@ -2315,7 +2422,7 @@ msgstr "no se puede abrir el archivo de entrada `%s'"
 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
+#: catgets/gencat.c:765 catgets/gencat.c:806 db/makedb.c:189
 #, c-format
 msgid "cannot open output file `%s'"
 msgstr "no se puede abrir el archivo de salida `%s'"
@@ -2330,12 +2437,12 @@ msgstr "no se puede abrir el archivo de salida `%s' para la categoría `%s'"
 msgid "cannot process order specification"
 msgstr "no se pueden procesar las especificaciones de orden"
 
-#: locale/programs/locale.c:303
+#: locale/programs/locale.c:304
 #, 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
+#: locale/programs/locale.c:279
 #, c-format
 msgid "cannot read locale directory `%s'"
 msgstr "No se puede leer directorio de locales %s"
@@ -2414,7 +2521,7 @@ msgstr "símbolo de unión `%.*s' aparece más de una vez: descartando la línea"
 msgid "collation symbol expected after `%s'"
 msgstr "símbolo de unión esperado después de `%s'"
 
-#: inet/rcmd.c:129
+#: inet/rcmd.c:130
 #, c-format
 msgid "connect to address %s: "
 msgstr "conexión a la dirección %s: "
@@ -2465,24 +2572,24 @@ msgstr "definición duplicada del elemento de unión"
 msgid "duplicate definition for character `%.*s'"
 msgstr "definición duplicada del carácter `%.*s"
 
-#: db/makedb.c:310
+#: db/makedb.c:311
 msgid "duplicate key"
 msgstr "tecla duplicada"
 
-#: catgets/gencat.c:378
+#: catgets/gencat.c:379
 msgid "duplicate set definition"
 msgstr "definición de conjunto duplicada"
 
-#: time/zic.c:965
+#: time/zic.c:969
 #, 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:541
+#: catgets/gencat.c:542
 msgid "duplicated message identifier"
 msgstr "identificador de mensaje duplicado"
 
-#: catgets/gencat.c:514
+#: catgets/gencat.c:515
 msgid "duplicated message number"
 msgstr "número de mensaje duplicado"
 
@@ -2528,7 +2635,7 @@ msgstr "error al insertar en la tabla enlazada"
 msgid "expect string argument for `copy'"
 msgstr "se espera un argumento de cadena de caracteres para `copy'"
 
-#: time/zic.c:856
+#: time/zic.c:860
 msgid "expected continuation line not found"
 msgstr "la línea de continuación esperada no se encuentra"
 
@@ -2537,6 +2644,10 @@ msgstr "la línea de continuación esperada no se encuentra"
 msgid "failure while writing data for category `%s'"
 msgstr "error al escribir los datos para la categoría `%s'"
 
+#: nis/ypclnt.c:186
+msgid "fcntl: F_SETFD"
+msgstr "fcntl: F_SETFD"
+
 #: locale/programs/ld-monetary.c:154 locale/programs/ld-numeric.c:95
 #, c-format
 msgid "field `%s' in category `%s' not defined"
@@ -2591,11 +2702,11 @@ msgstr ""
 msgid "get_myaddress: ioctl (get interface configuration)"
 msgstr "get_myaddress: ioctl (lee la configuración del interfaz)"
 
-#: time/zic.c:1149
+#: time/zic.c:1153
 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:1153
+#: time/zic.c:1157
 msgid "illegal Rolling/Stationary field on Leap line"
 msgstr "Campo Rolling/Stationary no válido en la línea de año bisiesto"
 
@@ -2630,7 +2741,7 @@ msgstr ""
 "número de desplazamiento no válido en la cadena %d en el campo `era' de la\n"
 "categoría `%s'"
 
-#: catgets/gencat.c:351 catgets/gencat.c:428
+#: catgets/gencat.c:352 catgets/gencat.c:429
 msgid "illegal set number"
 msgstr "número de conjunto inválido"
 
@@ -2664,19 +2775,19 @@ msgstr ""
 msgid "incorrectly formatted file"
 msgstr "archivo formateado incorrectamente"
 
-#: time/zic.c:814
+#: time/zic.c:817
 msgid "input line of unknown type"
 msgstr "línea de entrada de tipo desconocido"
 
-#: time/zic.c:1733
+#: time/zic.c:1748
 msgid "internal error - addtype called with bad isdst"
 msgstr "error interno - se llamó a 'addtype' con 'isdst' erróneo"
 
-#: time/zic.c:1741
+#: time/zic.c:1756
 msgid "internal error - addtype called with bad ttisgmt"
 msgstr "error interno - se llamó a 'addtype' con 'ttisgmt' erróneo"
 
-#: time/zic.c:1737
+#: time/zic.c:1752
 msgid "internal error - addtype called with bad ttisstd"
 msgstr "error interno - se llamó a 'addtype' con 'ttisstd' erróneo"
 
@@ -2685,44 +2796,44 @@ msgstr "error interno - se llamó a 'addtype' con 'ttisstd' erróneo"
 msgid "internal error in %s, line %u"
 msgstr "error interno en %s, línea %u"
 
-#: time/zic.c:1021
+#: time/zic.c:1025
 msgid "invalid GMT offset"
 msgstr "desplazamiento GMT no válido"
 
 # ¿No será "abreviatura"? sv+
-#: time/zic.c:1024
+#: time/zic.c:1028
 msgid "invalid abbreviation format"
 msgstr "formato de abreviación incorrecto"
 
-#: time/zic.c:1114 time/zic.c:1313 time/zic.c:1327
+#: time/zic.c:1118 time/zic.c:1317 time/zic.c:1331
 msgid "invalid day of month"
 msgstr "día del mes no válido"
 
-#: time/zic.c:1272
+#: time/zic.c:1276
 msgid "invalid ending year"
 msgstr "año de final no válido"
 
-#: time/zic.c:1086
+#: time/zic.c:1090
 msgid "invalid leaping year"
 msgstr "año bisiesto inválido"
 
-#: time/zic.c:1101 time/zic.c:1204
+#: time/zic.c:1105 time/zic.c:1208
 msgid "invalid month name"
 msgstr "nombre de mes incorrecto"
 
-#: time/zic.c:920
+#: time/zic.c:924
 msgid "invalid saved time"
 msgstr "la hora almacenada no es válida"
 
-#: time/zic.c:1252
+#: time/zic.c:1256
 msgid "invalid starting year"
 msgstr "año de comienzo no válido"
 
-#: time/zic.c:1130 time/zic.c:1232
+#: time/zic.c:1134 time/zic.c:1236
 msgid "invalid time of day"
 msgstr "hora del día no válida"
 
-#: time/zic.c:1318
+#: time/zic.c:1322
 msgid "invalid weekday name"
 msgstr "nombre del día de la semana incorrecto"
 
@@ -2738,7 +2849,7 @@ msgstr ""
 "la línea posterior a la elipsis no contiene una definición para una "
 "constante de carácter"
 
-#: time/zic.c:794
+#: time/zic.c:797
 msgid "line too long"
 msgstr "línea demasiado larga"
 
@@ -2748,7 +2859,7 @@ 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
+#: catgets/gencat.c:610
 msgid "malformed line ignored"
 msgstr "línea incorrecta se ignoró"
 
@@ -2757,14 +2868,14 @@ 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:183
+#: new-malloc/mcheck.c:185
 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:186
+#: new-malloc/mcheck.c:188
 msgid "memory clobbered past end of allocated block"
 msgstr "memoria alterada pasado el final del bloque de memoria asignado"
 
@@ -2775,12 +2886,12 @@ msgstr "memoria alterada pasado el final del bloque de memoria asignado"
 msgid "memory exhausted"
 msgstr "memoria agotada"
 
-#: malloc/obstack.c:425
+#: new-malloc/obstack.c:462
 msgid "memory exhausted\n"
 msgstr "Memoria agotada\n"
 
 # biblioteca está recogida en la lista de pifias de Ángel Álvarez.
-#: malloc/mcheck.c:180
+#: new-malloc/mcheck.c:182
 msgid "memory is consistent, library is buggy"
 msgstr "no hay problemas con la memoria, la biblioteca tiene un bug"
 
@@ -2798,7 +2909,7 @@ msgstr ""
 "nomnbre de era no encontrado en la cadena %d en el campo `era' de la\n"
 "categoría `%s'"
 
-#: time/zic.c:915
+#: time/zic.c:919
 msgid "nameless rule"
 msgstr "regla sin nombre"
 
@@ -2819,7 +2930,7 @@ msgstr ""
 # 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:2059
+#: time/zic.c:2074
 msgid "no day in month matches rule"
 msgstr "ningún día del mes coincide con la regla"
 
@@ -2855,7 +2966,7 @@ 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"
 
-#: db/makedb.c:326
+#: db/makedb.c:327
 #, c-format
 msgid "problems while reading `%s'"
 msgstr "problemas mientras se leía `%s'"
@@ -2878,16 +2989,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:171
+#: inet/rcmd.c:172
 #, c-format
 msgid "rcmd: select (setting up stderr): %m\n"
 msgstr "rcmd: select (activando la salida de error estándar): %m\n"
 
-#: inet/rcmd.c:103
+#: inet/rcmd.c:104
 msgid "rcmd: socket: All ports in use\n"
 msgstr "rcmd: socket: Todos los puertos están siendo usados\n"
 
-#: inet/rcmd.c:159
+#: inet/rcmd.c:160
 #, c-format
 msgid "rcmd: write (setting up stderr): %m\n"
 msgstr "rcmd: write (activando la salida de error estándar): %m\n"
@@ -2896,7 +3007,7 @@ msgstr "rcmd: write (activando la salida de error estándar): %m\n"
 msgid "registerrpc: out of memory\n"
 msgstr "registerrpc: memoria agotada\n"
 
-#: time/zic.c:1794
+#: time/zic.c:1809
 msgid "repeated leap second moment"
 msgstr "segundo intercalar repetido"
 
@@ -2934,18 +3045,18 @@ msgid "rpcinfo: can't contact portmapper: "
 msgstr ""
 "rpcinfo: no se puede comunicar con el mapeador de puertos (`portmapper'): "
 
-#: time/zic.c:708 time/zic.c:710
+#: time/zic.c:710 time/zic.c:712
 msgid "same rule name in multiple files"
 msgstr "mismo nombre de regla en varios archivos"
 
 #  ¿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:174
+#: inet/rcmd.c:175
 msgid "select: protocol failure in circuit setup\n"
 msgstr "select: fallo de protocolo al configurar el circuito\n"
 
 #  ??? lo mismo que arriba
-#: inet/rcmd.c:192
+#: inet/rcmd.c:193
 msgid "socket: protocol failure in circuit setup\n"
 msgstr "socket: fallo de protocolo al configurar el circuito\n"
 
@@ -2960,7 +3071,7 @@ msgstr ""
 "la especificación para el orden de peso del símbolo de unión no tiene "
 "sentido "
 
-#: time/zic.c:779
+#: time/zic.c:781
 msgid "standard input"
 msgstr "entrada estándar"
 
@@ -2975,7 +3086,7 @@ 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
+#: time/zic.c:1280
 msgid "starting year greater than ending year"
 msgstr "año de comienzo mayor que año de final"
 
@@ -3130,16 +3241,16 @@ msgid "syntax error: not inside a locale definition section"
 msgstr ""
 "error de sintaxis: 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
+#: catgets/gencat.c:381 catgets/gencat.c:517 catgets/gencat.c:544
 msgid "this is the first definition"
 msgstr "esta es la primera vez que aparece la definición"
 
-#: time/zic.c:1119
+#: time/zic.c:1123
 msgid "time before zero"
 msgstr "hora antes de cero"
 
 # Sugerencia: Desbordamiento de fecha. (?) sv+
-#: time/zic.c:1127 time/zic.c:1959 time/zic.c:1978
+#: time/zic.c:1131 time/zic.c:1974 time/zic.c:1993
 msgid "time overflow"
 msgstr "desbordamiento horario"
 
@@ -3155,15 +3266,15 @@ msgstr "demasiados bytes en la codificación del carácter"
 msgid "too many character classes defined"
 msgstr "demasiadas clases de caracteres definidas"
 
-#: time/zic.c:1788
+#: time/zic.c:1803
 msgid "too many leap seconds"
 msgstr "demasiados segundos intercalares"
 
-#: time/zic.c:1760
+#: time/zic.c:1775
 msgid "too many local time types"
 msgstr "demasiados tipos de hora local"
 
-#: time/zic.c:1714
+#: time/zic.c:1729
 msgid "too many transitions?!"
 msgstr "¡¿demasiadas transiciones?!"
 
@@ -3175,7 +3286,7 @@ msgstr "¡demasiados pesos!"
 
 # ## Sugerencia: abreviaturas. sv
 # ## Ok em+
-#: time/zic.c:2082
+#: time/zic.c:2097
 msgid "too many, or too long, time zone abbreviations"
 msgstr "demasiadas o demasiado largas abreviaturas de zona horaria"
 
@@ -3197,7 +3308,7 @@ msgstr "dificultades para responder al programa %d\n"
 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
+#: time/zic.c:1287
 msgid "typed single year"
 msgstr "tecleado un único año"
 
@@ -3225,19 +3336,16 @@ msgstr "la directiva de unión es desconocida"
 # ## descartada (?) sv
 # ## ¿ y así ?  em
 # ## por mí, vale. sv+
-#: catgets/gencat.c:477
+#: catgets/gencat.c:478
 #, c-format
 msgid "unknown directive `%s': line ignored"
 msgstr "directiva desconocida '%s': línea pasada por alto"
 
-#: catgets/gencat.c:456
+#: catgets/gencat.c:457
 #, c-format
 msgid "unknown set `%s'"
 msgstr "conjunto `%s' desconocido"
 
-msgid "unknown signal"
-msgstr "señal desconocida"
-
 # descartada (?) sv
 # Me gusta más `pasada por alto' em+
 #: locale/programs/ld-collate.c:1367 locale/programs/ld-collate.c:1558
@@ -3246,11 +3354,11 @@ msgstr "señal desconocida"
 msgid "unknown symbol `%.*s': line ignored"
 msgstr "símbolo desconocido `%.*s': línea descartada"
 
-#: time/zic.c:751
+#: time/zic.c:753
 msgid "unruly zone"
 msgstr "zona sin reglas"
 
-#: catgets/gencat.c:961
+#: catgets/gencat.c:962
 msgid "unterminated message"
 msgstr "mensaje sin terminar"
 
@@ -3276,7 +3384,7 @@ msgstr "el límite superior del rango no es menor que el límite inferior"
 # en el archivo pondrá 2/29  em
 # Sugerencia: "uso de 2/29 ..." (usando sería "using") sv
 # Tienes razón em+
-#: time/zic.c:2025
+#: time/zic.c:2040
 msgid "use of 2/29 in non leap-year"
 msgstr "uso de 2/29 en un año no bisiesto"
 
@@ -3333,15 +3441,15 @@ msgstr "el valor para el campo `%s' en la categoría `%s' no debe ser cero"
 msgid "while opening UTMP file"
 msgstr "al abrir el archivo UTMP"
 
-#: catgets/gencat.c:988
+#: catgets/gencat.c:989
 msgid "while opening old catalog file"
 msgstr "al abrir el archivo de catálogo antiguo"
 
-#: db/makedb.c:353
+#: db/makedb.c:354
 msgid "while reading database"
 msgstr "al leer el archivo de datos"
 
-#: db/makedb.c:315
+#: db/makedb.c:316
 msgid "while writing data base file"
 msgstr "al abrir el archivo de datos"
 
@@ -3359,38 +3467,40 @@ msgstr "número incorrecto de argumentos"
 # 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:1077
+#: time/zic.c:1081
 msgid "wrong number of fields on Leap line"
 msgstr "número incorrecto de campos en la línea de bisiesto ( Leap )"
 
-#: time/zic.c:1168
+#: time/zic.c:1172
 msgid "wrong number of fields on Link line"
 msgstr "número incorrecto de campos en la línea de enlace ( Link )"
 
-#: time/zic.c:911
+#: time/zic.c:915
 msgid "wrong number of fields on Rule line"
 msgstr "número incorrecto de argumentos en la línea de regla ( Rule )"
 
-#: time/zic.c:981
+#: time/zic.c:985
 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:939
+#: time/zic.c:943
 msgid "wrong number of fields on Zone line"
 msgstr "número de campos incorrecto en la línea de zona ( Zone )"
 
-#: nis/ypclnt.c:570
-msgid "yp_all: clnttcp_create failed"
-msgstr "yp_all: ha fallado la llamada a 'clnttcp_create()'"
-
-#: nis/ypclnt.c:772
+#: nis/ypclnt.c:810
 msgid "yp_update: cannot convert host to netname\n"
 msgstr "yp_update: no puede convertir el nombre del host a nombre de red\n"
 
-#: nis/ypclnt.c:784
+#: nis/ypclnt.c:822
 msgid "yp_update: cannot get server address\n"
 msgstr "yp_update: no se puede encontrar la dirección del servidor\n"
 
+#~ msgid "unknown signal"
+#~ msgstr "señal desconocida"
+
+#~ msgid "yp_all: clnttcp_create failed"
+#~ msgstr "yp_all: ha fallado la llamada a 'clnttcp_create()'"
+
 #~ 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"
diff --git a/po/fr.po b/po/fr.po
index 92a272f70e..b255cb2409 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU libc 1.98\n"
 "POT-Creation-Date: 1996-12-03 13:50+0100\n"
-"PO-Revision-Date: 1996-12-12 22:46 -0500\n"
+"PO-Revision-Date: 1997-01-24 20:13 -0500\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <fr@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -881,11 +881,11 @@ msgstr "Connexion par liens par noeuds multiples de relais tentée."
 
 #: nis/ypclnt.c:659
 msgid "NIS client/server version mismatch - can't supply service"
-msgstr "Non concrodance de la version client/serveur NIS - ne peut fournir le service."
+msgstr "Non concordance de la version client/serveur NIS - ne peut fournir le service."
 
 #: nis/ypclnt.c:657
 msgid "NIS map data base is bad"
-msgstr "La table de la base de données NIS est corrumpue."
+msgstr "La table de la base de données NIS est corrompue."
 
 #: stdio-common/../sysdeps/gnu/errlist.c:746
 msgid "Name not unique on network"
diff --git a/po/nl.po b/po/nl.po
index dade331dd8..e30ad9ef39 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -4,7 +4,7 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: libc 1.94\n"
+"Project-Id-Version: libc 2.0\n"
 "POT-Creation-Date: 1996-09-08  3:45\n"
 "PO-Revision-Date: 1996-09-17 14:30 MET DST\n"
 "Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
@@ -25,23 +25,23 @@ msgstr "       %s [-s udp|tcp]* [-o uitvoerbestand] [invoerbestand]\n"
 
 #: sunrpc/rpcinfo.c:612
 msgid "       rpcinfo -b prognum versnum\n"
-msgstr ""
+msgstr "       rpcinfo -b programanummer versienummer\n"
 
 #: sunrpc/rpcinfo.c:613
 msgid "       rpcinfo -d prognum versnum\n"
-msgstr ""
+msgstr "       rpcinfo -d programanummer versienummer\n"
 
 #: sunrpc/rpcinfo.c:611
 msgid "       rpcinfo -p [ host ]\n"
-msgstr ""
+msgstr "       rpcinfo -p [ host ]\n"
 
 #: sunrpc/rpcinfo.c:610
 msgid "       rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
-msgstr ""
+msgstr "       rpcinfo [ -n poortnummer ] -t host programanummer [ versienummer ]\n"
 
 #: sunrpc/rpcinfo.c:517
 msgid "   program vers proto   port\n"
-msgstr ""
+msgstr "   program vers proto   port\n"
 
 #: time/zic.c:425
 #, c-format
@@ -967,7 +967,7 @@ msgstr "Numeriek resultaat is buiten domein"
 #. TRANS properly on the GNU system, making this error code impossible.)
 #: stdio-common/../sysdeps/gnu/errlist.c:502
 msgid "Object is remote"
-msgstr ""
+msgstr "Object is niet lokaal"
 
 #: time/zic.c:1940
 msgid "Odd number of quotation marks"
@@ -1306,7 +1306,7 @@ msgstr "Gestopt (tty uitvoer)"
 
 #: stdio-common/../sysdeps/gnu/errlist.c:778
 msgid "Streams pipe error"
-msgstr ""
+msgstr "Stromen pijp fout"
 
 #: stdio-common/../sysdeps/gnu/errlist.c:782
 msgid "Structure needs cleaning"
@@ -1652,7 +1652,7 @@ msgstr "verwacht `from' na eerste argument (??)to `collating-element'"
 #: locale/programs/ld-collate.c:1108
 msgid ""
 "`from' string in collation element declaration contains unknown character"
-msgstr ""
+msgstr "`from' string in vergelijkende element declaratie bevat onbekend karakter"
 
 #: locale/programs/charmap.c:267
 #, c-format
@@ -1734,7 +1734,7 @@ msgstr "kan niet invoegen in resultaat tabel"
 #: locale/programs/ld-collate.c:1165 locale/programs/ld-collate.c:1207
 #, c-format
 msgid "cannot insert new collating symbol definition: %s"
-msgstr ""
+msgstr "kan geen nieuw vergelijking symbool definitie invoegen: %s"
 
 #: db/makedb.c:149
 #, c-format
@@ -1763,7 +1763,7 @@ msgstr "kan uitvoerbestand `%s' niet openen voor categorie `%s'"
 
 #: locale/programs/ld-collate.c:1359
 msgid "cannot process order specification"
-msgstr ""
+msgstr "kan de gespecificeerde volgorde niet afhandelen"
 
 #: locale/programs/locale.c:293
 #, c-format
@@ -2041,7 +2041,7 @@ msgstr "ongeldige codering gegeven"
 
 #: locale/programs/linereader.c:546
 msgid "illegal escape sequence at end of string"
-msgstr ""
+msgstr "ongeldige escape reeks aan het einde van string"
 
 #: locale/programs/charset.c:101
 msgid "illegal names for character range"
@@ -2128,15 +2128,15 @@ msgstr "ongeldige tijd van de dag"
 
 #: time/zic.c:1319
 msgid "invalid weekday name"
-msgstr "ongeldig weekdagnaam"
+msgstr "ongeldig naam voor weekdag"
 
 #: locale/programs/ld-collate.c:1411
 msgid "line after ellipsis must contain character definition"
-msgstr ""
+msgstr "regel na ellipsis moet een karakter definitie bevatten"
 
 #: locale/programs/ld-collate.c:1390
 msgid "line before ellipsis does not contain definition for character constant"
-msgstr ""
+msgstr "regel voor ellipsis bevat geen konstante karakter definitie"
 
 #: time/zic.c:795
 msgid "line too long"
@@ -2157,7 +2157,7 @@ msgstr "geheugen clobbered voordat blok gereserveerd was (FIXME)"
 
 #: malloc/mcheck.c:186
 msgid "memory clobbered past end of allocated block"
-msgstr ""
+msgstr "geheugen `clobbered' na het einde van een gealloceerd blok"
 
 #: locale/programs/ld-collate.c:167 locale/programs/ld-collate.c:173
 #: locale/programs/ld-collate.c:177 locale/programs/ld-collate.c:1438
@@ -2186,7 +2186,7 @@ msgstr "geen array-of-pointer declaraties -- gebruik 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 ""
+msgstr "geen correct reguliere expressie voor veld `%s' in category `%s': %s"
 
 #: time/zic.c:2060
 msgid "no day in month matches rule"
@@ -2285,30 +2285,30 @@ msgstr "herhalend schrikkelseconde moment"
 #: sunrpc/rpcinfo.c:659
 #, c-format
 msgid "rpcinfo: %s is unknown host\n"
-msgstr ""
+msgstr "rpcinfo: %s is onbekende host\n"
 
 #: sunrpc/rpcinfo.c:626
 #, c-format
 msgid "rpcinfo: %s is unknown service\n"
-msgstr ""
+msgstr "rpcinfo: %s is onbekende service\n"
 
 #: sunrpc/rpcinfo.c:600
 #, c-format
 msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
-msgstr ""
+msgstr "rpcinfo: Kan geen registratie verwijderen voor programma %s versie %s\n"
 
 #: sunrpc/rpcinfo.c:576
 #, c-format
 msgid "rpcinfo: broadcast failed: %s\n"
-msgstr ""
+msgstr "rpcinfo: uitzending mislukt: %s\n"
 
 #: sunrpc/rpcinfo.c:505
 msgid "rpcinfo: can't contact portmapper"
-msgstr ""
+msgstr "rpcinfo: kan geen kontakt krijgen met portmapper"
 
 #: sunrpc/rpcinfo.c:510
 msgid "rpcinfo: can't contact portmapper: "
-msgstr ""
+msgstr "rpcinfo: kan geen kontakt krijgen met portmapper: "
 
 #: sunrpc/portmap.c:137
 msgid "run_svc returned unexpectedly\n"
@@ -2320,11 +2320,11 @@ msgstr "zelfde regel naam in meerdere bestanden"
 
 #: inet/rcmd.c:158
 msgid "select: protocol failure in circuit setup\n"
-msgstr ""
+msgstr "select: protocol mislukt in opstart circuit\n"
 
 #: inet/rcmd.c:176
 msgid "socket: protocol failure in circuit setup.\n"
-msgstr ""
+msgstr "socket: protocol mislukt in opstart circuit.\n"
 
 #: locale/programs/locfile.c:600
 msgid "sorting order `forward' and `backward' are mutually exclusive"
@@ -2349,15 +2349,15 @@ msgstr "beginjaar is groter dan eindejaar"
 
 #: sunrpc/svc_tcp.c:199 sunrpc/svc_tcp.c:204
 msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr ""
+msgstr "svc_tcp: makefd_xprt: geen geheugen meer\n"
 
 #: sunrpc/svc_tcp.c:147
 msgid "svctcp_.c - cannot getsockname or listen"
-msgstr ""
+msgstr "svctcp_.c - `getsockname' of `listen' lukken niet"
 
 #: sunrpc/svc_tcp.c:134
 msgid "svctcp_.c - udp socket creation problem"
-msgstr ""
+msgstr "svctcp_.c - udp socket aanmaak probleem"
 
 #: sunrpc/svc_tcp.c:154 sunrpc/svc_tcp.c:161
 msgid "svctcp_create: out of memory\n"
@@ -2365,11 +2365,11 @@ msgstr "svctcp_create: geen geheugen meer beschikbaar\n"
 
 #: sunrpc/svc_udp.c:119
 msgid "svcudp_create - cannot getsockname"
-msgstr ""
+msgstr "svcudp_create - `getsockname' lukt niet"
 
 #: sunrpc/svc_udp.c:107
 msgid "svcudp_create: socket creation problem"
-msgstr ""
+msgstr "svcudp_create: socket aanmaak probleem"
 
 #: locale/programs/ld-collate.c:1190
 #, c-format
@@ -2377,6 +2377,8 @@ msgid ""
 "symbol for multicharacter collating element `%.*s' duplicates element "
 "definition"
 msgstr ""
+"symbool voor multikarakter vergelijkings element `%.*s' dupliceerd\n"
+"element definitie"
 
 #: locale/programs/ld-collate.c:1063
 #, c-format
@@ -2384,6 +2386,8 @@ msgid ""
 "symbol for multicharacter collating element `%.*s' duplicates other element "
 "definition"
 msgstr ""
+"symbool voor multikarakter vergelijkings element `%.*s' dupliceert\n"
+"andere element definities"
 
 #: locale/programs/ld-collate.c:1199
 #, c-format
@@ -2391,6 +2395,8 @@ msgid ""
 "symbol for multicharacter collating element `%.*s' duplicates other symbol "
 "definition"
 msgstr ""
+"symbool voor multikarakter vergelijkings element `%.*s' dupliceert\n"
+"andere symbool definitie"
 
 #: locale/programs/ld-collate.c:1072
 #, c-format
@@ -2428,7 +2434,7 @@ msgstr "syntactische fout in karakter conversie definitie"
 
 #: locale/programs/locfile.c:662
 msgid "syntax error in collating order definition"
-msgstr ""
+msgstr "syntactische fout in collating volgorde definitie"
 
 #: locale/programs/locfile.c:512
 msgid "syntax error in collation definition"
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index e3e38d151a..9c434151fe 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -121,6 +121,7 @@ defines := $(defines) -D_PATH_RPC='"$(sysconfdir)/rpc"'
 # We use a stamp file to avoid unnessary recompilation each time rpcgen is
 # relinked.
 $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp
+	@:
 $(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen
 	$(make-target-directory)
 	-@rm -f ${@:stmp=T} $@
@@ -132,6 +133,7 @@ $(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen
 
 # Generate the rpcsvc XDR functions with rpcgen.
 $(objpfx)x%.c: $(objpfx)x%.stmp
+	@:
 $(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen
 	-@rm -f ${@:stmp=T} $@
 	$(rpcgen-cmd) -c $< -o ${@:stmp=T}
diff --git a/sysdeps/alpha/stxncpy.S b/sysdeps/alpha/stxncpy.S
index 8c5fcf6e67..f47348e3fc 100644
--- a/sysdeps/alpha/stxncpy.S
+++ b/sysdeps/alpha/stxncpy.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
    Contributed by Richard Henderson (rth@tamu.edu)
 
 This file is part of the GNU C Library.
@@ -321,9 +321,9 @@ $unaligned:
 	mskqh	t2, t5, t2	# e0    : begin src byte validity mask
 	cmpbge	zero, t1, t7	# .. e1 : is there a zero?
 	extql	t2, a1, t2	# e0    :
-	or	t7, t10, t6	# .. e1 : test for end-of-count too
+	or	t7, t10, t5	# .. e1 : test for end-of-count too
 	cmpbge	zero, t2, t3	# e0    :
-	cmoveq	a2, t6, t7	# .. e1 :
+	cmoveq	a2, t5, t7	# .. e1 :
 	andnot	t7, t3, t7	# e0    :
 	beq	t7, $u_head	# .. e1 (zdb)
 
diff --git a/sysdeps/i386/fpu/__math.h b/sysdeps/i386/fpu/__math.h
index 3728d45be6..86793babe5 100644
--- a/sysdeps/i386/fpu/__math.h
+++ b/sysdeps/i386/fpu/__math.h
@@ -1,5 +1,5 @@
 /* Inline math functions for i387.
-   Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by John C. Bowman <bowman@ipp-garching.mpg.de>, 1995.
 
@@ -373,13 +373,14 @@ ceil (double __x)
 /* Optimized versions for some non-standardized functions.  */
 #ifdef __USE_MISC
 
-__MATH_INLINE double __hypot (double __x, double __y);
+__MATH_INLINE double hypot (double __x, double __y);
 __MATH_INLINE double
 hypot (double __x, double __y)
 {
   return sqrt (__x * __x + __y * __y);
 }
 
+__MATH_INLINE double log1p (double __x);
 __MATH_INLINE double
 log1p (double __x)
 {
@@ -397,7 +398,7 @@ log1p (double __x)
   return __value;
 }
 
-__MATH_INLINE double __asinh (double __x);
+__MATH_INLINE double asinh (double __x);
 __MATH_INLINE double
 asinh (double __x)
 {
@@ -407,14 +408,14 @@ asinh (double __x)
 		* __sgn1 (__x));
 }
 
-__MATH_INLINE double __acosh (double __x);
+__MATH_INLINE double acosh (double __x);
 __MATH_INLINE double
 acosh (double __x)
 {
   return log (__x + sqrt (__x - 1.0) * sqrt (__x + 1.0));
 }
 
-__MATH_INLINE double __atanh (double __x);
+__MATH_INLINE double atanh (double __x);
 __MATH_INLINE double
 atanh (double __x)
 {
@@ -423,7 +424,7 @@ atanh (double __x)
   return -0.5 * __log1p (-(__y + __y) / (1.0 + __y)) * __sgn1 (__x);
 }
 
-__MATH_INLINE double __coshm1 (double __x);
+__MATH_INLINE double coshm1 (double __x);
 __MATH_INLINE double
 coshm1 (double __x)
 {
@@ -432,14 +433,14 @@ coshm1 (double __x)
   return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1;
 }
 
-__MATH_INLINE double __acosh1p (double __x);
+__MATH_INLINE double acosh1p (double __x);
 __MATH_INLINE double
 acosh1p (double __x)
 {
   return __log1p (__x + sqrt (__x) * sqrt (__x + 2.0));
 }
 
-__MATH_INLINE double __logb (double __x);
+__MATH_INLINE double logb (double __x);
 __MATH_INLINE double
 logb (double __x)
 {
@@ -451,7 +452,7 @@ logb (double __x)
   return __value;
 }
 
-__MATH_INLINE double __drem (double __x, double __y);
+__MATH_INLINE double drem (double __x, double __y);
 __MATH_INLINE double
 drem (double __x, double __y)
 {
@@ -466,7 +467,7 @@ drem (double __x, double __y)
   return __value;
 }
 
-__MATH_INLINE void __sincos (double __x, double *__sinx, double *__cosx);
+__MATH_INLINE void sincos (double __x, double *__sinx, double *__cosx);
 __MATH_INLINE void
 sincos (double __x, double *__sinx, double *__cosx)
 {
@@ -479,14 +480,14 @@ sincos (double __x, double *__sinx, double *__cosx)
   *__cosx = __cosr;
 }
 
-__MATH_INLINE double __sgn (double __x);
+__MATH_INLINE double sgn (double __x);
 __MATH_INLINE double
 sgn (double __x)
 {
   return (__x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0));
 }
 
-__MATH_INLINE double __pow2 (double __x);
+__MATH_INLINE double pow2 (double __x);
 __MATH_INLINE double
 pow2 (double __x)
 {
diff --git a/sysdeps/unix/sysv/linux/statbuf.h b/sysdeps/unix/sysv/linux/statbuf.h
index 3a3e9d07d5..39bbdc9ece 100644
--- a/sysdeps/unix/sysv/linux/statbuf.h
+++ b/sysdeps/unix/sysv/linux/statbuf.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -32,8 +32,8 @@
 
 struct stat
   {
-    short int st_dev;			/* Device.  */
-    unsigned short __pad1;
+    unsigned short int st_dev;		/* Device.  */
+    unsigned short int __pad1;
     unsigned long int st_ino;		/* File serial number.	*/
     unsigned short int st_mode;		/* File mode.  */
     unsigned short int st_nlink;	/* Link count.  */
diff --git a/time/Makefile b/time/Makefile
index b994eee1ac..08a19a1838 100644
--- a/time/Makefile
+++ b/time/Makefile
@@ -35,11 +35,7 @@ routines	:= offtime asctime clock ctime ctime_r difftime	\
 		   strptime
 
 others	:= ap zdump zic
-tests	:= test_time clocktest test-tz
-
-# Before the test-tz test can be run we need the data to be installed.
-tests: install-test-data
-
+tests	:= test_time clocktest
 
 tzfiles := africa antarctica asia australasia europe northamerica \
 	   southamerica etcetera factory systemv backward \
@@ -56,6 +52,15 @@ all: # Make this the default target; it will be defined in Rules.
 
 include ../Makeconfig	# Get objpfx defined so we can use it below.
 
+ifeq (no,$(cross-compiling))
+# We can run the test-tz test only if we can install the test data using
+# zic.  This isn't possible when cross-compiling.
+tests += test-tz
+
+# Before the test-tz test can be run we need the data to be installed.
+tests: install-test-data
+endif
+
 # z.* use this variable.
 define nl
 
@@ -158,6 +163,7 @@ CFLAGS-zic.c = -Wno-strict-prototypes -DNOID $(tz-cflags)
 CFLAGS-ialloc.c = -Wno-strict-prototypes -DNOID
 CFLAGS-scheck.c = -Wno-strict-prototypes -DNOID
 CFLAGS-tzfile.c = $(tz-cflags)
+CFLAGS-tzset.c = $(tz-cflags)
 
 # We have to make sure the data for testing the tz functions is available.
 .PHONY: install-test-data
diff --git a/time/tzfile.c b/time/tzfile.c
index ed7b0932f3..e063d5d04f 100644
--- a/time/tzfile.c
+++ b/time/tzfile.c
@@ -112,17 +112,19 @@ __tzfile_read (const char *file)
   else if (*file == '\0')
     /* User specified the empty string; use UTC explicitly.  */
     file = "Universal";
-
-  /* We must not allow to read an arbitrary file in a setuid program.
-     So we fail for any file which is not in the directory hierachy
-     starting at TZDIR.  */
-  if (__libc_enable_secure
-      && ((*file == '/'
-	   && memcmp (file, default_tzdir, sizeof (default_tzdir) - 1) != 0)
-	  || strstr (file, "../") != NULL))
-    /* This test a certainly a bit too restrictive but it should catch all
-       critical case.  */
-    return;
+  else
+    {
+      /* We must not allow to read an arbitrary file in a setuid
+	 program.  So we fail for any file which is not in the
+	 directory hierachy starting at TZDIR.  */
+      if (__libc_enable_secure
+	  && ((*file == '/'
+	       && memcmp (file, default_tzdir, sizeof (default_tzdir) - 1))
+	      || strstr (file, "../") != NULL))
+	/* This test a certainly a bit too restrictive but it should
+	   catch all critical case.  */
+	return;
+    }
 
   if (*file != '/')
     {
diff --git a/time/tzset.c b/time/tzset.c
index 87dc6d6337..05760b2c62 100644
--- a/time/tzset.c
+++ b/time/tzset.c
@@ -94,6 +94,12 @@ __tzset_internal (always)
 
   /* Examine the TZ environment variable.  */
   tz = getenv ("TZ");
+  if (tz == NULL)
+    /* No user specification; use the site-wide default.  */
+    tz = TZDEFAULT;
+  else if (*tz == '\0')
+    /* User specified the empty string; use UTC explicitly.  */
+    tz = "Universal";
 
   /* A leading colon means "implementation defined syntax".
      We ignore the colon and always use the same algorithm:
@@ -108,10 +114,10 @@ __tzset_internal (always)
 
   /* Free old storage.  */
   if (tz_rules[0].name != NULL && *tz_rules[0].name != '\0')
-    free((void *) tz_rules[0].name);
+    free ((void *) tz_rules[0].name);
   if (tz_rules[1].name != NULL && *tz_rules[1].name != '\0' &&
       tz_rules[1].name != tz_rules[0].name)
-    free((void *) tz_rules[1].name);
+    free ((void *) tz_rules[1].name);
   tz_rules[0].name = NULL;
   tz_rules[1].name = NULL;
 
@@ -163,7 +169,7 @@ __tzset_internal (always)
       return;
     }
 
-  if (sscanf(tz, "%[^0-9,+-]", tz_rules[0].name) != 1 ||
+  if (sscanf (tz, "%[^0-9,+-]", tz_rules[0].name) != 1 ||
       (l = strlen(tz_rules[0].name)) < 3)
     {
       free (tz_rules[0].name);
@@ -180,7 +186,7 @@ __tzset_internal (always)
   tz += l;
 
   /* Figure out the standard offset from UTC.  */
-  if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit(*tz)))
+  if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit (*tz)))
     return;
 
   if (*tz == '-' || *tz == '+')