about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-02-15 19:31:34 +0000
committerUlrich Drepper <drepper@redhat.com>1998-02-15 19:31:34 +0000
commit14ea22e96c0b6fce54e2451c69c96c429177b62c (patch)
tree4fa8964f6ae07342ee56de737e944c60f6a4cf63
parentdc30f461575342ffeb6c0f2d5931493c1c3a91c0 (diff)
downloadglibc-14ea22e96c0b6fce54e2451c69c96c429177b62c.tar.gz
glibc-14ea22e96c0b6fce54e2451c69c96c429177b62c.tar.xz
glibc-14ea22e96c0b6fce54e2451c69c96c429177b62c.zip
Update.
1998-02-15  Ulrich Drepper  <drepper@cygnus.com>

	* nss/nsswitch.c (__nss_lookup): Return 1 if this was the last
	module.

	* nss/getXXent_r.c: If no more module is found don't try to call
	setXXent functions but leave unsuccessfully.

	* malloc/obstack.h: Cleanups.

	* sysdeps/wordsize-32/stdint.h: New file.
	* sysdeps/wordsize-64/stdint.h: New file.
	* sysdeps/generic/stdint.h: New file.
	* sysdeps/wordsize-32/inttypes.h: Adopt to use stdint.h.
	* sysdeps/wordsize-64/inttypes.h: Likewise.
	* stdlib/Makefile (headers): Add stdint.h.

1998-02-03  Paul Eggert  <eggert@twinsun.com>

	* malloc/obstack.h (PTR_INT_TYPE): Use __PTRDIFF_TYPE__ if available.

1998-02-13 17:59  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* timezone: New directory.
	* time/README, time/africa, time/antarctica, time/asia,
	time/australasia, time/backward, time/checktab.awk,
	time/etcetera, time/europe, time/factory, time/ialloc.c,
	time/iso3166.tab, time/leapseconds, time/northamerica,
	time/pacificnew, time/private.h, time/scheck.c,
	time/solar87, time/solar88, time/solar89, time/southamerica,
	time/systemv, time/test-tz.c, time/tzfile.h,
	time/tzselect.ksh, time/yearistype, time/zdump.c,
	time/zic.c, time/zone.tab: Moved to timezone.
	* time/tzfile.c: Include tzfile.h from timezone subdir.
	* time/tzset.c: Likewise.
	* time/Makefile: Cut out all code relating to timezones...
	* timezone/Makefile: ...and paste it in here.
	* Makefile (subdirs): Add timezone.

1998-02-13 18:45  H.J. Lu  <hjl@gnu.org>

	* libc.map (_sys_nerr): Added.

	* sysdeps/unix/sysv/linux/errlist.c (_sys_nerr): Make it
	versioned symbol.

1998-02-15 17:16  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/bits/socket.h: Define PF_KEY and
	pseudo_AF_KEY instead of pseudo_PF_KEY and AF_KEY.
	Reported by Craig Metz <cmetz@inner.net>.

1998-01-22  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* nss/nss_files/files-parse.c (LOOKUP_NAME_CASE): Use __strcasecmp
	instead of strcasecmp.
	* nss/nss_files/files-alias.c (get_next_alias): Likewise.

	* wctype/wctype.h (_ISwbit): Avoid warning with gcc before 2.8.

1998-02-15 16:55  Ulrich Drepper  <drepper@cygnus.com>

	* socket/sys/socket.h (setsockopt): Make OPTVAL parameter const.
	Patch by Dean Gaudet <dgaudet@arctic.org>.

1998-02-15 16:53  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/Dist: Add getresgid.c and getresuid.c.

1998-02-15 10:49  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* sysdeps/unix/sysv/linux/poll.c: If compiled against a kernel
	with no poll syscall, just include the BSD version.
	* sysdeps/unix/sysv/linux/getresuid.c: If compiled against a
	kernel without the syscall, include the stub version.
	* sysdeps/unix/sysv/linux/getresgid.c: Likewise.
	* sysdeps/generic/getresuid.c: New file.
	* sysdeps/generic/getresgid.c: New file.

1998-02-15  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/vfscanf.c: Correct last change a bit.
-rw-r--r--ChangeLog84
-rw-r--r--Makefile2
-rw-r--r--README-alpha (renamed from SNAP)0
-rw-r--r--elf/Makefile7
-rw-r--r--libc.map4
-rw-r--r--malloc/obstack.h172
-rw-r--r--math/test-reduce.c207
-rw-r--r--nss/getXXent_r.c7
-rw-r--r--nss/nss_files/files-alias.c2
-rw-r--r--nss/nss_files/files-parse.c2
-rw-r--r--nss/nsswitch.c7
-rw-r--r--socket/sys/socket.h4
-rw-r--r--stdio-common/vfscanf.c46
-rw-r--r--stdlib/Makefile2
-rw-r--r--sysdeps/generic/Dist2
-rw-r--r--sysdeps/generic/getresgid.c34
-rw-r--r--sysdeps/generic/getresuid.c34
-rw-r--r--sysdeps/generic/s_exp2.c15
-rw-r--r--sysdeps/generic/s_exp2f.c15
-rw-r--r--sysdeps/generic/stdint.h1
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h6
-rw-r--r--sysdeps/unix/sysv/linux/errlist.c4
-rw-r--r--sysdeps/unix/sysv/linux/getresgid.c6
-rw-r--r--sysdeps/unix/sysv/linux/getresuid.c6
-rw-r--r--sysdeps/unix/sysv/linux/poll.c8
-rw-r--r--sysdeps/wordsize-32/inttypes.h425
-rw-r--r--sysdeps/wordsize-32/stdint.h214
-rw-r--r--sysdeps/wordsize-64/inttypes.h423
-rw-r--r--sysdeps/wordsize-64/stdint.h214
-rw-r--r--time/Makefile181
-rw-r--r--time/tzfile.c4
-rw-r--r--time/tzset.c6
-rw-r--r--timezone/Makefile196
-rw-r--r--timezone/README (renamed from time/README)0
-rw-r--r--timezone/africa (renamed from time/africa)0
-rw-r--r--timezone/antarctica (renamed from time/antarctica)0
-rw-r--r--timezone/asia (renamed from time/asia)0
-rw-r--r--timezone/australasia (renamed from time/australasia)0
-rw-r--r--timezone/backward (renamed from time/backward)0
-rw-r--r--timezone/checktab.awk (renamed from time/checktab.awk)0
-rw-r--r--timezone/etcetera (renamed from time/etcetera)0
-rw-r--r--timezone/europe (renamed from time/europe)0
-rw-r--r--timezone/factory (renamed from time/factory)0
-rw-r--r--timezone/ialloc.c (renamed from time/ialloc.c)0
-rw-r--r--timezone/iso3166.tab (renamed from time/iso3166.tab)0
-rw-r--r--timezone/leapseconds (renamed from time/leapseconds)0
-rw-r--r--timezone/northamerica (renamed from time/northamerica)0
-rw-r--r--timezone/pacificnew (renamed from time/pacificnew)0
-rw-r--r--timezone/private.h (renamed from time/private.h)0
-rw-r--r--timezone/scheck.c (renamed from time/scheck.c)0
-rw-r--r--timezone/solar87 (renamed from time/solar87)0
-rw-r--r--timezone/solar88 (renamed from time/solar88)0
-rw-r--r--timezone/solar89 (renamed from time/solar89)0
-rw-r--r--timezone/southamerica (renamed from time/southamerica)0
-rw-r--r--timezone/systemv (renamed from time/systemv)0
-rw-r--r--timezone/test-tz.c (renamed from time/test-tz.c)0
-rw-r--r--timezone/tzfile.h (renamed from time/tzfile.h)0
-rw-r--r--timezone/tzselect.ksh (renamed from time/tzselect.ksh)0
-rwxr-xr-xtimezone/yearistype (renamed from time/yearistype)0
-rw-r--r--timezone/zdump.c (renamed from time/zdump.c)0
-rw-r--r--timezone/zic.c (renamed from time/zic.c)0
-rw-r--r--timezone/zone.tab (renamed from time/zone.tab)0
-rw-r--r--wctype/wctype.h4
63 files changed, 1174 insertions, 1170 deletions
diff --git a/ChangeLog b/ChangeLog
index 719304cd7c..3c107169ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,86 @@
+1998-02-15  Ulrich Drepper  <drepper@cygnus.com>
+
+	* nss/nsswitch.c (__nss_lookup): Return 1 if this was the last
+	module.
+
+	* nss/getXXent_r.c: If no more module is found don't try to call
+	setXXent functions but leave unsuccessfully.
+
+	* malloc/obstack.h: Cleanups.
+
+	* sysdeps/wordsize-32/stdint.h: New file.
+	* sysdeps/wordsize-64/stdint.h: New file.
+	* sysdeps/generic/stdint.h: New file.
+	* sysdeps/wordsize-32/inttypes.h: Adopt to use stdint.h.
+	* sysdeps/wordsize-64/inttypes.h: Likewise.
+	* stdlib/Makefile (headers): Add stdint.h.
+
+1998-02-03  Paul Eggert  <eggert@twinsun.com>
+
+	* malloc/obstack.h (PTR_INT_TYPE): Use __PTRDIFF_TYPE__ if available.
+
+1998-02-13 17:59  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+	* timezone: New directory.
+	* time/README, time/africa, time/antarctica, time/asia,
+	time/australasia, time/backward, time/checktab.awk,
+	time/etcetera, time/europe, time/factory, time/ialloc.c,
+	time/iso3166.tab, time/leapseconds, time/northamerica,
+	time/pacificnew, time/private.h, time/scheck.c,
+	time/solar87, time/solar88, time/solar89, time/southamerica,
+	time/systemv, time/test-tz.c, time/tzfile.h,
+	time/tzselect.ksh, time/yearistype, time/zdump.c,
+	time/zic.c, time/zone.tab: Moved to timezone.
+	* time/tzfile.c: Include tzfile.h from timezone subdir.
+	* time/tzset.c: Likewise.
+	* time/Makefile: Cut out all code relating to timezones...
+	* timezone/Makefile: ...and paste it in here.
+	* Makefile (subdirs): Add timezone.
+
+1998-02-13 18:45  H.J. Lu  <hjl@gnu.org>
+
+	* libc.map (_sys_nerr): Added.
+
+	* sysdeps/unix/sysv/linux/errlist.c (_sys_nerr): Make it
+	versioned symbol.
+
+1998-02-15 17:16  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/unix/sysv/linux/bits/socket.h: Define PF_KEY and
+	pseudo_AF_KEY instead of pseudo_PF_KEY and AF_KEY.
+	Reported by Craig Metz <cmetz@inner.net>.
+
+1998-01-22  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* nss/nss_files/files-parse.c (LOOKUP_NAME_CASE): Use __strcasecmp
+	instead of strcasecmp.
+	* nss/nss_files/files-alias.c (get_next_alias): Likewise.
+
+	* wctype/wctype.h (_ISwbit): Avoid warning with gcc before 2.8.
+
+1998-02-15 16:55  Ulrich Drepper  <drepper@cygnus.com>
+
+	* socket/sys/socket.h (setsockopt): Make OPTVAL parameter const.
+	Patch by Dean Gaudet <dgaudet@arctic.org>.
+
+1998-02-15 16:53  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/generic/Dist: Add getresgid.c and getresuid.c.
+
+1998-02-15 10:49  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+	* sysdeps/unix/sysv/linux/poll.c: If compiled against a kernel
+	with no poll syscall, just include the BSD version.
+	* sysdeps/unix/sysv/linux/getresuid.c: If compiled against a
+	kernel without the syscall, include the stub version.
+	* sysdeps/unix/sysv/linux/getresgid.c: Likewise.
+	* sysdeps/generic/getresuid.c: New file.
+	* sysdeps/generic/getresgid.c: New file.
+
+1998-02-15  Ulrich Drepper  <drepper@cygnus.com>
+
+	* stdio-common/vfscanf.c: Correct last change a bit.
+
 1998-02-13 17:39  Ulrich Drepper  <drepper@cygnus.com>
 
 	* elf/Makefile: Don't use --version-script parameter to link ld.so
@@ -27,7 +110,6 @@
 
 	* stdlib/strfmon.c: char is unsigned, sometimes.
 
-	*sysdeps/powerpc
 	* sysdeps/powerpc/Makefile: Remove quad float support.
 	* sysdeps/powerpc/q_*.c: Remove, they will become an add-on.
 	* sysdeps/powerpc/quad_float.h: Likewise.
diff --git a/Makefile b/Makefile
index 7efe32350b..5a3456ef61 100644
--- a/Makefile
+++ b/Makefile
@@ -64,7 +64,7 @@ subdirs = csu assert ctype db2 locale intl catgets math setjmp signal stdlib \
 	  stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd \
 	  posix io termios resource misc socket sysvipc gmon gnulib iconv \
 	  iconvdata wctype manual shadow md5-crypt po argp $(add-ons) nss \
-	  localedata $(rt) $(sysdep-subdirs) $(binfmt-subdir)
+	  localedata timezone $(rt) $(sysdep-subdirs) $(binfmt-subdir)
 export subdirs := $(subdirs)	# Benign, useless in GNU make before 3.63.
 
 # The mach and hurd subdirectories have many generated header files which
diff --git a/SNAP b/README-alpha
index d13b9f7191..d13b9f7191 100644
--- a/SNAP
+++ b/README-alpha
diff --git a/elf/Makefile b/elf/Makefile
index 5fe73e7171..093fc09369 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -87,6 +87,11 @@ $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(common-objpfx)libc_pic.a
 
 # Do we need a linker script?
 rtld-ldscript-in := $(firstword $(wildcard $(+sysdep_dirs:%=%/rtld-ldscript.in)))
+
+ifeq ($(versioning),yes)
+RTLD-VERSIONS = -Wl,--version-script=$(libc-map)
+endif
+
 ifneq (,$(rtld-ldscript-in))
 LDFLAGS-rtld = -T $(objpfx)rtld-ldscript
 
@@ -103,8 +108,6 @@ $(objpfx)rtld-ldscript: $(rtld-ldscript-in) $(rtld-parms)
 $(objpfx)ld.so: $(objpfx)librtld.os $(objpfx)rtld-ldscript
 	$(rtld-link) -Wl,-soname=$(rtld-installed-name)
 
-RTLD-VERSIONS=$(addprefix -Wl,--version-script=,$(libc-map))
-
 define rtld-link
 $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
 	  -Wl,-rpath=$(default-rpath) $(LDFLAGS-rtld) \
diff --git a/libc.map b/libc.map
index 76154c9d90..c1d54478e6 100644
--- a/libc.map
+++ b/libc.map
@@ -5,7 +5,7 @@ GLIBC_2.0 {
     __ctype_b; __ctype_tolower; __ctype_toupper;
     _nl_msg_cat_cntr; __environ; _environ; _res;
     ___brk_addr; __curbrk; _nl_current_LC_CTYPE; _libc_intl_domainname;
-    _sys_errlist; _sys_siglist; __progname; _nl_default_dirname;
+    _sys_errlist; _sys_nerr; _sys_siglist; __progname; _nl_default_dirname;
     _nl_domain_bindings; __timezone; __daylight; __tzname;
     _nl_current_LC_COLLATE; __collate_element_hash;
     __collate_element_strings; __collate_symbol_classes;
@@ -465,7 +465,7 @@ GLIBC_2.1 {
     wait4;
 
     # New errlist.
-    _sys_errlist; sys_errlist; sys_nerr;
+    _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
 
     # New special glibc functions.
     gnu_get_libc_release; gnu_get_libc_version;
diff --git a/malloc/obstack.h b/malloc/obstack.h
index e7ae6959e5..edbcd264df 100644
--- a/malloc/obstack.h
+++ b/malloc/obstack.h
@@ -1,5 +1,5 @@
 /* obstack.h - object stack macros
-   Copyright (C) 1988,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
+   Copyright (C) 1988,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
 
    This file is part of the GNU C Library.  Its master source is NOT part of
    the C library, however.  The master source lives in /gd/gnu/lib.
@@ -116,45 +116,39 @@ extern "C" {
    may ignore the byte-within-word field of the pointer.  */
 
 #ifndef __PTR_TO_INT
-#define __PTR_TO_INT(P) ((P) - (char *) 0)
+# define __PTR_TO_INT(P) ((P) - (char *) 0)
 #endif
 
 #ifndef __INT_TO_PTR
-#define __INT_TO_PTR(P) ((P) + (char *) 0)
+# define __INT_TO_PTR(P) ((P) + (char *) 0)
 #endif
 
-/* We need the type of the resulting object.  In ANSI C it is ptrdiff_t
-   but in traditional C it is usually long.  If we are in ANSI C and
-   don't already have ptrdiff_t get it.  */
-
-#if defined (__STDC__) && __STDC__ && ! defined (offsetof)
-#if defined (__GNUC__) && defined (IN_GCC)
-/* On Next machine, the system's stddef.h screws up if included
-   after we have defined just ptrdiff_t, so include all of stddef.h.
-   Otherwise, define just ptrdiff_t, which is all we need.  */
-#ifndef __NeXT__
-#define __need_ptrdiff_t
-#endif
-#endif
+/* We need the type of the resulting object.  If __PTRDIFF_TYPE__ is
+   defined, as with GNU C, use that; that way we don't pollute the
+   namespace with <stddef.h>'s symbols.  Otherwise, if <stddef.h> is
+   available, include it and use ptrdiff_t.  In traditional C, long is
+   the best that we can do.  */
 
-#include <stddef.h>
-#endif
-
-#if defined (__STDC__) && __STDC__
-#define PTR_INT_TYPE ptrdiff_t
+#ifdef __PTRDIFF_TYPE__
+# define PTR_INT_TYPE __PTRDIFF_TYPE__
 #else
-#define PTR_INT_TYPE long
+# ifdef HAVE_STDDEF_H
+#  include <stddef.h>
+#  define PTR_INT_TYPE ptrdiff_t
+# else
+#  define PTR_INT_TYPE long
+# endif
 #endif
 
-#if defined (_LIBC) || defined (HAVE_STRING_H)
-#include <string.h>
-#define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
-#else
-#ifdef memcpy
-#define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
+#if defined _LIBC || defined HAVE_STRING_H
+# include <string.h>
+# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
 #else
-#define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
-#endif
+# ifdef memcpy
+#  define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
+# else
+#  define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
+# endif
 #endif
 
 struct _obstack_chunk		/* Lives at front of each chunk. */
@@ -173,7 +167,7 @@ struct obstack		/* control current object in current chunk */
   char	*chunk_limit;		/* address of char after current chunk */
   PTR_INT_TYPE temp;		/* Temporary for some macros.  */
   int   alignment_mask;		/* Mask of alignment for each object. */
-#if defined (__STDC__) && __STDC__
+#if defined __STDC__ && __STDC__
   /* These prototypes vary based on `use_extra_arg', and we use
      casts to the prototypeless function type in all assignments,
      but having prototypes here quiets -Wstrict-prototypes.  */
@@ -197,7 +191,7 @@ struct obstack		/* control current object in current chunk */
 
 /* Declare the external functions we use; they are in obstack.c.  */
 
-#if defined (__STDC__) && __STDC__
+#if defined __STDC__ && __STDC__
 extern void _obstack_newchunk (struct obstack *, int);
 extern void _obstack_free (struct obstack *, void *);
 extern int _obstack_begin (struct obstack *, int, int,
@@ -214,7 +208,7 @@ extern int _obstack_begin_1 ();
 extern int _obstack_memory_used ();
 #endif
 
-#if defined (__STDC__) && __STDC__
+#if defined __STDC__ && __STDC__
 
 /* Do the function-declarations after the structs
    but before defining the macros.  */
@@ -262,7 +256,7 @@ int obstack_memory_used (struct obstack *obstack);
 /* Error handler called when `obstack_chunk_alloc' failed to allocate
    more memory.  This can be set to a user defined function.  The
    default action is to print a message and abort.  */
-#if defined (__STDC__) && __STDC__
+#if defined __STDC__ && __STDC__
 extern void (*obstack_alloc_failed_handler) (void);
 #else
 extern void (*obstack_alloc_failed_handler) ();
@@ -291,53 +285,53 @@ extern int obstack_exit_failure;
 
 /* To prevent prototype warnings provide complete argument list in
    standard C version.  */
-#if defined (__STDC__) && __STDC__
+#if defined __STDC__ && __STDC__
 
-#define obstack_init(h) \
+# define obstack_init(h) \
   _obstack_begin ((h), 0, 0, \
 		  (void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
 
-#define obstack_begin(h, size) \
+# define obstack_begin(h, size) \
   _obstack_begin ((h), (size), 0, \
 		  (void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
 
-#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
+# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
   _obstack_begin ((h), (size), (alignment), \
 		    (void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun))
 
-#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
+# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
   _obstack_begin_1 ((h), (size), (alignment), \
 		    (void *(*) (void *, long)) (chunkfun), \
 		    (void (*) (void *, void *)) (freefun), (arg))
 
-#define obstack_chunkfun(h, newchunkfun) \
+# define obstack_chunkfun(h, newchunkfun) \
   ((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
 
-#define obstack_freefun(h, newfreefun) \
+# define obstack_freefun(h, newfreefun) \
   ((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
 
 #else
 
-#define obstack_init(h) \
+# define obstack_init(h) \
   _obstack_begin ((h), 0, 0, \
 		  (void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free)
 
-#define obstack_begin(h, size) \
+# define obstack_begin(h, size) \
   _obstack_begin ((h), (size), 0, \
 		  (void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free)
 
-#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
+# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
   _obstack_begin ((h), (size), (alignment), \
 		    (void *(*) ()) (chunkfun), (void (*) ()) (freefun))
 
-#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
+# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
   _obstack_begin_1 ((h), (size), (alignment), \
 		    (void *(*) ()) (chunkfun), (void (*) ()) (freefun), (arg))
 
-#define obstack_chunkfun(h, newchunkfun) \
+# define obstack_chunkfun(h, newchunkfun) \
   ((h) -> chunkfun = (struct _obstack_chunk *(*)()) (newchunkfun))
 
-#define obstack_freefun(h, newfreefun) \
+# define obstack_freefun(h, newfreefun) \
   ((h) -> freefun = (void (*)()) (newfreefun))
 
 #endif
@@ -348,30 +342,30 @@ extern int obstack_exit_failure;
 
 #define obstack_memory_used(h) _obstack_memory_used (h)
 
-#if defined (__GNUC__) && defined (__STDC__) && __STDC__
+#if defined __GNUC__ && defined __STDC__ && __STDC__
 /* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
    does not implement __extension__.  But that compiler doesn't define
    __GNUC_MINOR__.  */
-#if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
-#define __extension__
-#endif
+# if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
+#  define __extension__
+# endif
 
 /* For GNU C, if not -traditional,
    we can define these macros to compute all args only once
    without using a global variable.
    Also, we can avoid using the `temp' slot, to make faster code.  */
 
-#define obstack_object_size(OBSTACK)					\
+# define obstack_object_size(OBSTACK)					\
   __extension__								\
   ({ struct obstack *__o = (OBSTACK);					\
      (unsigned) (__o->next_free - __o->object_base); })
 
-#define obstack_room(OBSTACK)						\
+# define obstack_room(OBSTACK)						\
   __extension__								\
   ({ struct obstack *__o = (OBSTACK);					\
      (unsigned) (__o->chunk_limit - __o->next_free); })
 
-#define obstack_make_room(OBSTACK,length)				\
+# define obstack_make_room(OBSTACK,length)				\
 __extension__								\
 ({ struct obstack *__o = (OBSTACK);					\
    int __len = (length);						\
@@ -379,12 +373,12 @@ __extension__								\
      _obstack_newchunk (__o, __len);					\
    (void) 0; })
 
-#define obstack_empty_p(OBSTACK)					\
+# define obstack_empty_p(OBSTACK)					\
   __extension__								\
   ({ struct obstack *__o = (OBSTACK);					\
      (__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })
 
-#define obstack_grow(OBSTACK,where,length)				\
+# define obstack_grow(OBSTACK,where,length)				\
 __extension__								\
 ({ struct obstack *__o = (OBSTACK);					\
    int __len = (length);						\
@@ -394,7 +388,7 @@ __extension__								\
    __o->next_free += __len;						\
    (void) 0; })
 
-#define obstack_grow0(OBSTACK,where,length)				\
+# define obstack_grow0(OBSTACK,where,length)				\
 __extension__								\
 ({ struct obstack *__o = (OBSTACK);					\
    int __len = (length);						\
@@ -405,7 +399,7 @@ __extension__								\
    *(__o->next_free)++ = 0;						\
    (void) 0; })
 
-#define obstack_1grow(OBSTACK,datum)					\
+# define obstack_1grow(OBSTACK,datum)					\
 __extension__								\
 ({ struct obstack *__o = (OBSTACK);					\
    if (__o->next_free + 1 > __o->chunk_limit)				\
@@ -417,7 +411,7 @@ __extension__								\
    and that the data added so far to the current object
    shares that much alignment.  */
 
-#define obstack_ptr_grow(OBSTACK,datum)					\
+# define obstack_ptr_grow(OBSTACK,datum)				\
 __extension__								\
 ({ struct obstack *__o = (OBSTACK);					\
    if (__o->next_free + sizeof (void *) > __o->chunk_limit)		\
@@ -425,7 +419,7 @@ __extension__								\
    *((void **)__o->next_free)++ = ((void *)datum);			\
    (void) 0; })
 
-#define obstack_int_grow(OBSTACK,datum)					\
+# define obstack_int_grow(OBSTACK,datum)				\
 __extension__								\
 ({ struct obstack *__o = (OBSTACK);					\
    if (__o->next_free + sizeof (int) > __o->chunk_limit)		\
@@ -433,10 +427,10 @@ __extension__								\
    *((int *)__o->next_free)++ = ((int)datum);				\
    (void) 0; })
 
-#define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
-#define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
+# define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
+# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
 
-#define obstack_blank(OBSTACK,length)					\
+# define obstack_blank(OBSTACK,length)					\
 __extension__								\
 ({ struct obstack *__o = (OBSTACK);					\
    int __len = (length);						\
@@ -445,19 +439,19 @@ __extension__								\
    __o->next_free += __len;						\
    (void) 0; })
 
-#define obstack_alloc(OBSTACK,length)					\
+# define obstack_alloc(OBSTACK,length)					\
 __extension__								\
 ({ struct obstack *__h = (OBSTACK);					\
    obstack_blank (__h, (length));					\
    obstack_finish (__h); })
 
-#define obstack_copy(OBSTACK,where,length)				\
+# define obstack_copy(OBSTACK,where,length)				\
 __extension__								\
 ({ struct obstack *__h = (OBSTACK);					\
    obstack_grow (__h, (where), (length));				\
    obstack_finish (__h); })
 
-#define obstack_copy0(OBSTACK,where,length)				\
+# define obstack_copy0(OBSTACK,where,length)				\
 __extension__								\
 ({ struct obstack *__h = (OBSTACK);					\
    obstack_grow0 (__h, (where), (length));				\
@@ -465,7 +459,7 @@ __extension__								\
 
 /* The local variable is named __o1 to avoid a name conflict
    when obstack_blank is called.  */
-#define obstack_finish(OBSTACK)  					\
+# define obstack_finish(OBSTACK)  					\
 __extension__								\
 ({ struct obstack *__o1 = (OBSTACK);					\
    void *value;								\
@@ -481,7 +475,7 @@ __extension__								\
    __o1->object_base = __o1->next_free;					\
    value; })
 
-#define obstack_free(OBSTACK, OBJ)					\
+# define obstack_free(OBSTACK, OBJ)					\
 __extension__								\
 ({ struct obstack *__o = (OBSTACK);					\
    void *__obj = (OBJ);							\
@@ -491,13 +485,13 @@ __extension__								\
 
 #else /* not __GNUC__ or not __STDC__ */
 
-#define obstack_object_size(h) \
+# define obstack_object_size(h) \
  (unsigned) ((h)->next_free - (h)->object_base)
 
-#define obstack_room(h)		\
+# define obstack_room(h)		\
  (unsigned) ((h)->chunk_limit - (h)->next_free)
 
-#define obstack_empty_p(h) \
+# define obstack_empty_p(h) \
  ((h)->chunk->prev == 0 && (h)->next_free - (h)->chunk->contents == 0)
 
 /* Note that the call to _obstack_newchunk is enclosed in (..., 0)
@@ -506,19 +500,19 @@ __extension__								\
    Casting the third operand to void was tried before,
    but some compilers won't accept it.  */
 
-#define obstack_make_room(h,length)					\
+# define obstack_make_room(h,length)					\
 ( (h)->temp = (length),							\
   (((h)->next_free + (h)->temp > (h)->chunk_limit)			\
    ? (_obstack_newchunk ((h), (h)->temp), 0) : 0))
 
-#define obstack_grow(h,where,length)					\
+# define obstack_grow(h,where,length)					\
 ( (h)->temp = (length),							\
   (((h)->next_free + (h)->temp > (h)->chunk_limit)			\
    ? (_obstack_newchunk ((h), (h)->temp), 0) : 0),			\
   _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp),	\
   (h)->next_free += (h)->temp)
 
-#define obstack_grow0(h,where,length)					\
+# define obstack_grow0(h,where,length)					\
 ( (h)->temp = (length),							\
   (((h)->next_free + (h)->temp + 1 > (h)->chunk_limit)			\
    ? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0),			\
@@ -526,40 +520,40 @@ __extension__								\
   (h)->next_free += (h)->temp,						\
   *((h)->next_free)++ = 0)
 
-#define obstack_1grow(h,datum)						\
+# define obstack_1grow(h,datum)						\
 ( (((h)->next_free + 1 > (h)->chunk_limit)				\
    ? (_obstack_newchunk ((h), 1), 0) : 0),				\
   (*((h)->next_free)++ = (datum)))
 
-#define obstack_ptr_grow(h,datum)					\
+# define obstack_ptr_grow(h,datum)					\
 ( (((h)->next_free + sizeof (char *) > (h)->chunk_limit)		\
    ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0),		\
   (*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum)))
 
-#define obstack_int_grow(h,datum)					\
+# define obstack_int_grow(h,datum)					\
 ( (((h)->next_free + sizeof (int) > (h)->chunk_limit)			\
    ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0),			\
   (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum)))
 
-#define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
-#define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
+# define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
+# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
 
-#define obstack_blank(h,length)						\
+# define obstack_blank(h,length)					\
 ( (h)->temp = (length),							\
   (((h)->chunk_limit - (h)->next_free < (h)->temp)			\
    ? (_obstack_newchunk ((h), (h)->temp), 0) : 0),			\
   ((h)->next_free += (h)->temp))
 
-#define obstack_alloc(h,length)						\
+# define obstack_alloc(h,length)					\
  (obstack_blank ((h), (length)), obstack_finish ((h)))
 
-#define obstack_copy(h,where,length)					\
+# define obstack_copy(h,where,length)					\
  (obstack_grow ((h), (where), (length)), obstack_finish ((h)))
 
-#define obstack_copy0(h,where,length)					\
+# define obstack_copy0(h,where,length)					\
  (obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
 
-#define obstack_finish(h)  						\
+# define obstack_finish(h)  						\
 ( ((h)->next_free == (h)->object_base					\
    ? (((h)->maybe_empty_object = 1), 0)					\
    : 0),								\
@@ -573,21 +567,21 @@ __extension__								\
   (h)->object_base = (h)->next_free,					\
   __INT_TO_PTR ((h)->temp))
 
-#if defined (__STDC__) && __STDC__
-#define obstack_free(h,obj)						\
+# if defined __STDC__ && __STDC__
+#  define obstack_free(h,obj)						\
 ( (h)->temp = (char *) (obj) - (char *) (h)->chunk,			\
   (((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
    ? (int) ((h)->next_free = (h)->object_base				\
 	    = (h)->temp + (char *) (h)->chunk)				\
    : (((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0), 0)))
-#else
-#define obstack_free(h,obj)						\
+# else
+#  define obstack_free(h,obj)						\
 ( (h)->temp = (char *) (obj) - (char *) (h)->chunk,			\
   (((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
    ? (int) ((h)->next_free = (h)->object_base				\
 	    = (h)->temp + (char *) (h)->chunk)				\
    : (_obstack_free ((h), (h)->temp + (char *) (h)->chunk), 0)))
-#endif
+# endif
 
 #endif /* not __GNUC__ or not __STDC__ */
 
diff --git a/math/test-reduce.c b/math/test-reduce.c
deleted file mode 100644
index 5149ead341..0000000000
--- a/math/test-reduce.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Geoffrey Keating <Geoff.Keating@anu.edu.au>, 1997.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* This is a generic program for comparing two precisions of a one-input
-   mathematical function.  It is amazingly good at detecting when GCC
-   folds constants improperly.  */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-#include <math.h>
-#include <ieee754.h>
-#include <fenv.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#define TSMALL float
-#define RSMALL(rfun) ({ unsigned rnum = (rfun); *(float *) &rnum; })
-#define TBIG double
-#define XDIFF (24)
-#define REDUCE(x) \
-   ({ union ieee754_float u = { x }; u.ieee.exponent = 0x80; x = u.f; })
-#define ABS(x) fabs(x)
-
-#define string_0(x) #x
-#define string_1(x) string_0(x)
-#define TBIG_NAME string_1(TBIG)
-#define TSMALL_NAME string_1(TSMALL)
-
-#define R_NEAREST 1
-#define R_ZERO 2
-#define R_UP 4
-#define R_DOWN 8
-#define R_ALL (R_NEAREST|R_ZERO|R_UP|R_DOWN)
-static fenv_t rmodes[4];
-static const char * const rmnames[4] =
-{ "near","zero","+Inf","-Inf" };
-
-static int quiet = 0;
-
-#ifdef FE_ALL_INVALID
-static const int invalid_exceptions = (FE_ALL_INVALID
-				       | FE_INVALID | FE_DIVBYZERO);
-#else
-static const int invalid_exceptions = (FE_INVALID | FE_DIVBYZERO);
-#endif
-
-static int
-checkit (char *fname,
-	 TSMALL (*fsmall) (TSMALL), TBIG (*fbig) (TBIG),
-	 unsigned smalltries, unsigned largetries)
-{
-  unsigned int i, nerrors = 0, nwarn;
-
-  int tryone (TSMALL fval)
-    {
-      int rmode;
-      int excepts, exceptsb;
-      TSMALL fres;
-      TBIG fvalb, fresb, diff;
-      char warn;
-
-      fvalb = (TBIG) fval;
-
-      for (rmode = 0; rmode < 4; ++rmode)
-	{
-	  fesetenv (rmodes + rmode);
-	  fres = fsmall (fval);
-	  excepts = fetestexcept (invalid_exceptions);
-	  fesetenv (rmodes + rmode);
-	  fresb = fbig (fvalb);
-	  exceptsb = fetestexcept (invalid_exceptions);
-
-	  if (excepts != exceptsb)
-	    {
-	      unsigned char *fvp = (unsigned char *) &fval;
-	      size_t j;
-
-	      printf ("%s(", fname);
-	      for (j = 0; j < sizeof (TSMALL); j++)
-		printf ("%02x", fvp[j]);
-	      printf ("),%s: exceptions %s: %08x, %s: %08x\n",
-		      rmnames[rmode],
-		      TBIG_NAME, exceptsb, TSMALL_NAME, excepts);
-	      if (++nerrors > 10)
-		return 1;
-	    }
-
-	  diff = ABS (fres - (TSMALL) fresb);
-	  if (fres == (TSMALL) fresb
-	      || isnan (fres) && isnan (fresb)
-	      || logb (fresb) - logb (diff) < XDIFF - 1)
-	    continue;
-
-	  if (logb (fresb) - logb (diff) < XDIFF)
-	    {
-	      if (++nwarn > 10 || quiet)
-		continue;
-	      warn = 'w';
-	    }
-	  else
-	    {
-	      if (++nerrors > 10)
-		return 1;
-	      warn = 'e';
-	    }
-
-	  {
-	    TSMALL fresbs = (TSMALL) fresb;
-	    unsigned char *fvp = (unsigned char *) &fval;
-	    unsigned char *frp = (unsigned char *) &fres;
-	    unsigned char *frpb = (unsigned char *) &fresb;
-	    unsigned char *frpbs = (unsigned char *) &fresbs;
-	    size_t j;
-
-	    printf ("%s(",fname);
-	    for (j = 0; j < sizeof (TSMALL); ++j)
-	      printf ("%02x", fvp[j]);
-	    printf ("),%s: %s ", rmnames[rmode], TBIG_NAME);
-	    for (j = 0; j < sizeof (TBIG); ++j)
-	      printf ("%02x", frpb[j]);
-	    printf (" (");
-	    for (j = 0; j < sizeof (TSMALL); ++j)
-	      printf ("%02x", frpbs[j]);
-	    printf ("), %s ", TSMALL_NAME);
-	    for (j = 0; j < sizeof (TSMALL); ++j)
-	      printf ("%02x", frp[j]);
-	    printf (" %c\n", warn);
-	  }
-	}
-      return 0;
-    }
-
-  nwarn = 0;
-  for (i = 0; i < smalltries; i++)
-    {
-      TSMALL fval;
-
-      fval = RSMALL (rand () ^ rand () << 16);
-      REDUCE (fval);
-      if (tryone (fval))
-	break;
-    }
-
-  printf ("%s-small: %d errors, %d (%0.2f%%) inaccuracies\n",
-	  fname, nerrors, nwarn,
-	  nwarn * 0.25 / ((double) smalltries));
-
-  nwarn = 0;
-  for (i = 0; i < largetries; ++i)
-    {
-      TSMALL fval;
-
-      fval = RSMALL (rand () ^ rand () << 16);
-      if (tryone (fval))
-	break;
-    }
-
-  printf ("%s-large: %d errors, %d (%0.2f%%) inaccuracies\n",
-	  fname, nerrors, nwarn,
-	  nwarn * 0.25 / ((double) largetries));
-  return nerrors == 0;
-}
-
-int
-main (void)
-{
-  int r;
-
-  _LIB_VERSION = _IEEE_;
-
-  /* Set up environments for rounding modes.  */
-  fesetenv (FE_DFL_ENV);
-  fesetround (FE_TONEAREST);
-  fegetenv (rmodes + 0);
-  fesetround (FE_TOWARDSZERO);
-  fegetenv (rmodes + 1);
-  fesetround (FE_UPWARD);
-  fegetenv (rmodes + 2);
-  fesetround (FE_DOWNWARD);
-  fegetenv (rmodes + 3);
-
-  /* Seed the RNG.  */
-  srand (time (0));
-
-  /* Do it.  */
-  r  = checkit ("exp2", exp2f, exp2, 1 << 20, 1 << 15);
-  r &= checkit ("exp",  expf,  exp,  1 << 20, 1 << 15);
-  return r ? 0 : 1;
-}
diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c
index aa21b6fe7c..b709a4a935 100644
--- a/nss/getXXent_r.c
+++ b/nss/getXXent_r.c
@@ -279,7 +279,12 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
 	    if (! no_more)
 	      status = (*sfct) (STAYOPEN_TMPVAR);
 	    else
-	      status = NSS_STATUS_NOTFOUND;
+	      {
+		status = NSS_STATUS_NOTFOUND;
+		if (no_more == 1)
+		  /* There is no more module to search.  */
+		  break;
+	      }
 	  }
 	while (! no_more && status != NSS_STATUS_SUCCESS);
     }
diff --git a/nss/nss_files/files-alias.c b/nss/nss_files/files-alias.c
index 66f3d3ad42..2d6e15c1d8 100644
--- a/nss/nss_files/files-alias.c
+++ b/nss/nss_files/files-alias.c
@@ -201,7 +201,7 @@ get_next_alias (const char *match, struct aliasent *result,
 	     lines until the next line containing the start of a new
 	     alias is found.  */
 	  ignore = (match != NULL
-		    && strcasecmp (result->alias_name, match) != 0);
+		    && __strcasecmp (result->alias_name, match) != 0);
 
 	  while (! ignore)
 	    {
diff --git a/nss/nss_files/files-parse.c b/nss/nss_files/files-parse.c
index 198b359b4c..dd5fdff645 100644
--- a/nss/nss_files/files-parse.c
+++ b/nss/nss_files/files-parse.c
@@ -235,7 +235,7 @@ parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
 #define LOOKUP_NAME_CASE(nameelt, aliaselt)				      \
 {									      \
   char **ap;								      \
-  if (! strcasecmp (name, result->nameelt))				      \
+  if (! __strcasecmp (name, result->nameelt))				      \
     break;								      \
   for (ap = result->aliaselt; *ap; ++ap)				      \
     if (! strcasecmp (name, *ap))					      \
diff --git a/nss/nsswitch.c b/nss/nsswitch.c
index 36c1d0035e..65da26b185 100644
--- a/nss/nsswitch.c
+++ b/nss/nsswitch.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -136,7 +136,8 @@ __nss_database_lookup (const char *database, const char *alternate_name,
 
 
 /* -1 == not found
-    0 == adjusted for next function */
+    0 == adjusted for next function
+    1 == finished */
 int
 __nss_lookup (service_user **ni, const char *fct_name, void **fctp)
 {
@@ -151,7 +152,7 @@ __nss_lookup (service_user **ni, const char *fct_name, void **fctp)
       *fctp = nss_lookup_function (*ni, fct_name);
     }
 
-  return *fctp != NULL ? 0 : -1;
+  return *fctp != NULL ? 0 : (*ni)->next == NULL ? 1 : -1;
 }
 
 
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 3d3f71385f..c3b75b382d 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -1,5 +1,5 @@
 /* Declarations of socket constants, types, and functions.
-   Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
+   Copyright (C) 1991, 92, 94, 95, 96, 97, 98 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
@@ -160,7 +160,7 @@ extern int getsockopt __P ((int __fd, int __level, int __optname,
    to *OPTVAL (which is OPTLEN bytes long).
    Returns 0 on success, -1 for errors.  */
 extern int setsockopt __P ((int __fd, int __level, int __optname,
-			    __ptr_t __optval, socklen_t __optlen));
+			    __const __ptr_t __optval, socklen_t __optlen));
 
 
 /* Prepare to accept connections on socket FD.
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index afb6f7c05a..0399e39ef5 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,7 +16,6 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include "../locale/localeinfo.h"
 #include <errno.h>
 #include <limits.h>
 #include <ctype.h>
@@ -26,12 +25,13 @@
 #include <string.h>
 #include <wctype.h>
 #include <bits/libc-lock.h>
+#include <locale/localeinfo.h>
 
 #ifdef	__GNUC__
-#define	HAVE_LONGLONG
-#define	LONGLONG	long long
+# define HAVE_LONGLONG
+# define LONGLONG	long long
 #else
-#define	LONGLONG	long
+# define LONGLONG	long
 #endif
 
 /* Those are flags in the conversion format. */
@@ -459,10 +459,13 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
       if (skip_space || (fc != '[' && fc != 'c' && fc != 'C' && fc != 'n'))
 	{
 	  /* Eat whitespace.  */
+	  int save_errno = errno;
+	  errno = 0;
 	  do
-	    if (inchar () == EOF)
+	    if (inchar () == EOF && errno == EINTR)
 	      input_error ();
 	  while (isspace (c));
+	  errno = save_errno;
 	  ungetc (c, s);
 	  skip_space = 0;
 	}
@@ -470,9 +473,9 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
       switch (fc)
 	{
 	case '%':	/* Must match a literal '%'.  */
+	  c = inchar ();
 	  if (c == EOF)
 	    input_error ();
-	  c = inchar ();
 	  if (c != fc)
 	    {
 	      ungetc (c, s);
@@ -518,7 +521,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 		     of 3 is also assigned to n2.  The value of d2 is not
 		     affected.  The value 3 is assigned to i.
 
-		 We go for now with the historically correct code fro ISO C,
+		 We go for now with the historically correct code from ISO C,
 		 i.e., we don't count the %n assignments.  When it ever
 		 should proof to be wrong just remove the #ifdef above.  */
 	      ++done;
@@ -536,8 +539,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 		    conv_error ();
 		}
 
-	      if (c != EOF)
-		c = inchar ();
+	      c = inchar ();
 	      if (c == EOF)
 		input_error ();
 
@@ -575,9 +577,6 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 		  conv_error ();
 	      }
 
-	    if (c == EOF)
-	      input_error ();
-
 	    do
 	      {
 #define NEXT_WIDE_CHAR(First)						      \
@@ -675,8 +674,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	    }
 	  STRING_ARG (str, char);
 
-	  if (c != EOF)
-	    c = inchar ();
+	  c = inchar ();
 	  if (c == EOF)
 	    input_error ();
 
@@ -742,9 +740,6 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	    int first = 1;
 	    STRING_ARG (wstr, wchar_t);
 
-	    if (c == EOF)
-	      input_error ();
-
 	    do
 	      {
 		size_t cnt = 0;
@@ -800,8 +795,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	  number_signed = 1;
 
 	number:
-	  if (c != EOF)
-	    c = inchar ();
+	  c = inchar ();
 	  if (c == EOF)
 	    input_error ();
 
@@ -922,8 +916,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	case 'G':
 	case 'a':
 	case 'A':
-	  if (c != EOF)
-	    c = inchar ();
+	  c = inchar ();
 	  if (c == EOF)
 	    input_error ();
 
@@ -1032,13 +1025,13 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	  if (flags & LONG)
 	    {
 	      STRING_ARG (wstr, wchar_t);
+	      c = '\0';		/* This is to keep gcc quiet.  */
 	    }
 	  else
 	    {
 	      STRING_ARG (str, char);
 
-	      if (c != EOF)
-		c = inchar ();
+	      c = inchar ();
 	      if (c == EOF)
 		input_error ();
 	    }
@@ -1096,9 +1089,6 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	      wint_t val;
 	      int first = 1;
 
-	      if (c == EOF)
-		input_error ();
-
 	      do
 		{
 		  size_t cnt = 0;
@@ -1168,7 +1158,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	}
     }
 
-  /* The last thing we saw in the format string was a white space.
+  /* The last thing we saw int the format string was a white space.
      Consume the last white spaces.  */
   if (skip_space)
     {
diff --git a/stdlib/Makefile b/stdlib/Makefile
index cd33f1f90f..6db064d543 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -22,7 +22,7 @@
 subdir	:= stdlib
 
 headers	:= stdlib.h alloca.h monetary.h fmtmsg.h ucontext.h sys/ucontext.h    \
-	   inttypes.h
+	   inttypes.h stdint.h
 
 routines	:=							      \
 	atof atoi atol atoll						      \
diff --git a/sysdeps/generic/Dist b/sysdeps/generic/Dist
index bc9e492e4f..e088372b07 100644
--- a/sysdeps/generic/Dist
+++ b/sysdeps/generic/Dist
@@ -1,3 +1,5 @@
 make_siglist.c signame.c signame.h
 det_endian.c
 entry.h
+getresgid.c
+getresuid.c
diff --git a/sysdeps/generic/getresgid.c b/sysdeps/generic/getresgid.c
new file mode 100644
index 0000000000..9381e077f5
--- /dev/null
+++ b/sysdeps/generic/getresgid.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; yog can redistribgte it and/or
+   modify it gnder the terms of the GNU Library General Pgblic License as
+   pgblished by the Free Software Fogndation; either version 2 of the
+   License, or (at yogr option) any later version.
+
+   The GNU C Library is distribgted in the hope that it will be gsefgl,
+   bgt WITHOUT ANY WARRANTY; withogt even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Pgblic License for more details.
+
+   Yog shogld have received a copy of the GNU Library General Pgblic
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Fogndation, Inc., 59 Temple Place - Sgite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <unistd.h>
+
+int
+__getresgid (egid, rgid, sgid)
+    gid_t egid;
+    gid_t rgid;
+    gid_t sgid;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+stub_warning (getresgid)
+
+weak_alias (__getresgid, getresgid)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/getresuid.c b/sysdeps/generic/getresuid.c
new file mode 100644
index 0000000000..44083e8de3
--- /dev/null
+++ b/sysdeps/generic/getresuid.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <unistd.h>
+
+int
+__getresuid (euid, ruid, suid)
+    uid_t euid;
+    uid_t ruid;
+    uid_t suid;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+stub_warning (getresuid)
+
+weak_alias (__getresuid, getresuid)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/s_exp2.c b/sysdeps/generic/s_exp2.c
deleted file mode 100644
index 4e25d38130..0000000000
--- a/sysdeps/generic/s_exp2.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <math.h>
-#include <stdio.h>
-#include <errno.h>
-
-double
-__exp2 (double x)
-{
-  fputs ("__exp2 not implemented\n", stderr);
-  __set_errno (ENOSYS);
-  return 0.0;
-}
-weak_alias (__exp2, exp2)
-
-stub_warning (exp2)
-#include <stub-tag.h>
diff --git a/sysdeps/generic/s_exp2f.c b/sysdeps/generic/s_exp2f.c
deleted file mode 100644
index 7928a4ce3d..0000000000
--- a/sysdeps/generic/s_exp2f.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <math.h>
-#include <stdio.h>
-#include <errno.h>
-
-float
-__exp2f (float x)
-{
-  fputs ("__exp2f not implemented\n", stderr);
-  __set_errno (ENOSYS);
-  return 0.0;
-}
-weak_alias (__exp2f, exp2f)
-
-stub_warning (exp2f)
-#include <stub-tag.h>
diff --git a/sysdeps/generic/stdint.h b/sysdeps/generic/stdint.h
new file mode 100644
index 0000000000..9ef0e8526a
--- /dev/null
+++ b/sysdeps/generic/stdint.h
@@ -0,0 +1 @@
+#error "This file must be written based on the data type sizes of the target"
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index 34c2be4271..0476c15c00 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -1,5 +1,5 @@
 /* System-specific socket constants and types.  Linux version.
-   Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
+   Copyright (C) 1991, 92, 94, 95, 96, 97, 98 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
@@ -70,7 +70,7 @@ enum __socket_type
 #define	PF_DECnet	12	/* Reserved for DECnet project  */
 #define	PF_NETBEUI	13	/* Reserved for 802.2LLC project*/
 #define	PF_SECURITY	14	/* Security callback pseudo AF */
-#define	pseudo_PF_KEY	15	/* PF_KEY key management API */
+#define	PF_KEY		15	/* PF_KEY key management API */
 #define	PF_NETLINK	16
 #define	PF_ROUTE	PF_NETLINK /* Alias to emulate 4.4BSD */
 #define	PF_PACKET	17	/* Packet family                */
@@ -94,7 +94,7 @@ enum __socket_type
 #define	AF_DECnet	PF_DECnet
 #define	AF_NETBEUI	PF_NETBEUI
 #define	AF_SECURITY	PF_SECURITY
-#define	AF_KEY		pseudo_PF_KEY
+#define	pseudo_AF_KEY	PF_KEY
 #define	AF_NETLINK	PF_NETLINK
 #define	AF_ROUTE	PF_ROUTE
 #define	AF_PACKET	PF_PACKET
diff --git a/sysdeps/unix/sysv/linux/errlist.c b/sysdeps/unix/sysv/linux/errlist.c
index 7349d67c62..af28a45954 100644
--- a/sysdeps/unix/sysv/linux/errlist.c
+++ b/sysdeps/unix/sysv/linux/errlist.c
@@ -45,11 +45,7 @@ symbol_version (__old_sys_errlist, _sys_errlist, GLIBC_2.0);
 symbol_version (_old_sys_errlist, sys_errlist, GLIBC_2.0);
 
 strong_alias (__new_sys_nerr, _new_sys_nerr)
-#if 0
 default_symbol_version (__new_sys_nerr, _sys_nerr, GLIBC_2.1);
-#else
-strong_alias (__new_sys_nerr, _sys_nerr);
-#endif
 default_symbol_version (_new_sys_nerr, sys_nerr, GLIBC_2.1);
 strong_alias (__new_sys_errlist, _new_sys_errlist)
 default_symbol_version (__new_sys_errlist, _sys_errlist, GLIBC_2.1);
diff --git a/sysdeps/unix/sysv/linux/getresgid.c b/sysdeps/unix/sysv/linux/getresgid.c
index 2fe461a787..4c326d5ba9 100644
--- a/sysdeps/unix/sysv/linux/getresgid.c
+++ b/sysdeps/unix/sysv/linux/getresgid.c
@@ -21,6 +21,9 @@
 
 #include <linux/posix_types.h>
 
+#include <sys/syscall.h>
+#ifdef __NR_getresgid
+
 extern int __syscall_getresgid (__kernel_gid_t *rgid, __kernel_gid_t *egid,
 				__kernel_gid_t *sgid);
 
@@ -37,3 +40,6 @@ getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid)
   *sgid = (gid_t) k_sgid;
   return 0;
 }
+#else
+# include <sysdeps/generic/getresgid.c>
+#endif
diff --git a/sysdeps/unix/sysv/linux/getresuid.c b/sysdeps/unix/sysv/linux/getresuid.c
index 89b8fa7cfe..6b6bc37290 100644
--- a/sysdeps/unix/sysv/linux/getresuid.c
+++ b/sysdeps/unix/sysv/linux/getresuid.c
@@ -21,6 +21,9 @@
 
 #include <linux/posix_types.h>
 
+#include <sys/syscall.h>
+#ifdef __NR_getresuid
+
 extern int __syscall_getresuid (__kernel_uid_t *ruid, __kernel_uid_t *euid,
 				__kernel_uid_t *suid);
 
@@ -37,3 +40,6 @@ getresuid (uid_t *ruid, uid_t *euid, uid_t *suid)
   *suid = (uid_t) k_suid;
   return 0;
 }
+#else
+# include <sysdeps/generic/getresuid.c>
+#endif
diff --git a/sysdeps/unix/sysv/linux/poll.c b/sysdeps/unix/sysv/linux/poll.c
index f6e71b79b6..e37df4cb9e 100644
--- a/sysdeps/unix/sysv/linux/poll.c
+++ b/sysdeps/unix/sysv/linux/poll.c
@@ -1,5 +1,5 @@
 /* Poll system call, with emulation if it is not available.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,6 +20,9 @@
 #include <errno.h>
 #include <sys/poll.h>
 
+#include <sys/syscall.h>
+#ifdef __NR_poll
+
 extern int __syscall_poll __P ((struct pollfd *fds, unsigned int nfds,
 				int timeout));
 weak_extern (__syscall_poll)
@@ -58,6 +61,7 @@ poll (fds, nfds, timeout)
 
 
 /* Get the emulation code.  */
-#define poll(fds, nfds, timeout) \
+# define poll(fds, nfds, timeout) \
   static internal_function __emulate_poll (fds, nfds, timeout)
+#endif
 #include <sysdeps/unix/bsd/poll.c>
diff --git a/sysdeps/wordsize-32/inttypes.h b/sysdeps/wordsize-32/inttypes.h
index 9200b8c2b8..188f4def4a 100644
--- a/sysdeps/wordsize-32/inttypes.h
+++ b/sysdeps/wordsize-32/inttypes.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -17,369 +17,176 @@
    Boston, MA 02111-1307, USA.  */
 
 /*
- *	ISO C 9X: 7.4 Integral types	<inttypes.h>
+ *	ISO C 9X: 7.5 Format conversion of integer types	<inttypes.h>
  */
 
 #ifndef _INTTYPES_H
-
 #define _INTTYPES_H	1
-#include <features.h>
-
-#define __need_wchar_t
-#include <stddef.h>
-
-/* Exact integral types.  */
-
-/* Signed.  */
-
-/* There is some amount of overlap with <sys/types.h> as known by inet code */
-#ifndef __int8_t_defined
-# define __int8_t_defined
-typedef signed char    int8_t;
-typedef short int     int16_t;
-typedef int           int32_t;
-typedef long long int int64_t;
-#endif
-
-/* Unsigned.  */
-typedef unsigned char           uint8_t;
-typedef unsigned short int     uint16_t;
-typedef unsigned int           uint32_t;
-typedef unsigned long long int uint64_t;
-
-
-/* Largest integral types.  */
-typedef long long int           intmax_t;
-typedef unsigned long long int uintmax_t;
-
-
-/* Types for `void *' pointers.  */
-typedef int           intptr_t;
-typedef unsigned int uintptr_t;
-
-
-/* Efficient types.  */
-typedef int           intfast_t;
-typedef unsigned int uintfast_t;
-
-
-/* Small types.  */
-
-/* Signed.  */
-typedef signed char    int_least8_t;
-typedef short int     int_least16_t;
-typedef int           int_least32_t;
-typedef long long int int_least64_t;
-
-/* Unsigned.  */
-typedef unsigned char           uint_least8_t;
-typedef unsigned short int     uint_least16_t;
-typedef unsigned int           uint_least32_t;
-typedef unsigned long long int uint_least64_t;
-
-
-/* Fast types.  */
-
-/* Signed.  */
-typedef signed char    int_fast8_t;
-typedef int           int_fast16_t;
-typedef int           int_fast32_t;
-typedef long long int int_fast64_t;
-
-/* Unsigned.  */
-typedef unsigned char           uint_fast8_t;
-typedef unsigned int           uint_fast16_t;
-typedef unsigned int           uint_fast32_t;
-typedef unsigned long long int uint_fast64_t;
-
-
-/* Limits of integral types.  */
-
-/* Minimum of signed integral types.  */
-#define INT8_MIN		(-128)
-#define INT16_MIN		(-32767-1)
-#define INT32_MIN		(-2147483647-1)
-#define INT64_MIN		(-9223372036854775807LL-1)
-/* Maximum of signed integral types.  */
-#define INT8_MAX		(127)
-#define INT16_MAX		(32767)
-#define INT32_MAX		(2147483647)
-#define INT64_MAX		(9223372036854775807LL)
-
-/* Maximum of unsigned integral types.  */
-#define UINT8_MAX		(255U)
-#define UINT16_MAX		(65535U)
-#define UINT32_MAX		(4294967295U)
-#define UINT64_MAX		(18446744073709551615uLL)
-
-
-/* Minimum of signed integral types having a minimum size.  */
-#define INT_LEAST8_MIN		(-128)
-#define INT_LEAST16_MIN		(-32767-1)
-#define INT_LEAST32_MIN		(-2147483647-1)
-#define INT_LEAST64_MIN		(-9223372036854775807LL-1)
-/* Maximum of signed integral types having a minimum size.  */
-#define INT_LEAST8_MAX		(127)
-#define INT_LEAST16_MAX		(32767)
-#define INT_LEAST32_MAX		(2147483647)
-#define INT_LEAST64_MAX		(9223372036854775807LL)
 
-/* Maximum of unsigned integral types having a minimum size.  */
-#define UINT_LEAST8_MAX		(255U)
-#define UINT_LEAST16_MAX	(65535U)
-#define UINT_LEAST32_MAX	(4294967295U)
-#define UINT_LEAST64_MAX	(18446744073709551615uLL)
-
-
-/* Minimum of fast signed integral types having a minimum size.  */
-#define INT_FAST8_MIN		(-128)
-#define INT_FAST16_MIN		(-2147483647-1)
-#define INT_FAST32_MIN		(-2147483647-1)
-#define INT_FAST64_MIN		(-9223372036854775807LL-1)
-/* Maximum of fast signed integral types having a minimum size.  */
-#define INT_FAST8_MAX		(127)
-#define INT_FAST16_MAX		(2147483647)
-#define INT_FAST32_MAX		(2147483647)
-#define INT_FAST64_MAX		(9223372036854775807LL)
-
-/* Maximum of fast unsigned integral types having a minimum size.  */
-#define UINT_FAST8_MAX		(255U)
-#define UINT_FAST16_MAX		(4294967295U)
-#define UINT_FAST32_MAX		(4294967295U)
-#define UINT_FAST64_MAX		(18446744073709551615uLL)
-
-
-/* Minimum for most efficient signed integral types.  */
-#define INTFAST_MIN		(-2147483647-1)
-/* Maximum for most efficient signed integral types.  */
-#define INTFAST_MAX		(2147483647)
-
-/* Maximum for most efficient unsigned integral types.  */
-#define UINTFAST_MAX		(4294967295U)
-
-
-/* Minimum for largest signed integral type.  */
-#define INTMAX_MIN		(-9223372036854775807LL-1)
-/* Maximum for largest signed integral type.  */
-#define INTMAX_MAX		(9223372036854775807LL)
-
-/* Maximum for largest unsigned integral type.  */
-#define UINTMAX_MAX		(18446744073709551615uLL)
-
-
-/* Values to test for integral types holding `void *' pointer.  */
-#define INTPTR_MAX		(2147483647)
-#define UINTPTR_MAX		(4294967295U)
+#include <features.h>
+/* Get the type definitions.  */
+#include <stdint.h>
 
 
-/* Signed.  */
-#define INT8_C(c)	((int8_t) c)
-#define INT16_C(c)	((int16_t) c)
-#define INT32_C(c)	((int32_t) c)
-#define INT64_C(c)	((int64_t) __CONCAT (c,ll))
-
-/* Unsigned.  */
-#define UINT8_C(c)	((uint8_t) __CONCAT (c,u))
-#define UINT16_C(c)	((uint16_t) __CONCAT (c,u))
-#define UINT32_C(c)	((uint32_t) __CONCAT (c,u))
-#define UINT64_C(c)	((uint64_t) __CONCAT (c,ull))
-
-/* Maximal type.  */
-#define INTMAX_C(c)	((intmax_t) __CONCAT (c,ll))
-#define UINTMAX_C(c)	((uintmax_t) __CONCAT (c,ull))
-
+/* The ISO C 9X standard specifies that these macros must only be
+   defined if explicitly requested.  */
+#if !defined __cplusplus || defined __STDC_FORMAT_MACROS
 
 /* Macros for printing format specifiers.  */
 
 /* Decimal notation.  */
-#define PRId8		"d"
-#define PRId16		"d"
-#define PRId32		"d"
-#define PRId64		"lld"
+# define PRId8		"d"
+# define PRId16		"d"
+# define PRId32		"d"
+# define PRId64		"lld"
 
-#define PRIdLEAST8	"d"
-#define PRIdLEAST16	"d"
-#define PRIdLEAST32	"d"
-#define PRIdLEAST64	"lld"
+# define PRIdLEAST8	"d"
+# define PRIdLEAST16	"d"
+# define PRIdLEAST32	"d"
+# define PRIdLEAST64	"lld"
 
-#define PRIdFAST8	"d"
-#define PRIdFAST16	"d"
-#define PRIdFAST32	"d"
-#define PRIdFAST64	"lld"
+# define PRIdFAST8	"d"
+# define PRIdFAST16	"d"
+# define PRIdFAST32	"d"
+# define PRIdFAST64	"lld"
 
 
-#define PRIi8		"i"
-#define PRIi16		"i"
-#define PRIi32		"i"
-#define PRIi64		"lli"
+# define PRIi8		"i"
+# define PRIi16		"i"
+# define PRIi32		"i"
+# define PRIi64		"lli"
 
-#define PRIiLEAST8	"i"
-#define PRIiLEAST16	"i"
-#define PRIiLEAST32	"i"
-#define PRIiLEAST64	"lli"
+# define PRIiLEAST8	"i"
+# define PRIiLEAST16	"i"
+# define PRIiLEAST32	"i"
+# define PRIiLEAST64	"lli"
 
-#define PRIiFAST8	"i"
-#define PRIiFAST16	"i"
-#define PRIiFAST32	"i"
-#define PRIiFAST64	"lli"
+# define PRIiFAST8	"i"
+# define PRIiFAST16	"i"
+# define PRIiFAST32	"i"
+# define PRIiFAST64	"lli"
 
 /* Octal notation.  */
-#define PRIo8		"o"
-#define PRIo16		"o"
-#define PRIo32		"o"
-#define PRIo64		"llo"
+# define PRIo8		"o"
+# define PRIo16		"o"
+# define PRIo32		"o"
+# define PRIo64		"llo"
 
-#define PRIoLEAST8	"o"
-#define PRIoLEAST16	"o"
-#define PRIoLEAST32	"o"
-#define PRIoLEAST64	"llo"
+# define PRIoLEAST8	"o"
+# define PRIoLEAST16	"o"
+# define PRIoLEAST32	"o"
+# define PRIoLEAST64	"llo"
 
-#define PRIoFAST8	"o"
-#define PRIoFAST16	"o"
-#define PRIoFAST32	"o"
-#define PRIoFAST64	"llo"
+# define PRIoFAST8	"o"
+# define PRIoFAST16	"o"
+# define PRIoFAST32	"o"
+# define PRIoFAST64	"llo"
 
 /* lowercase hexadecimal notation.  */
-#define PRIx8		"x"
-#define PRIx16		"x"
-#define PRIx32		"x"
-#define PRIx64		"llx"
+# define PRIx8		"x"
+# define PRIx16		"x"
+# define PRIx32		"x"
+# define PRIx64		"llx"
 
-#define PRIxLEAST8	"x"
-#define PRIxLEAST16	"x"
-#define PRIxLEAST32	"x"
-#define PRIxLEAST64	"llx"
+# define PRIxLEAST8	"x"
+# define PRIxLEAST16	"x"
+# define PRIxLEAST32	"x"
+# define PRIxLEAST64	"llx"
 
-#define PRIxFAST8	"x"
-#define PRIxFAST16	"x"
-#define PRIxFAST32	"x"
-#define PRIxFAST64	"llx"
+# define PRIxFAST8	"x"
+# define PRIxFAST16	"x"
+# define PRIxFAST32	"x"
+# define PRIxFAST64	"llx"
 
 /* UPPERCASE hexadecimal notation.  */
-#define PRIX8		"X"
-#define PRIX16		"X"
-#define PRIX32		"X"
-#define PRIX64		"llX"
+# define PRIX8		"X"
+# define PRIX16		"X"
+# define PRIX32		"X"
+# define PRIX64		"llX"
 
-#define PRIXLEAST8	"X"
-#define PRIXLEAST16	"X"
-#define PRIXLEAST32	"X"
-#define PRIXLEAST64	"llX"
+# define PRIXLEAST8	"X"
+# define PRIXLEAST16	"X"
+# define PRIXLEAST32	"X"
+# define PRIXLEAST64	"llX"
 
-#define PRIXFAST8	"X"
-#define PRIXFAST16	"X"
-#define PRIXFAST32	"X"
-#define PRIXFAST64	"llX"
+# define PRIXFAST8	"X"
+# define PRIXFAST16	"X"
+# define PRIXFAST32	"X"
+# define PRIXFAST64	"llX"
 
 
 /* Unsigned integers.  */
-#define PRIu8		"u"
-#define PRIu16		"u"
-#define PRIu32		"u"
-#define PRIu64		"llu"
+# define PRIu8		"u"
+# define PRIu16		"u"
+# define PRIu32		"u"
+# define PRIu64		"llu"
 
-#define PRIuLEAST8	"u"
-#define PRIuLEAST16	"u"
-#define PRIuLEAST32	"u"
-#define PRIuLEAST64	"llu"
+# define PRIuLEAST8	"u"
+# define PRIuLEAST16	"u"
+# define PRIuLEAST32	"u"
+# define PRIuLEAST64	"llu"
 
-#define PRIuFAST8	"u"
-#define PRIuFAST16	"u"
-#define PRIuFAST32	"u"
-#define PRIuFAST64	"llu"
+# define PRIuFAST8	"u"
+# define PRIuFAST16	"u"
+# define PRIuFAST32	"u"
+# define PRIuFAST64	"llu"
 
 
 /* Macros for printing `intmax_t' and `uintmax_t'.  */
-#define PRIdMAX		"lld"
-#define PRIoMAX		"llo"
-#define PRIxMAX		"llx"
-#define PRIuMAX		"llu"
-
-
-/* Macros for printing `intfast_t' and `uintfast_t'.  */
-#define PRIdFAST	"d"
-#define PRIoFAST	"o"
-#define PRIxFAST	"x"
-#define PRIuFAST	"u"
+# define PRIdMAX	"lld"
+# define PRIoMAX	"llo"
+# define PRIxMAX	"llx"
+# define PRIuMAX	"llu"
 
 
 /* Macros for printing `intptr_t' and `uintptr_t'.  */
-#define PRIdPTR		"d"
-#define PRIoPTR		"o"
-#define PRIxPTR		"x"
-#define PRIuPTR		"u"
+# define PRIdPTR	"d"
+# define PRIoPTR	"o"
+# define PRIxPTR	"x"
+# define PRIuPTR	"u"
 
 
-/* Macros for printing format specifiers.  */
+/* Macros for scanning format specifiers.  */
 
 /* Decimal notation.  */
-#define SCNd8		"hhd"
-#define SCNd16		"hd"
-#define SCNd32		"d"
-#define SCNd64		"lld"
+# define SCNd8		"hhd"
+# define SCNd16		"hd"
+# define SCNd32		"d"
+# define SCNd64		"lld"
 
-#define SCNi8		"hhi"
-#define SCNi16		"hi"
-#define SCNi32		"i"
-#define SCNi64		"lli"
+# define SCNi8		"hhi"
+# define SCNi16		"hi"
+# define SCNi32		"i"
+# define SCNi64		"lli"
 
-#define SCNu8		"hhu"
-#define SCNu16		"hu"
-#define SCNu32		"u"
-#define SCNu64		"llu"
+# define SCNu8		"hhu"
+# define SCNu16		"hu"
+# define SCNu32		"u"
+# define SCNu64		"llu"
 
 /* Octal notation.  */
-#define SCNo8		"hho"
-#define SCNo16		"ho"
-#define SCNo32		"o"
-#define SCNo64		"llo"
+# define SCNo8		"hho"
+# define SCNo16		"ho"
+# define SCNo32		"o"
+# define SCNo64		"llo"
 
 /* Hexadecimal notation.  */
-#define SCNx8		"hhx"
-#define SCNx16		"hx"
-#define SCNx32		"x"
-#define SCNx64		"llx"
-
+# define SCNx8		"hhx"
+# define SCNx16		"hx"
+# define SCNx32		"x"
+# define SCNx64		"llx"
 
-/* Macros for scaning `intfast_t' and `uintfast_t'.  */
-#define SCNdFAST	"d"
-#define SCNiFAST	"i"
-#define SCNoFAST	"o"
-#define SCNxFAST	"x"
 
 /* Macros for scaning `intptr_t' and `uintptr_t'.  */
-#define SCNdPTR		"d"
-#define SCNiPTR		"i"
-#define SCNoPTR		"o"
-#define SCNxPTR		"x"
-
-
-/* Limits of other integer types.  */
+# define SCNdPTR	"d"
+# define SCNiPTR	"i"
+# define SCNoPTR	"o"
+# define SCNxPTR	"x"
 
-/* Limits of `ptrdiff_t' type.  */
-#define PTRDIFF_MIN	(-2147483647-1)
-#define PTRDIFF_MAX	(2147483647)
+#endif	/* C++ && format macros */
 
-/* Limits of `sig_atomic_t'.  */
-#define SIG_ATOMIC_MIN	(-2147483647-1)
-#define SIG_ATOMIC_MAX	(2147483647)
 
-/* Limit of `size_t' type.  */
-#define SIZE_MAX	(4294967295U)
-
-/* Limits of `wchar_t'.  */
-#ifndef WCHAR_MIN
-/* These constants might also be defined in <wchar.h>.  */
-# define WCHAR_MIN	(-2147483647-1)
-# define WCHAR_MAX	(2147483647)
-#endif
-
-/* Limits of `wint_t'.  */
-#define WINT_MIN	(0)
-#define WINT_MAX	(4294967295U)
-
-
-/* Macros for string conversion.  */
+__BEGIN_DECLS
 
 /* Like `strtol' but convert to `intmax_t'.  */
 extern intmax_t strtoimax __P ((__const char *__restrict __nptr,
@@ -462,4 +269,6 @@ wcstoumax (__const wchar_t *__restrict nptr, wchar_t **__restrict endptr,
 }
 #endif	/* GCC and Optimization.  */
 
+__END_DECLS
+
 #endif /* inttypes.h */
diff --git a/sysdeps/wordsize-32/stdint.h b/sysdeps/wordsize-32/stdint.h
new file mode 100644
index 0000000000..c3a9e3027d
--- /dev/null
+++ b/sysdeps/wordsize-32/stdint.h
@@ -0,0 +1,214 @@
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/*
+ *	ISO C 9X: 7.4 Integer types	<stdint.h>
+ */
+
+#ifndef _STDINT_H
+#define _STDINT_H	1
+
+#include <features.h>
+#define __need_wchar_t
+#include <stddef.h>
+
+/* Exact integral types.  */
+
+/* Signed.  */
+
+/* There is some amount of overlap with <sys/types.h> as known by inet code */
+#ifndef __int8_t_defined
+# define __int8_t_defined
+typedef signed char    int8_t;
+typedef short int     int16_t;
+typedef int           int32_t;
+typedef long long int int64_t;
+#endif
+
+/* Unsigned.  */
+typedef unsigned char           uint8_t;
+typedef unsigned short int     uint16_t;
+typedef unsigned int           uint32_t;
+typedef unsigned long long int uint64_t;
+
+
+/* Small types.  */
+
+/* Signed.  */
+typedef signed char    int_least8_t;
+typedef short int     int_least16_t;
+typedef int           int_least32_t;
+typedef long long int int_least64_t;
+
+/* Unsigned.  */
+typedef unsigned char           uint_least8_t;
+typedef unsigned short int     uint_least16_t;
+typedef unsigned int           uint_least32_t;
+typedef unsigned long long int uint_least64_t;
+
+
+/* Fast types.  */
+
+/* Signed.  */
+typedef signed char    int_fast8_t;
+typedef int           int_fast16_t;
+typedef int           int_fast32_t;
+typedef long long int int_fast64_t;
+
+/* Unsigned.  */
+typedef unsigned char           uint_fast8_t;
+typedef unsigned int           uint_fast16_t;
+typedef unsigned int           uint_fast32_t;
+typedef unsigned long long int uint_fast64_t;
+
+
+/* Types for `void *' pointers.  */
+typedef int           intptr_t;
+typedef unsigned int uintptr_t;
+
+
+/* Largest integral types.  */
+typedef long long int           intmax_t;
+typedef unsigned long long int uintmax_t;
+
+
+/* The ISO C 9X standard specifies that these macros must only be
+   defined if explicitly requested.  */
+#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* Limits of integral types.  */
+
+/* Minimum of signed integral types.  */
+# define INT8_MIN		(-128)
+# define INT16_MIN		(-32767-1)
+# define INT32_MIN		(-2147483647-1)
+# define INT64_MIN		(-9223372036854775807LL-1)
+/* Maximum of signed integral types.  */
+# define INT8_MAX		(127)
+# define INT16_MAX		(32767)
+# define INT32_MAX		(2147483647)
+# define INT64_MAX		(9223372036854775807LL)
+
+/* Maximum of unsigned integral types.  */
+# define UINT8_MAX		(255U)
+# define UINT16_MAX		(65535U)
+# define UINT32_MAX		(4294967295U)
+# define UINT64_MAX		(18446744073709551615uLL)
+
+
+/* Minimum of signed integral types having a minimum size.  */
+# define INT_LEAST8_MIN		(-128)
+# define INT_LEAST16_MIN	(-32767-1)
+# define INT_LEAST32_MIN	(-2147483647-1)
+# define INT_LEAST64_MIN	(-9223372036854775807LL-1)
+/* Maximum of signed integral types having a minimum size.  */
+# define INT_LEAST8_MAX		(127)
+# define INT_LEAST16_MAX	(32767)
+# define INT_LEAST32_MAX	(2147483647)
+# define INT_LEAST64_MAX	(9223372036854775807LL)
+
+/* Maximum of unsigned integral types having a minimum size.  */
+# define UINT_LEAST8_MAX	(255U)
+# define UINT_LEAST16_MAX	(65535U)
+# define UINT_LEAST32_MAX	(4294967295U)
+# define UINT_LEAST64_MAX	(18446744073709551615uLL)
+
+
+/* Minimum of fast signed integral types having a minimum size.  */
+# define INT_FAST8_MIN		(-128)
+# define INT_FAST16_MIN		(-2147483647-1)
+# define INT_FAST32_MIN		(-2147483647-1)
+# define INT_FAST64_MIN		(-9223372036854775807LL-1)
+/* Maximum of fast signed integral types having a minimum size.  */
+# define INT_FAST8_MAX		(127)
+# define INT_FAST16_MAX		(2147483647)
+# define INT_FAST32_MAX		(2147483647)
+# define INT_FAST64_MAX		(9223372036854775807LL)
+
+/* Maximum of fast unsigned integral types having a minimum size.  */
+# define UINT_FAST8_MAX		(255U)
+# define UINT_FAST16_MAX	(4294967295U)
+# define UINT_FAST32_MAX	(4294967295U)
+# define UINT_FAST64_MAX	(18446744073709551615uLL)
+
+
+/* Values to test for integral types holding `void *' pointer.  */
+# define INTPTR_MIN		(-2147483647-1)
+# define INTPTR_MAX		(2147483647)
+# define UINTPTR_MAX		(4294967295U)
+
+
+/* Minimum for largest signed integral type.  */
+# define INTMAX_MIN		(-9223372036854775807LL-1)
+/* Maximum for largest signed integral type.  */
+# define INTMAX_MAX		(9223372036854775807LL)
+
+/* Maximum for largest unsigned integral type.  */
+# define UINTMAX_MAX		(18446744073709551615uLL)
+
+
+/* Limits of other integer types.  */
+
+/* Limits of `ptrdiff_t' type.  */
+# define PTRDIFF_MIN	(-2147483647-1)
+# define PTRDIFF_MAX	(2147483647)
+
+/* Limits of `sig_atomic_t'.  */
+# define SIG_ATOMIC_MIN	(-2147483647-1)
+# define SIG_ATOMIC_MAX	(2147483647)
+
+/* Limit of `size_t' type.  */
+# define SIZE_MAX	(4294967295U)
+
+/* Limits of `wchar_t'.  */
+# ifndef WCHAR_MIN
+/* These constants might also be defined in <wchar.h>.  */
+#  define WCHAR_MIN	(-2147483647-1)
+#  define WCHAR_MAX	(2147483647)
+# endif
+
+/* Limits of `wint_t'.  */
+# define WINT_MIN	(0)
+# define WINT_MAX	(4294967295U)
+
+#endif	/* C++ && limit macros */
+
+
+/* The ISO C 9X standard specifies that these macros must only be
+   defined if explicitly requested.  */
+#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* Signed.  */
+# define INT8_C(c)	((int8_t) c)
+# define INT16_C(c)	((int16_t) c)
+# define INT32_C(c)	((int32_t) c)
+# define INT64_C(c)	((int64_t) __CONCAT (c,ll))
+
+/* Unsigned.  */
+# define UINT8_C(c)	((uint8_t) __CONCAT (c,u))
+# define UINT16_C(c)	((uint16_t) __CONCAT (c,u))
+# define UINT32_C(c)	((uint32_t) __CONCAT (c,u))
+# define UINT64_C(c)	((uint64_t) __CONCAT (c,ull))
+
+/* Maximal type.  */
+# define INTMAX_C(c)	((intmax_t) __CONCAT (c,ll))
+# define UINTMAX_C(c)	((uintmax_t) __CONCAT (c,ull))
+
+#endif	/* C++ && constant macros */
+
+#endif /* stdint.h */
diff --git a/sysdeps/wordsize-64/inttypes.h b/sysdeps/wordsize-64/inttypes.h
index 8ec8095620..5e497dbfae 100644
--- a/sysdeps/wordsize-64/inttypes.h
+++ b/sysdeps/wordsize-64/inttypes.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -21,365 +21,178 @@
  */
 
 #ifndef _INTTYPES_H
-
 #define _INTTYPES_H	1
-#include <features.h>
-
-#define __need_wchar_t
-#include <stddef.h>
-
-/* Exact integral types.  */
-
-/* Signed.  */
-
-/* There is some amount of overlap with <sys/types.h> as known by inet code */
-#ifndef __int8_t_defined
-# define __int8_t_defined
-typedef signed char int8_t;
-typedef short int  int16_t;
-typedef int        int32_t;
-typedef long int   int64_t;
-#endif
-
-/* Unsigned.  */
-typedef unsigned char       uint8_t;
-typedef unsigned short int uint16_t;
-typedef unsigned int       uint32_t;
-typedef unsigned long int  uint64_t;
-
-
-/* Largest integral types.  */
-typedef long int	   intmax_t;
-typedef unsigned long int uintmax_t;
-
-
-/* Types for `void *' pointers.  */
-typedef long int           intptr_t;
-typedef unsigned long int uintptr_t;
-
-
-/* Efficient types.  */
-typedef long int           intfast_t;
-typedef unsigned long int uintfast_t;
-
-
-/* Small types.  */
-
-/* Signed.  */
-typedef signed char int_least8_t;
-typedef short int  int_least16_t;
-typedef int        int_least32_t;
-typedef long int   int_least64_t;
-
-/* Unsigned.  */
-typedef unsigned char       uint_least8_t;
-typedef unsigned short int uint_least16_t;
-typedef unsigned int       uint_least32_t;
-typedef unsigned long int  uint_least64_t;
-
-
-/* Fast types.  */
-
-/* Signed.  */
-typedef signed char int_fast8_t;
-typedef int        int_fast16_t;
-typedef int        int_fast32_t;
-typedef long int   int_fast64_t;
-
-/* Unsigned.  */
-typedef unsigned char      uint_fast8_t;
-typedef unsigned int      uint_fast16_t;
-typedef unsigned int      uint_fast32_t;
-typedef unsigned long int uint_fast64_t;
-
-
-/* Limits of integral types.  */
-
-/* Minimum of signed integral types.  */
-#define INT8_MIN		(-128)
-#define INT16_MIN		(-32767-1)
-#define INT32_MIN		(-2147483647-1)
-#define INT64_MIN		(-9223372036854775807L-1)
-/* Maximum of signed integral types.  */
-#define INT8_MAX		(127)
-#define INT16_MAX		(32767)
-#define INT32_MAX		(2147483647)
-#define INT64_MAX		(9223372036854775807L)
-
-/* Maximum of unsigned integral types.  */
-#define UINT8_MAX		(255U)
-#define UINT16_MAX		(65535U)
-#define UINT32_MAX		(4294967295U)
-#define UINT64_MAX		(18446744073709551615uL)
-
 
-/* Minimum of signed integral types having a minimum size.  */
-#define INT_LEAST8_MIN		(-128)
-#define INT_LEAST16_MIN		(-32767-1)
-#define INT_LEAST32_MIN		(-2147483647-1)
-#define INT_LEAST64_MIN		(-9223372036854775807L-1)
-/* Maximum of signed integral types having a minimum size.  */
-#define INT_LEAST8_MAX		(127)
-#define INT_LEAST16_MAX		(32767)
-#define INT_LEAST32_MAX		(2147483647)
-#define INT_LEAST64_MAX		(9223372036854775807L)
-
-/* Maximum of unsigned integral types having a minimum size.  */
-#define UINT_LEAST8_MAX		(255U)
-#define UINT_LEAST16_MAX	(65535U)
-#define UINT_LEAST32_MAX	(4294967295U)
-#define UINT_LEAST64_MAX	(18446744073709551615uL)
-
-
-/* Minimum of fast signed integral types having a minimum size.  */
-#define INT_FAST8_MIN		(-128)
-#define INT_FAST16_MIN		(-2147483647-1)
-#define INT_FAST32_MIN		(-2147483647-1)
-#define INT_FAST64_MIN		(-9223372036854775807L-1)
-/* Maximum of fast signed integral types having a minimum size.  */
-#define INT_FAST8_MAX		(127)
-#define INT_FAST16_MAX		(2147483647)
-#define INT_FAST32_MAX		(2147483647)
-#define INT_FAST64_MAX		(9223372036854775807L)
-
-/* Maximum of fast unsigned integral types having a minimum size.  */
-#define UINT_FAST8_MAX		(255U)
-#define UINT_FAST16_MAX		(4294967295U)
-#define UINT_FAST32_MAX		(4294967295U)
-#define UINT_FAST64_MAX		(18446744073709551615uL)
-
-
-/* Minimum for most efficient signed integral types.  */
-#define INTFAST_MIN		(-9223372036854775807L-1)
-/* Maximum for most efficient signed integral types.  */
-#define INTFAST_MAX		(9223372036854775807L)
-
-/* Maximum for most efficient unsigned integral types.  */
-#define UINTFAST_MAX		(18446744073709551615uL)
-
-
-/* Minimum for largest signed integral type.  */
-#define INTMAX_MIN		(-9223372036854775807L-1)
-/* Maximum for largest signed integral type.  */
-#define INTMAX_MAX		(9223372036854775807L)
-
-/* Maximum for largest unsigned integral type.  */
-#define UINTMAX_MAX		(18446744073709551615uL)
-
-
-/* Values to test for integral types holding `void *' pointer.  */
-#define INTPTR_MAX		(9223372036854775807L)
-#define UINTPTR_MAX		(18446744073709551615uL)
+#include <features.h>
+/* Get the type definitions.  */
+#include <stdint.h>
 
 
-/* Signed.  */
-#define INT8_C(c)	((int8_t) c)
-#define INT16_C(c)	((int16_t) c)
-#define INT32_C(c)	((int32_t) c)
-#define INT64_C(c)	((int64_t) __CONCAT (c,l))
-
-/* Unsigned.  */
-#define UINT8_C(c)	((uint8_t) __CONCAT (c,u))
-#define UINT16_C(c)	((uint16_t) __CONCAT (c,u))
-#define UINT32_C(c)	((uint32_t) __CONCAT (c,u))
-#define UINT64_C(c)	((uint64_t) __CONCAT (c,ul))
-
-/* Maximal type.  */
-#define INTMAX_C(c)	((intmax_t) __CONCAT (c,l))
-#define UINTMAX_C(c)	((uintmax_t) __CONCAT (c,ul))
-
+/* The ISO C 9X standard specifies that these macros must only be
+   defined if explicitly requested.  */
+#if !defined __cplusplus || defined __STDC_FORMAT_MACROS
 
 /* Macros for printing format specifiers.  */
 
 /* Decimal notation.  */
-#define PRId8		"d"
-#define PRId16		"d"
-#define PRId32		"d"
-#define PRId64		"ld"
+# define PRId8		"d"
+# define PRId16		"d"
+# define PRId32		"d"
+# define PRId64		"ld"
 
-#define PRIdLEAST8	"d"
-#define PRIdLEAST16	"d"
-#define PRIdLEAST32	"d"
-#define PRIdLEAST64	"ld"
+# define PRIdLEAST8	"d"
+# define PRIdLEAST16	"d"
+# define PRIdLEAST32	"d"
+# define PRIdLEAST64	"ld"
 
-#define PRIdFAST8	"d"
-#define PRIdFAST16	"d"
-#define PRIdFAST32	"d"
-#define PRIdFAST64	"ld"
+# define PRIdFAST8	"d"
+# define PRIdFAST16	"d"
+# define PRIdFAST32	"d"
+# define PRIdFAST64	"ld"
 
 
-#define PRIi8		"i"
-#define PRIi16		"i"
-#define PRIi32		"i"
-#define PRIi64		"li"
+# define PRIi8		"i"
+# define PRIi16		"i"
+# define PRIi32		"i"
+# define PRIi64		"li"
 
-#define PRIiLEAST8	"i"
-#define PRIiLEAST16	"i"
-#define PRIiLEAST32	"i"
-#define PRIiLEAST64	"li"
+# define PRIiLEAST8	"i"
+# define PRIiLEAST16	"i"
+# define PRIiLEAST32	"i"
+# define PRIiLEAST64	"li"
 
-#define PRIiFAST8	"i"
-#define PRIiFAST16	"i"
-#define PRIiFAST32	"i"
-#define PRIiFAST64	"li"
+# define PRIiFAST8	"i"
+# define PRIiFAST16	"i"
+# define PRIiFAST32	"i"
+# define PRIiFAST64	"li"
 
 /* Octal notation.  */
-#define PRIo8		"o"
-#define PRIo16		"o"
-#define PRIo32		"o"
-#define PRIo64		"lo"
+# define PRIo8		"o"
+# define PRIo16		"o"
+# define PRIo32		"o"
+# define PRIo64		"lo"
 
-#define PRIoLEAST8	"o"
-#define PRIoLEAST16	"o"
-#define PRIoLEAST32	"o"
-#define PRIoLEAST64	"lo"
+# define PRIoLEAST8	"o"
+# define PRIoLEAST16	"o"
+# define PRIoLEAST32	"o"
+# define PRIoLEAST64	"lo"
 
-#define PRIoFAST8	"o"
-#define PRIoFAST16	"o"
-#define PRIoFAST32	"o"
-#define PRIoFAST64	"lo"
+# define PRIoFAST8	"o"
+# define PRIoFAST16	"o"
+# define PRIoFAST32	"o"
+# define PRIoFAST64	"lo"
 
 /* lowercase hexadecimal notation.  */
-#define PRIx8		"x"
-#define PRIx16		"x"
-#define PRIx32		"x"
-#define PRIx64		"lx"
+# define PRIx8		"x"
+# define PRIx16		"x"
+# define PRIx32		"x"
+# define PRIx64		"lx"
 
-#define PRIxLEAST8	"x"
-#define PRIxLEAST16	"x"
-#define PRIxLEAST32	"x"
-#define PRIxLEAST64	"lx"
+# define PRIxLEAST8	"x"
+# define PRIxLEAST16	"x"
+# define PRIxLEAST32	"x"
+# define PRIxLEAST64	"lx"
 
-#define PRIxFAST8	"x"
-#define PRIxFAST16	"x"
-#define PRIxFAST32	"x"
-#define PRIxFAST64	"lx"
+# define PRIxFAST8	"x"
+# define PRIxFAST16	"x"
+# define PRIxFAST32	"x"
+# define PRIxFAST64	"lx"
 
 /* UPPERCASE hexadecimal notation.  */
-#define PRIX8		"X"
-#define PRIX16		"X"
-#define PRIX32		"X"
-#define PRIX64		"lX"
+# define PRIX8		"X"
+# define PRIX16		"X"
+# define PRIX32		"X"
+# define PRIX64		"lX"
 
-#define PRIXLEAST8	"X"
-#define PRIXLEAST16	"X"
-#define PRIXLEAST32	"X"
-#define PRIXLEAST64	"lX"
+# define PRIXLEAST8	"X"
+# define PRIXLEAST16	"X"
+# define PRIXLEAST32	"X"
+# define PRIXLEAST64	"lX"
 
-#define PRIXFAST8	"X"
-#define PRIXFAST16	"X"
-#define PRIXFAST32	"X"
-#define PRIXFAST64	"lX"
+# define PRIXFAST8	"X"
+# define PRIXFAST16	"X"
+# define PRIXFAST32	"X"
+# define PRIXFAST64	"lX"
 
 
 /* Unsigned integers.  */
-#define PRIu8		"u"
-#define PRIu16		"u"
-#define PRIu32		"u"
-#define PRIu64		"lu"
+# define PRIu8		"u"
+# define PRIu16		"u"
+# define PRIu32		"u"
+# define PRIu64		"lu"
 
-#define PRIuLEAST8	"u"
-#define PRIuLEAST16	"u"
-#define PRIuLEAST32	"u"
-#define PRIuLEAST64	"lu"
+# define PRIuLEAST8	"u"
+# define PRIuLEAST16	"u"
+# define PRIuLEAST32	"u"
+# define PRIuLEAST64	"lu"
 
-#define PRIuFAST8	"u"
-#define PRIuFAST16	"u"
-#define PRIuFAST32	"u"
-#define PRIuFAST64	"lu"
+# define PRIuFAST8	"u"
+# define PRIuFAST16	"u"
+# define PRIuFAST32	"u"
+# define PRIuFAST64	"lu"
 
 
 /* Macros for printing `intmax_t' and `uintmax_t'.  */
-#define PRIdMAX		"ld"
-#define PRIoMAX		"lo"
-#define PRIxMAX		"lx"
-#define PRIuMAX		"lu"
-
-
-/* Macros for printing `intfast_t' and `uintfast_t'.  */
-#define PRIdFAST	"ld"
-#define PRIoFAST	"lo"
-#define PRIxFAST	"lx"
-#define PRIuFAST	"lu"
+# define PRIdMAX	"ld"
+# define PRIoMAX	"lo"
+# define PRIxMAX	"lx"
+# define PRIuMAX	"lu"
 
 
 /* Macros for printing `intptr_t' and `uintptr_t'.  */
-#define PRIdPTR		"ld"
-#define PRIoPTR		"lo"
-#define PRIxPTR		"lx"
-#define PRIuPTR		"lu"
+# define PRIdPTR	"ld"
+# define PRIoPTR	"lo"
+# define PRIxPTR	"lx"
+# define PRIuPTR	"lu"
 
 
 /* Macros for printing format specifiers.  */
 
 /* Decimal notation.  */
-#define SCNd8		"hhd"
-#define SCNd16		"hd"
-#define SCNd32		"d"
-#define SCNd64		"ld"
+# define SCNd8		"hhd"
+# define SCNd16		"hd"
+# define SCNd32		"d"
+# define SCNd64		"ld"
 
-#define SCNi8		"hhi"
-#define SCNi16		"hi"
-#define SCNi32		"i"
-#define SCNi64		"li"
+# define SCNi8		"hhi"
+# define SCNi16		"hi"
+# define SCNi32		"i"
+# define SCNi64		"li"
 
-#define SCNu8		"hhu"
-#define SCNu16		"hu"
-#define SCNu32		"u"
-#define SCNu64		"lu"
+# define SCNu8		"hhu"
+# define SCNu16		"hu"
+# define SCNu32		"u"
+# define SCNu64		"lu"
 
 /* Octal notation.  */
-#define SCNo8		"hho"
-#define SCNo16		"ho"
-#define SCNo32		"o"
-#define SCNo64		"lo"
+# define SCNo8		"hho"
+# define SCNo16		"ho"
+# define SCNo32		"o"
+# define SCNo64		"lo"
 
 /* Hexadecimal notation.  */
-#define SCNx8		"hhx"
-#define SCNx16		"hx"
-#define SCNx32		"x"
-#define SCNx64		"lx"
+# define SCNx8		"hhx"
+# define SCNx16		"hx"
+# define SCNx32		"x"
+# define SCNx64		"lx"
 
 
 /* Macros for scaning `intfast_t' and `uintfast_t'.  */
-#define SCNdFAST	"ld"
-#define SCNiFAST	"li"
-#define SCNoFAST	"lo"
-#define SCNxFAST	"lx"
+# define SCNdFAST	"ld"
+# define SCNiFAST	"li"
+# define SCNoFAST	"lo"
+# define SCNxFAST	"lx"
 
 /* Macros for scaning `intptr_t' and `uintptr_t'.  */
-#define SCNdPTR		"ld"
-#define SCNiPTR		"li"
-#define SCNoPTR		"lo"
-#define SCNxPTR		"lx"
-
-
-/* Limits of other integer types.  */
+# define SCNdPTR	"ld"
+# define SCNiPTR	"li"
+# define SCNoPTR	"lo"
+# define SCNxPTR	"lx"
 
-/* Limits of `ptrdiff_t' type.  */
-#define PTRDIFF_MIN	(-9223372036854775807L-1)
-#define PTRDIFF_MAX	(9223372036854775807L)
+#endif	/* C++ && format macros */
 
-/* Limits of `sig_atomic_t'.  */
-#define SIG_ATOMIC_MIN	(-2147483647-1)
-#define SIG_ATOMIC_MAX	(2147483647)
 
-/* Limit of `size_t' type.  */
-#define SIZE_MAX	(18446744073709551615uL)
-
-/* Limits of `wchar_t'.  */
-#ifndef WCHAR_MIN
-/* These constants might also be defined in <wchar.h>.  */
-# define WCHAR_MIN	(-2147483647-1)
-# define WCHAR_MAX	(2147483647)
-#endif
-
-/* Limits of `wint_t'.  */
-#define WINT_MIN	(0)
-#define WINT_MAX	(4294967295U)
-
-
-/* Macros for string conversion.  */
+__BEGIN_DECLS
 
 /* Like `strtol' but convert to `intmax_t'.  */
 extern intmax_t strtoimax __P ((__const char *__restrict __nptr,
@@ -458,4 +271,6 @@ wcstoumax (__const wchar_t *__restrict nptr, wchar_t **__restrict endptr,
 }
 #endif	/* GCC and Optimization.  */
 
+__END_DECLS
+
 #endif /* inttypes.h */
diff --git a/sysdeps/wordsize-64/stdint.h b/sysdeps/wordsize-64/stdint.h
new file mode 100644
index 0000000000..3e05aebe54
--- /dev/null
+++ b/sysdeps/wordsize-64/stdint.h
@@ -0,0 +1,214 @@
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/*
+ *	ISO C 9X: 7.4 Integer types	<stdint.h>
+ */
+
+#ifndef _STDINT_H
+#define _STDINT_H	1
+
+#include <features.h>
+#define __need_wchar_t
+#include <stddef.h>
+
+/* Exact integral types.  */
+
+/* Signed.  */
+
+/* There is some amount of overlap with <sys/types.h> as known by inet code */
+#ifndef __int8_t_defined
+# define __int8_t_defined
+typedef signed char int8_t;
+typedef short int  int16_t;
+typedef int        int32_t;
+typedef long int   int64_t;
+#endif
+
+/* Unsigned.  */
+typedef unsigned char       uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int       uint32_t;
+typedef unsigned long int  uint64_t;
+
+
+/* Small types.  */
+
+/* Signed.  */
+typedef signed char int_least8_t;
+typedef short int  int_least16_t;
+typedef int        int_least32_t;
+typedef long int   int_least64_t;
+
+/* Unsigned.  */
+typedef unsigned char       uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int       uint_least32_t;
+typedef unsigned long int  uint_least64_t;
+
+
+/* Fast types.  */
+
+/* Signed.  */
+typedef signed char int_fast8_t;
+typedef long int   int_fast16_t;
+typedef long int   int_fast32_t;
+typedef long int   int_fast64_t;
+
+/* Unsigned.  */
+typedef unsigned char      uint_fast8_t;
+typedef unsigned long int uint_fast16_t;
+typedef unsigned long int uint_fast32_t;
+typedef unsigned long int uint_fast64_t;
+
+
+/* Types for `void *' pointers.  */
+typedef int                intptr_t;
+typedef unsigned long int uintptr_t;
+
+
+/* Largest integral types.  */
+typedef long int           intmax_t;
+typedef unsigned long int uintmax_t;
+
+
+/* The ISO C 9X standard specifies that these macros must only be
+   defined if explicitly requested.  */
+#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* Limits of integral types.  */
+
+/* Minimum of signed integral types.  */
+# define INT8_MIN		(-128)
+# define INT16_MIN		(-32767-1)
+# define INT32_MIN		(-2147483647-1)
+# define INT64_MIN		(-9223372036854775807LL-1)
+/* Maximum of signed integral types.  */
+# define INT8_MAX		(127)
+# define INT16_MAX		(32767)
+# define INT32_MAX		(2147483647)
+# define INT64_MAX		(9223372036854775807LL)
+
+/* Maximum of unsigned integral types.  */
+# define UINT8_MAX		(255U)
+# define UINT16_MAX		(65535U)
+# define UINT32_MAX		(4294967295U)
+# define UINT64_MAX		(18446744073709551615uLL)
+
+
+/* Minimum of signed integral types having a minimum size.  */
+# define INT_LEAST8_MIN		(-128)
+# define INT_LEAST16_MIN	(-32767-1)
+# define INT_LEAST32_MIN	(-2147483647-1)
+# define INT_LEAST64_MIN	(-9223372036854775807LL-1)
+/* Maximum of signed integral types having a minimum size.  */
+# define INT_LEAST8_MAX		(127)
+# define INT_LEAST16_MAX	(32767)
+# define INT_LEAST32_MAX	(2147483647)
+# define INT_LEAST64_MAX	(9223372036854775807LL)
+
+/* Maximum of unsigned integral types having a minimum size.  */
+# define UINT_LEAST8_MAX	(255U)
+# define UINT_LEAST16_MAX	(65535U)
+# define UINT_LEAST32_MAX	(4294967295U)
+# define UINT_LEAST64_MAX	(18446744073709551615uLL)
+
+
+/* Minimum of fast signed integral types having a minimum size.  */
+# define INT_FAST8_MIN		(-128)
+# define INT_FAST16_MIN		(-9223372036854775807LL-1)
+# define INT_FAST32_MIN		(-9223372036854775807LL-1)
+# define INT_FAST64_MIN		(-9223372036854775807LL-1)
+/* Maximum of fast signed integral types having a minimum size.  */
+# define INT_FAST8_MAX		(127)
+# define INT_FAST16_MAX		(9223372036854775807LL)
+# define INT_FAST32_MAX		(9223372036854775807LL)
+# define INT_FAST64_MAX		(9223372036854775807LL)
+
+/* Maximum of fast unsigned integral types having a minimum size.  */
+# define UINT_FAST8_MAX		(255U)
+# define UINT_FAST16_MAX	(18446744073709551615uLL)
+# define UINT_FAST32_MAX	(18446744073709551615uLL)
+# define UINT_FAST64_MAX	(18446744073709551615uLL)
+
+
+/* Values to test for integral types holding `void *' pointer.  */
+# define INTPTR_MIN		(-9223372036854775807L-1)
+# define INTPTR_MAX		(9223372036854775807L
+# define UINTPTR_MAX		(18446744073709551615uL)
+
+
+/* Minimum for largest signed integral type.  */
+# define INTMAX_MIN		(-9223372036854775807LL-1)
+/* Maximum for largest signed integral type.  */
+# define INTMAX_MAX		(9223372036854775807LL)
+
+/* Maximum for largest unsigned integral type.  */
+# define UINTMAX_MAX		(18446744073709551615uLL)
+
+
+/* Limits of other integer types.  */
+
+/* Limits of `ptrdiff_t' type.  */
+# define PTRDIFF_MIN	(-9223372036854775807L-1)
+# define PTRDIFF_MAX	(9223372036854775807L)
+
+/* Limits of `sig_atomic_t'.  */
+# define SIG_ATOMIC_MIN	(-2147483647-1)
+# define SIG_ATOMIC_MAX	(2147483647)
+
+/* Limit of `size_t' type.  */
+# define SIZE_MAX	(18446744073709551615uL)
+
+/* Limits of `wchar_t'.  */
+# ifndef WCHAR_MIN
+/* These constants might also be defined in <wchar.h>.  */
+#  define WCHAR_MIN	(-2147483647-1)
+#  define WCHAR_MAX	(2147483647)
+# endif
+
+/* Limits of `wint_t'.  */
+# define WINT_MIN	(0)
+# define WINT_MAX	(4294967295U)
+
+#endif	/* C++ && limit macros */
+
+
+/* The ISO C 9X standard specifies that these macros must only be
+   defined if explicitly requested.  */
+#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* Signed.  */
+# define INT8_C(c)	((int8_t) c)
+# define INT16_C(c)	((int16_t) c)
+# define INT32_C(c)	((int32_t) c)
+# define INT64_C(c)	((int64_t) __CONCAT (c,l))
+
+/* Unsigned.  */
+# define UINT8_C(c)	((uint8_t) __CONCAT (c,u))
+# define UINT16_C(c)	((uint16_t) __CONCAT (c,u))
+# define UINT32_C(c)	((uint32_t) __CONCAT (c,u))
+# define UINT64_C(c)	((uint64_t) __CONCAT (c,ul))
+
+/* Maximal type.  */
+# define INTMAX_C(c)	((intmax_t) __CONCAT (c,l))
+# define UINTMAX_C(c)	((uintmax_t) __CONCAT (c,ul))
+
+#endif	/* C++ && constant macros */
+
+#endif /* stdint.h */
diff --git a/time/Makefile b/time/Makefile
index 87231d7770..d90dbce8d4 100644
--- a/time/Makefile
+++ b/time/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
+# Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -22,179 +22,14 @@
 subdir	:= time
 
 headers	:= time.h sys/time.h sys/timeb.h bits/time.h
-distribute := tzfile.h private.h scheck.c ialloc.c yearistype	\
-	      iso3166.tab zone.tab tzselect.ksh checktab.awk	\
-	      README
-extra-objs = scheck.o ialloc.o $(tzfiles:%=z.%)
 
-routines	:= offtime asctime clock ctime ctime_r difftime	\
-		   gmtime localtime mktime strftime time tzset	\
-		   tzfile gettimeofday settimeofday adjtime	\
-		   getitimer setitimer				\
-		   stime dysize timegm ftime			\
-		   strptime getdate strfxtime
+routines := offtime asctime clock ctime ctime_r difftime \
+	    gmtime localtime mktime strftime time	 \
+	    gettimeofday settimeofday adjtime tzset	 \
+	    tzfile getitimer setitimer			 \
+	    stime dysize timegm ftime			 \
+	    strptime getdate strfxtime
 
-others	:= ap zdump zic
-tests	:= test_time clocktest test-tz
-
-tzbases := africa antarctica asia australasia europe northamerica \
-	   southamerica etcetera factory systemv \
-	   solar87 solar88 solar89
-tzlinks := backward
-tzfiles := $(tzbases) $(tzlinks)
-# pacificnew doesn't compile; if it is to be used, it should be included in
-# northamerica.
-distribute += $(tzfiles) leapseconds pacificnew simplebackw
-
-install-sbin := zic zdump
-
-generated-dirs = testdata
-
-all: # Make this the default target; it will be defined in Rules.
-
-include ../Makeconfig	# Get objpfx defined so we can use it below.
-
-# z.* use this variable.
-define nl
-
-
-endef
-ifneq ($(no_deps),t)
--include $(addprefix $(objpfx)z.,$(tzfiles))
-endif
-
-# Make these absolute file names.
-installed-localtime-file := $(firstword $(filter /%,$(inst_localtime-file)) \
-					$(addprefix $(inst_zonedir)/, \
-						    $(localtime-file)))
-installed-posixrules-file := $(firstword $(filter /%,$(posixrules-file)) \
-					 $(addprefix $(inst_zonedir)/, \
-						     $(posixrules-file)))
-
-ifeq ($(cross-compiling),no)
-# Don't try to install the zoneinfo files since we can't run zic.
-install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \
-					      $(zonenames:%=posix/%) \
-					      $(zonenames:%=right/%)) \
-		 $(installed-localtime-file) $(installed-posixrules-file)
-endif
-
-ifeq ($(have-ksh),yes)
-install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab
-install-bin += tzselect
-generated += tzselect
-endif
+tests	:= test_time clocktest
 
 include ../Rules
-
-
-$(tzfiles:%=$(objpfx)z.%): $(objpfx)z.%: % Makefile
-# Kludge alert: we use an implicit rule (in what we are generating here)
-# because that is the only way to tell Make that the one command builds all
-# the files.
-# The extra kludge for the $(tzlinks) files is necessary since running zic
-# this file requires all other files to exist.  Blech!
-	(echo 'define $*-zones'						    ;\
-	 awk '$$1 == "Zone" { print $$2 } $$1 == "Link" { print $$3 }' $^   ;\
-	 echo 'endef'							    ;\
-	 echo '$*-zones := $$(subst $$(nl), ,$$($*-zones))'		    ;\
-	 echo 'ifdef $*-zones'						    ;\
-	 if test x$(findstring $*, $(tzlinks)) != x; then		     \
-	   echo '$$(addprefix $$(inst_zonedir)/right/,$$($*-zones)): \';\
-	   echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/right/,$$($$t-zones)))' ;\
-	   echo '$$(addprefix $$(inst_zonedir)/posix/,$$($*-zones)): \';\
-	   echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/posix/,$$($$t-zones)))' ;\
-	   echo '$$(addprefix $$(inst_zonedir)/,$$($*-zones)): \'	    ;\
-	   echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/,$$($$t-zones)))' ;\
-	 fi								    ;\
-	 echo '$$(addprefix $$(inst_datadir)/zone%/right/,$$($*-zones)): \' ;\
-	 echo '$< $$(objpfx)zic leapseconds yearistype'			    ;\
-	 echo '	$$(tzcompile)'						    ;\
-	 echo '$$(addprefix $$(inst_datadir)/zone%/posix/,$$($*-zones)): \' ;\
-	 echo '$< $$(objpfx)zic /dev/null yearistype'			    ;\
-	 echo '	$$(tzcompile)'						    ;\
-	 echo '$$(addprefix $$(inst_datadir)/zone%/,$$($*-zones)): \'	    ;\
-	 echo '$< $$(objpfx)zic $$(leapseconds) yearistype'		    ;\
-	 echo '	$$(tzcompile)'						    ;\
-	 echo 'endif'							    ;\
-	 echo 'zonenames := $$(zonenames) $$($*-zones)'			    ;\
-	) > $@.new
-	mv $@.new $@
-
-.PHONY: echo-zonenames
-echo-zonenames:
-	@echo 'Known zones: $(zonenames)'
-
-
-# We have to use `-d $(inst_zonedir)' to explictly tell zic where to
-# place the output files although $(zonedir) is compiled in.  But the
-# user might have set $(install_root) on the command line of `make install'.
-zic-cmd = $(built-program-cmd) -d $(inst_zonedir)
-tzcompile = $(zic-cmd)$(target-zone-flavor) -L $(word 3,$^) \
-	    -y $(dir $(word 4,$^))$(notdir $(word 4,$^)) $<
-
-# The source files specify the zone names relative to the -d directory,
-# so for the posix/ and right/ flavors we need to pass -d $(inst_zonedir)/posix
-# and the like.  This magic extracts /posix or /right if it's the first
-# component after $(inst_zonedir) in the target name $@.
-target-zone-flavor = $(filter /posix /right, \
-			      /$(firstword $(subst /, , \
-					  $(patsubst $(inst_zonedir)/%,%,$@))))
-
-ifdef localtime
-$(installed-localtime-file): $(inst_zonedir)/$(localtime) $(objpfx)zic
-	$(make-target-directory)
-	if test -r $@; then \
-	  echo Site timezone NOT reset to Factory.; \
-	else \
-	  rm -f $@T; \
-	  $(SHELL) $(..)/rellns-sh $< $@T; \
-	  mv -f $@T $@; \
-	fi
-endif
-ifdef posixrules
-$(installed-posixrules-file): $(inst_zonedir)/$(posixrules) $(objpfx)zic
-	$(zic-cmd) -p $(posixrules)
-endif
-
-
-$(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o
-
-tz-cflags = -DTZDIR='"$(zonedir)"' \
-	    -DTZDEFAULT='"$(localtime-file)"' \
-	    -DTZDEFRULES='"$(posixrules-file)"'
-
-CFLAGS-zdump.c = -Wno-strict-prototypes -DNOID
-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.
-$(objpfx)test-tz.out: $(addprefix $(objpfx)testdata/, America/New_York \
-						      Etc/UTC UTC)
-
-$(objpfx)testdata/America/New_York: northamerica $(objpfx)zic \
-				    $(leapseconds) yearistype
-	$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
-	  -y yearistype northamerica
-$(objpfx)testdata/Etc/UTC: etcetera $(objpfx)zic $(leapseconds) yearistype
-	$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
-	  -y yearistype etcetera
-$(objpfx)testdata/UTC: simplebackw $(objpfx)zic $(objpfx)testdata/Etc/UTC \
-		       $(leapseconds) yearistype
-	$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
-	  -y yearistype simplebackw
-
-test-tz-ENV = TZDIR=$(objpfx)testdata
-
-
-$(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
-	sed -e 's%@KSH@%$(KSH)%g' \
-	    -e 's%@TZDIR@%$(zonedir)%g' < $< > $@.new
-	chmod 555 $@.new
-	mv -f $@.new $@
-
-$(addprefix $(inst_zonedir)/,iso3166.tab zone.tab): $(inst_zonedir)/%: %
-	$(do-install)
diff --git a/time/tzfile.c b/time/tzfile.c
index 3d2d3e0485..7dcf88dbe9 100644
--- a/time/tzfile.c
+++ b/time/tzfile.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 95, 96, 97, 98 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -24,7 +24,7 @@
 #include <unistd.h>
 
 #define	NOID
-#include <tzfile.h>
+#include <timezone/tzfile.h>
 
 int __use_tzfile = 0;
 
diff --git a/time/tzset.c b/time/tzset.c
index 64e2087905..e766796513 100644
--- a/time/tzset.c
+++ b/time/tzset.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98 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,7 +32,7 @@ extern const unsigned short int __mon_yday[2][13];
 extern struct tm _tmbuf;
 
 #define NOID
-#include "tzfile.h"
+#include <timezone/tzfile.h>
 
 extern int __use_tzfile;
 extern void __tzfile_read __P ((const char *file));
@@ -40,7 +40,7 @@ extern int __tzfile_compute __P ((time_t timer, int use_localtime,
 				  long int *leap_correct, int *leap_hit));
 extern void __tzfile_default __P ((const char *std, const char *dst,
 				   long int stdoff, long int dstoff));
-extern char * __tzstring __P ((const char *string));
+extern char *__tzstring __P ((const char *string));
 
 char *__tzname[2] = { (char *) "GMT", (char *) "GMT" };
 int __daylight = 0;
diff --git a/timezone/Makefile b/timezone/Makefile
new file mode 100644
index 0000000000..f4cfa84cb9
--- /dev/null
+++ b/timezone/Makefile
@@ -0,0 +1,196 @@
+# Copyright (C) 1998 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with the GNU C Library; see the file COPYING.LIB.  If not,
+# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+#
+#	Makefile for timezone information
+#
+subdir	:= timezone
+
+distribute := tzfile.h private.h scheck.c ialloc.c yearistype	\
+	      iso3166.tab zone.tab tzselect.ksh checktab.awk	\
+	      README
+
+extra-objs := scheck.o ialloc.o
+
+others	:= zdump zic
+tests	:= test-tz
+
+tzbases := africa antarctica asia australasia europe northamerica \
+	   southamerica etcetera factory systemv \
+	   solar87 solar88 solar89
+tzlinks := backward
+tzfiles := $(tzbases) $(tzlinks)
+# pacificnew doesn't compile; if it is to be used, it should be included in
+# northamerica.
+distribute += $(tzfiles) leapseconds pacificnew simplebackw
+
+install-sbin := zic zdump
+
+generated-dirs = testdata
+
+all: # Make this the default target; it will be defined in Rules.
+
+include ../Makeconfig	# Get objpfx defined so we can use it below.
+
+# z.* use this variable.
+define nl
+
+
+endef
+ifneq ($(no_deps),t)
+-include $(addprefix $(objpfx)z.,$(tzfiles))
+endif
+
+# Make these absolute file names.
+installed-localtime-file := $(firstword $(filter /%,$(inst_localtime-file)) \
+					$(addprefix $(inst_zonedir)/, \
+						    $(localtime-file)))
+installed-posixrules-file := $(firstword $(filter /%,$(posixrules-file)) \
+					 $(addprefix $(inst_zonedir)/, \
+						     $(posixrules-file)))
+
+ifeq ($(cross-compiling),no)
+# Don't try to install the zoneinfo files since we can't run zic.
+install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \
+					      $(zonenames:%=posix/%) \
+					      $(zonenames:%=right/%)) \
+		 $(installed-localtime-file) $(installed-posixrules-file)
+endif
+
+ifeq ($(have-ksh),yes)
+install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab
+install-bin += tzselect
+generated += tzselect
+endif
+
+include ../Rules
+
+
+$(tzfiles:%=$(objpfx)z.%): $(objpfx)z.%: % Makefile
+# Kludge alert: we use an implicit rule (in what we are generating here)
+# because that is the only way to tell Make that the one command builds all
+# the files.
+# The extra kludge for the $(tzlinks) files is necessary since running zic
+# this file requires all other files to exist.  Blech!
+	(echo 'define $*-zones'						    ;\
+	 awk '$$1 == "Zone" { print $$2 } $$1 == "Link" { print $$3 }' $^   ;\
+	 echo 'endef'							    ;\
+	 echo '$*-zones := $$(subst $$(nl), ,$$($*-zones))'		    ;\
+	 echo 'ifdef $*-zones'						    ;\
+	 if test x$(findstring $*, $(tzlinks)) != x; then		     \
+	   echo '$$(addprefix $$(inst_zonedir)/right/,$$($*-zones)): \';\
+	   echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/right/,
+$$($$t-zones)))' ;\
+	   echo '$$(addprefix $$(inst_zonedir)/posix/,$$($*-zones)): \';\
+	   echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/posix/,
+$$($$t-zones)))' ;\
+	   echo '$$(addprefix $$(inst_zonedir)/,$$($*-zones)): \'	    ;\
+	   echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/,$$($$t
+-zones)))' ;\
+	 fi								    ;\
+	 echo '$$(addprefix $$(inst_datadir)/zone%/right/,$$($*-zones)): \' ;\
+	 echo '$< $$(objpfx)zic leapseconds yearistype'			    ;\
+	 echo '	$$(tzcompile)'						    ;\
+	 echo '$$(addprefix $$(inst_datadir)/zone%/posix/,$$($*-zones)): \' ;\
+	 echo '$< $$(objpfx)zic /dev/null yearistype'			    ;\
+	 echo '	$$(tzcompile)'						    ;\
+	 echo '$$(addprefix $$(inst_datadir)/zone%/,$$($*-zones)): \'	    ;\
+	 echo '$< $$(objpfx)zic $$(leapseconds) yearistype'		    ;\
+	 echo '	$$(tzcompile)'						    ;\
+	 echo 'endif'							    ;\
+	 echo 'zonenames := $$(zonenames) $$($*-zones)'			    ;\
+	) > $@.new
+	mv $@.new $@
+
+.PHONY: echo-zonenames
+echo-zonenames:
+	@echo 'Known zones: $(zonenames)'
+
+
+# We have to use `-d $(inst_zonedir)' to explictly tell zic where to
+# place the output files although $(zonedir) is compiled in.  But the
+# user might have set $(install_root) on the command line of `make install'.
+zic-cmd = $(built-program-cmd) -d $(inst_zonedir)
+tzcompile = $(zic-cmd)$(target-zone-flavor) -L $(word 3,$^) \
+	    -y $(dir $(word 4,$^))$(notdir $(word 4,$^)) $<
+
+# The source files specify the zone names relative to the -d directory,
+# so for the posix/ and right/ flavors we need to pass -d $(inst_zonedir)/posix
+# and the like.  This magic extracts /posix or /right if it's the first
+# component after $(inst_zonedir) in the target name $@.
+target-zone-flavor = $(filter /posix /right, \
+			      /$(firstword $(subst /, , \
+					  $(patsubst $(inst_zonedir)/%,%,$@))))
+
+ifdef localtime
+$(installed-localtime-file): $(inst_zonedir)/$(localtime) $(objpfx)zic
+	$(make-target-directory)
+	if test -r $@; then \
+	  echo Site timezone NOT reset to Factory.; \
+	else \
+	  rm -f $@T; \
+	  $(SHELL) $(..)/rellns-sh $< $@T; \
+	  mv -f $@T $@; \
+	fi
+endif
+ifdef posixrules
+$(installed-posixrules-file): $(inst_zonedir)/$(posixrules) $(objpfx)zic
+	$(zic-cmd) -p $(posixrules)
+endif
+
+
+$(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o
+
+tz-cflags = -DTZDIR='"$(zonedir)"' \
+	    -DTZDEFAULT='"$(localtime-file)"' \
+	    -DTZDEFRULES='"$(posixrules-file)"'
+
+CFLAGS-zdump.c = -Wno-strict-prototypes -DNOID
+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.
+$(objpfx)test-tz.out: $(addprefix $(objpfx)testdata/, America/New_York \
+						      Etc/UTC UTC)
+
+$(objpfx)testdata/America/New_York: northamerica $(objpfx)zic \
+				    $(leapseconds) yearistype
+	$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
+	  -y yearistype northamerica
+$(objpfx)testdata/Etc/UTC: etcetera $(objpfx)zic $(leapseconds) yearistype
+	$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
+	  -y yearistype etcetera
+$(objpfx)testdata/UTC: simplebackw $(objpfx)zic $(objpfx)testdata/Etc/UTC \
+		       $(leapseconds) yearistype
+	$(built-program-cmd) -d $(objpfx)testdata -L $(leapseconds) \
+	  -y yearistype simplebackw
+
+test-tz-ENV = TZDIR=$(objpfx)testdata
+
+
+$(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
+	sed -e 's%@KSH@%$(KSH)%g' \
+	    -e 's%@TZDIR@%$(zonedir)%g' < $< > $@.new
+	chmod 555 $@.new
+	mv -f $@.new $@
+
+$(addprefix $(inst_zonedir)/,iso3166.tab zone.tab): $(inst_zonedir)/%: %
+	$(do-install)
diff --git a/time/README b/timezone/README
index 009a7973bc..009a7973bc 100644
--- a/time/README
+++ b/timezone/README
diff --git a/time/africa b/timezone/africa
index 8286e6f62f..8286e6f62f 100644
--- a/time/africa
+++ b/timezone/africa
diff --git a/time/antarctica b/timezone/antarctica
index 1e6e73eff2..1e6e73eff2 100644
--- a/time/antarctica
+++ b/timezone/antarctica
diff --git a/time/asia b/timezone/asia
index c7180eb408..c7180eb408 100644
--- a/time/asia
+++ b/timezone/asia
diff --git a/time/australasia b/timezone/australasia
index 5121cd32fd..5121cd32fd 100644
--- a/time/australasia
+++ b/timezone/australasia
diff --git a/time/backward b/timezone/backward
index 4c7a19d2cf..4c7a19d2cf 100644
--- a/time/backward
+++ b/timezone/backward
diff --git a/time/checktab.awk b/timezone/checktab.awk
index 9006e9f59a..9006e9f59a 100644
--- a/time/checktab.awk
+++ b/timezone/checktab.awk
diff --git a/time/etcetera b/timezone/etcetera
index cf1516fe2f..cf1516fe2f 100644
--- a/time/etcetera
+++ b/timezone/etcetera
diff --git a/time/europe b/timezone/europe
index dbaa01f2f4..dbaa01f2f4 100644
--- a/time/europe
+++ b/timezone/europe
diff --git a/time/factory b/timezone/factory
index ba27c63269..ba27c63269 100644
--- a/time/factory
+++ b/timezone/factory
diff --git a/time/ialloc.c b/timezone/ialloc.c
index 8a0c701578..8a0c701578 100644
--- a/time/ialloc.c
+++ b/timezone/ialloc.c
diff --git a/time/iso3166.tab b/timezone/iso3166.tab
index 6eb4d318db..6eb4d318db 100644
--- a/time/iso3166.tab
+++ b/timezone/iso3166.tab
diff --git a/time/leapseconds b/timezone/leapseconds
index 903da5aaae..903da5aaae 100644
--- a/time/leapseconds
+++ b/timezone/leapseconds
diff --git a/time/northamerica b/timezone/northamerica
index baaf84095a..baaf84095a 100644
--- a/time/northamerica
+++ b/timezone/northamerica
diff --git a/time/pacificnew b/timezone/pacificnew
index 86dd688341..86dd688341 100644
--- a/time/pacificnew
+++ b/timezone/pacificnew
diff --git a/time/private.h b/timezone/private.h
index 7f98a67391..7f98a67391 100644
--- a/time/private.h
+++ b/timezone/private.h
diff --git a/time/scheck.c b/timezone/scheck.c
index 39feeba701..39feeba701 100644
--- a/time/scheck.c
+++ b/timezone/scheck.c
diff --git a/time/solar87 b/timezone/solar87
index 3f32347973..3f32347973 100644
--- a/time/solar87
+++ b/timezone/solar87
diff --git a/time/solar88 b/timezone/solar88
index 41a64e5023..41a64e5023 100644
--- a/time/solar88
+++ b/timezone/solar88
diff --git a/time/solar89 b/timezone/solar89
index a6d3d718d3..a6d3d718d3 100644
--- a/time/solar89
+++ b/timezone/solar89
diff --git a/time/southamerica b/timezone/southamerica
index f53355c4c0..f53355c4c0 100644
--- a/time/southamerica
+++ b/timezone/southamerica
diff --git a/time/systemv b/timezone/systemv
index a6f79d231a..a6f79d231a 100644
--- a/time/systemv
+++ b/timezone/systemv
diff --git a/time/test-tz.c b/timezone/test-tz.c
index 528aa6f7ab..528aa6f7ab 100644
--- a/time/test-tz.c
+++ b/timezone/test-tz.c
diff --git a/time/tzfile.h b/timezone/tzfile.h
index 0921c3c339..0921c3c339 100644
--- a/time/tzfile.h
+++ b/timezone/tzfile.h
diff --git a/time/tzselect.ksh b/timezone/tzselect.ksh
index 031cda1de6..031cda1de6 100644
--- a/time/tzselect.ksh
+++ b/timezone/tzselect.ksh
diff --git a/time/yearistype b/timezone/yearistype
index 809f5492a1..809f5492a1 100755
--- a/time/yearistype
+++ b/timezone/yearistype
diff --git a/time/zdump.c b/timezone/zdump.c
index f6480bb308..f6480bb308 100644
--- a/time/zdump.c
+++ b/timezone/zdump.c
diff --git a/time/zic.c b/timezone/zic.c
index adec622672..adec622672 100644
--- a/time/zic.c
+++ b/timezone/zic.c
diff --git a/time/zone.tab b/timezone/zone.tab
index df4c157788..df4c157788 100644
--- a/time/zone.tab
+++ b/timezone/zone.tab
diff --git a/wctype/wctype.h b/wctype/wctype.h
index 979a98c065..2ed0fe1f35 100644
--- a/wctype/wctype.h
+++ b/wctype/wctype.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 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
@@ -69,7 +69,7 @@ typedef unsigned long int wctype_t;
 #  if __BYTE_ORDER == __BIG_ENDIAN
 #   define _ISwbit(bit)	(1 << bit)
 #  else /* __BYTE_ORDER == __LITTLE_ENDIAN */
-#   define _ISwbit(bit)	(bit < 8 ? 1UL << (bit + 24) : 1UL << (bit + 8))
+#   define _ISwbit(bit)	(bit < 8 ? 1UL << bit << 24 : 1UL << (bit + 8))
 #  endif
 
 enum