summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-08-18 07:53:35 +0000
committerUlrich Drepper <drepper@redhat.com>1999-08-18 07:53:35 +0000
commit219aa9e9f9677e2f50095433ca233abdef23a6b0 (patch)
treeb558f5684364dbc84b62e8db65d3c8a10b9c9900
parentb43f26bbe8f09d0fce67d25549d04f7e19b589c1 (diff)
downloadglibc-219aa9e9f9677e2f50095433ca233abdef23a6b0.tar.gz
glibc-219aa9e9f9677e2f50095433ca233abdef23a6b0.tar.xz
glibc-219aa9e9f9677e2f50095433ca233abdef23a6b0.zip
Update.
1999-08-18  Ulrich Drepper  <drepper@cygnus.com>

	* Rules: When generating stdio_lim.h also rewrite IOV_MAX definition.
	* stdio-common/stdio_lim.h.in: Add IOV_MAX template.
	* include/bits/xopen_lim.h: Don't define IOV_MAX here, get it from
	stdio_lim.h.  Define LONG_BIT and WORD_BIT.

	* include/features.h: Define __USE_XOPEN2K if _XOPEN_SOURCE == 600.

	* libio/stdio.h: Don't declare cuserid and getopt for X/Open issue 6.

	* misc/search.h: Don't define NULL.

	* posix/sys/types.h: Define blksize_t if it hasn't happened.
	Only define key_t and blkcnt_t if it hasn't happened before.
	Define blksize_t if not happened before.
	* io/sys/stat.h: Don't define pid_t.  Define blkcnt_t and blksize_t.
	* sysdeps/generic/bits/types.h: Define __blksize_t.
	* sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise.
	* sysdeps/mach/hurd/bits/stat.h (struct stat): Use __blksize_t for
	st_blksize member.
	(struct stat64): Likewise.
	* sysdeps/unix/bsd/bits/stat.h: Likewise.
	* sysdeps/unix/bsd/osf/alpha/bits/stat.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/stat.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise.
	* sysdeps/unix/sysv/sysv4/i386/bist/stat.h: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h: Likewise.

	* stdlib/getsubopt.c: Correct type of second argument.
	* stdlib/stdlib.h: Likewise.

	* stdlib/monetary.h: Don't include sys/types.h.  Define only size_t
	and ssize_t.

	* sysdeps/generic/putenv.c: Correct type of parameter.
	* stdlib/stdlib.h: Likewise.

	* sysdeps/generic/msgsnd.c: Correct type of second parameter.
	* sysdeps/unix/sysv/linux/msgsnd.c: Likewise.
	* sysvips/sys/msg.h: Likewise.

	* sysdeps/generic/semop.c: Correct type of third parameter.
	* sysdeps/unix/sysv/linux/semop.c: Likewise.
	* sysvipc/sys/sem.h: Likewise.  Don't include sys/types.h, define
	size_t.

	* sysdeps/generic/shmget.c: Correct type of second parameter.
	* sysdeps/unix/sysv/linux/shmget.c: Likewise.
	* sysvips/sys/shm.h: Likewise.  Don't include unistd.h and sys/types.h.
	Declare __getpagesize here.

	* sysdeps/generic/bits/ipc.h: Include bits/types.h instead of
	sys/types.h.
	* sysdeps/gnu/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Likewise.
	* sysvipc/sys/ipc.h: Define uid_t, gid_t, mode_t, and key_t if not
	already done.

	* sysdeps/unix/bsd/usleep.c: Correct type of parameter.

	* debug/versions: Export __cyg_profile_func_enter and
	__cyg_profile_func_exit.

	* math/bits/mathcalls.h: Pretty print.
-rw-r--r--ChangeLog73
-rw-r--r--Rules16
-rw-r--r--bits/ipc.h5
-rw-r--r--bits/types.h3
-rw-r--r--debug/Versions4
-rw-r--r--include/bits/xopen_lim.h32
-rw-r--r--include/features.h7
-rw-r--r--io/sys/stat.h17
-rw-r--r--libio/stdio.h8
-rw-r--r--math/bits/mathcalls.h4
-rw-r--r--misc/search.h3
-rw-r--r--posix/sys/types.h14
-rw-r--r--stdio-common/stdio_lim.h.in6
-rw-r--r--stdlib/getsubopt.c4
-rw-r--r--stdlib/monetary.h12
-rw-r--r--stdlib/stdlib.h4
-rw-r--r--sysdeps/generic/bits/ipc.h5
-rw-r--r--sysdeps/generic/bits/types.h3
-rw-r--r--sysdeps/generic/msgsnd.c6
-rw-r--r--sysdeps/generic/putenv.c2
-rw-r--r--sysdeps/generic/semop.c6
-rw-r--r--sysdeps/generic/shmget.c6
-rw-r--r--sysdeps/gnu/bits/ipc.h4
-rw-r--r--sysdeps/mach/hurd/bits/stat.h6
-rw-r--r--sysdeps/unix/bsd/bits/stat.h4
-rw-r--r--sysdeps/unix/bsd/osf/alpha/bits/stat.h4
-rw-r--r--sysdeps/unix/bsd/usleep.c4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/ipc.h4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/stat.h6
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/types.h5
-rw-r--r--sysdeps/unix/sysv/linux/bits/stat.h6
-rw-r--r--sysdeps/unix/sysv/linux/bits/types.h3
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/ipc.h4
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/stat.h6
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/types.h3
-rw-r--r--sysdeps/unix/sysv/linux/msgsnd.c6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/ipc.h4
-rw-r--r--sysdeps/unix/sysv/linux/semop.c6
-rw-r--r--sysdeps/unix/sysv/linux/shmget.c6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/types.h3
-rw-r--r--sysdeps/unix/sysv/sysv4/i386/bits/stat.h4
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h6
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/bits/types.h3
-rw-r--r--sysvipc/sys/ipc.h26
-rw-r--r--sysvipc/sys/msg.h4
-rw-r--r--sysvipc/sys/sem.h7
-rw-r--r--sysvipc/sys/shm.h10
47 files changed, 281 insertions, 103 deletions
diff --git a/ChangeLog b/ChangeLog
index ef9056e569..461e3bb822 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,76 @@
+1999-08-18  Ulrich Drepper  <drepper@cygnus.com>
+
+	* Rules: When generating stdio_lim.h also rewrite IOV_MAX definition.
+	* stdio-common/stdio_lim.h.in: Add IOV_MAX template.
+	* include/bits/xopen_lim.h: Don't define IOV_MAX here, get it from
+	stdio_lim.h.  Define LONG_BIT and WORD_BIT.
+
+	* include/features.h: Define __USE_XOPEN2K if _XOPEN_SOURCE == 600.
+
+	* libio/stdio.h: Don't declare cuserid and getopt for X/Open issue 6.
+
+	* misc/search.h: Don't define NULL.
+
+	* posix/sys/types.h: Define blksize_t if it hasn't happened.
+	Only define key_t and blkcnt_t if it hasn't happened before.
+	Define blksize_t if not happened before.
+	* io/sys/stat.h: Don't define pid_t.  Define blkcnt_t and blksize_t.
+	* sysdeps/generic/bits/types.h: Define __blksize_t.
+	* sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise.
+	* sysdeps/unix/sysv/linux/bits/types.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise.
+	* sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise.
+	* sysdeps/mach/hurd/bits/stat.h (struct stat): Use __blksize_t for
+	st_blksize member.
+	(struct stat64): Likewise.
+	* sysdeps/unix/bsd/bits/stat.h: Likewise.
+	* sysdeps/unix/bsd/osf/alpha/bits/stat.h: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Likewise.
+	* sysdeps/unix/sysv/linux/bits/stat.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise.
+	* sysdeps/unix/sysv/sysv4/i386/bist/stat.h: Likewise.
+	* sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h: Likewise.
+
+	* stdlib/getsubopt.c: Correct type of second argument.
+	* stdlib/stdlib.h: Likewise.
+
+	* stdlib/monetary.h: Don't include sys/types.h.  Define only size_t
+	and ssize_t.
+
+	* sysdeps/generic/putenv.c: Correct type of parameter.
+	* stdlib/stdlib.h: Likewise.
+
+	* sysdeps/generic/msgsnd.c: Correct type of second parameter.
+	* sysdeps/unix/sysv/linux/msgsnd.c: Likewise.
+	* sysvips/sys/msg.h: Likewise.
+
+	* sysdeps/generic/semop.c: Correct type of third parameter.
+	* sysdeps/unix/sysv/linux/semop.c: Likewise.
+	* sysvipc/sys/sem.h: Likewise.  Don't include sys/types.h, define
+	size_t.
+
+	* sysdeps/generic/shmget.c: Correct type of second parameter.
+	* sysdeps/unix/sysv/linux/shmget.c: Likewise.
+	* sysvips/sys/shm.h: Likewise.  Don't include unistd.h and sys/types.h.
+	Declare __getpagesize here.
+
+	* sysdeps/generic/bits/ipc.h: Include bits/types.h instead of
+	sys/types.h.
+	* sysdeps/gnu/bits/ipc.h: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/bits/ipc.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/ipc.h: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Likewise.
+	* sysvipc/sys/ipc.h: Define uid_t, gid_t, mode_t, and key_t if not
+	already done.
+
+	* sysdeps/unix/bsd/usleep.c: Correct type of parameter.
+
+	* debug/versions: Export __cyg_profile_func_enter and
+	__cyg_profile_func_exit.
+
+	* math/bits/mathcalls.h: Pretty print.
+
 1999-08-17  Ulrich Drepper  <drepper@cygnus.com>
 
 	* timezone/tst-timezone.c (tests): Update America/Sao_Paulo test
diff --git a/Rules b/Rules
index a5a0c5bf8f..2a54a39529 100644
--- a/Rules
+++ b/Rules
@@ -191,26 +191,32 @@ $(stdio_lim:h=st): $(..)stdio-common/stdio_lim.h.in $(..)Rules \
 	echo '#include "$(..)posix/bits/posix1_lim.h"' |		\
 	SUNPRO_DEPENDENCIES='$(@:st=dT) $@'				\
 	$(CC) $(+includes) -E -dM -xc - -o $(@:st=hT)
+	echo '#include "$(..)misc/sys/uio.h"' |				\
+	SUNPRO_DEPENDENCIES='$(@:st=dT) $@'				\
+	$(CC) $(+includes) -E -dM -xc - | cat - >> $(@:st=hT)
 ifdef sed-remove-objpfx
 	sed $(sed-remove-objpfx) $(@:st=dT) > $(@:st=dt)
-	mv -f $(@:st=dt) $(@:st=d)
+	cat $(@:st=dt) >> $(@:st=d)
 else
-	mv -f $(@:st=dT) $(@:st=d)
+	cat $(@:st=dT) >> $(@:st=d)
 endif
-	fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:st=hT)`; 	\
-	filename_max=`sed -n 's/^#define PATH_MAX //p' $(@:st=hT)`;	\
+	fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; 	\
+	filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`;	\
+	iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`;	\
 	fopen_max=$${fopen_max:-16};					\
 	filename_max=$${filename_max:-1024};				\
+	iov_max=$${iov_max:-_XOPEN_IOV_MAX};				\
 	sed -e "s/@FOPEN_MAX@/$$fopen_max/"				\
 	    -e "s/@FILENAME_MAX@/$$filename_max/"			\
 	    -e "s/@L_tmpnam@/$(L_tmpnam)/"				\
 	    -e "s/@TMP_MAX@/$(TMP_MAX)/"				\
 	    -e "s/@L_ctermid@/$(L_ctermid)/"				\
 	    -e "s/@L_cuserid@/$(L_cuserid)/"				\
+	    -e "s/@IOV_MAX@/$$iov_max/"					\
 	    $< > $(@:st=h.new)
 	$(move-if-change) $(@:st=h.new) $(@:st=h)
 # Remove these last so that they can be examined if something went wrong.
-	rm -f $(@:st=hT) $(@:st=dT)
+	rm -f $(@:st=hT) $(@:st=dT) $(@:st=dt)
 	touch $@
 # Get dependencies.
 ifndef no_deps
diff --git a/bits/ipc.h b/bits/ipc.h
index 58f419be1d..7e38fdf5ea 100644
--- a/bits/ipc.h
+++ b/bits/ipc.h
@@ -1,6 +1,5 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
 
    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
@@ -21,7 +20,7 @@
 # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
 #endif
 
-#include <sys/types.h>
+#include <bits/types.h>
 
 /* Mode bits for `msgget', `semget', and `shmget'.  */
 #define IPC_CREAT	01000		/* create key if key does not exist */
diff --git a/bits/types.h b/bits/types.h
index 8d2061235d..fd9818e15d 100644
--- a/bits/types.h
+++ b/bits/types.h
@@ -115,6 +115,9 @@ typedef struct
 typedef unsigned short int __ipc_pid_t;
 
 
+/* Type to represent block size.  */
+typedef unsigned int __blksize_t;
+
 /* Types from the Large File Support interface.  */
 
 /* Type to count number os disk blocks.  */
diff --git a/debug/Versions b/debug/Versions
index 01d390eb9f..c2b6396d82 100644
--- a/debug/Versions
+++ b/debug/Versions
@@ -6,4 +6,8 @@ libc {
     # b*
     backtrace; backtrace_symbols; backtrace_symbols_fd;
   }
+  GLIBC_2.2 {
+    # These are to support some gcc features.
+    __cyg_profile_func_enter; __cyg_profile_func_exit;
+  }
 }
diff --git a/include/bits/xopen_lim.h b/include/bits/xopen_lim.h
index 9f22e44e25..607c50b678 100644
--- a/include/bits/xopen_lim.h
+++ b/include/bits/xopen_lim.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -31,6 +31,7 @@
 #define _XOPEN_LIM_H	1
 
 #define __need_FOPEN_MAX
+#define __need_IOV_MAX
 #include <bits/stdio_lim.h>
 
 /* We do not provide fixed values for
@@ -44,6 +45,9 @@
    CHILD_MAX	Maximum number of simultaneous processes per real
 		user ID.
 
+   IOV_MAX	Maximum number of `iovec' structures that one process has
+		available for use with `readv' or writev'.
+
    OPEN_MAX	Maximum number of files that one process can have open
 		at anyone time.
 
@@ -53,11 +57,6 @@
    PASS_MAX	Maximum number of significant bytes in a password.
 */
 
-
-/* Maximum number of `iovec' structures that one process has available
-   for use with `readv' or writev'.  */
-#define IOV_MAX		_XOPEN_IOV_MAX
-
 /* The number of streams that one process can have open at one time.  */
 #define STREAM_MAX	FOPEN_MAX
 
@@ -93,4 +92,25 @@
 /* Default process priority.  */
 #define NZERO		20
 
+
+/* Number of bits in a word of type `int'.  */
+#if INT_MAX == 32767
+# define WORD_BIT	16
+#else
+# if INT_MAX == 2147483647
+#  define WORD_BIT	32
+# else
+/* Safe assumption.  */
+#  define WORD_BIT	64
+# endif
+#endif
+
+/* Number of bits in a word of type `long int'.  */
+#if INT_MAX == 2147483647
+# define LONG_BIT	32
+#else
+/* Safe assumption.  */
+# define LONG_BIT	64
+#endif
+
 #endif /* bits/xopen_lim.h */
diff --git a/include/features.h b/include/features.h
index f04184ac12..1189e3ea79 100644
--- a/include/features.h
+++ b/include/features.h
@@ -125,7 +125,7 @@
 # undef  _POSIX_C_SOURCE
 # define _POSIX_C_SOURCE	199506L
 # undef  _XOPEN_SOURCE
-# define _XOPEN_SOURCE	500
+# define _XOPEN_SOURCE	600
 # undef  _XOPEN_SOURCE_EXTENDED
 # define _XOPEN_SOURCE_EXTENDED	1
 # undef	 _LARGEFILE64_SOURCE
@@ -182,11 +182,14 @@
 
 #ifdef	_XOPEN_SOURCE
 # define __USE_XOPEN	1
-# if (_XOPEN_SOURCE - 0) == 500
+# if (_XOPEN_SOURCE - 0) >= 500
 #  define __USE_XOPEN_EXTENDED	1
 #  define __USE_UNIX98	1
 #  undef _LARGEFILE_SOURCE
 #  define _LARGEFILE_SOURCE	1
+#  if (_XOPEN_SOURCE - 0) == 600
+#   define __USE_XOPEN2K	1
+#  endif
 # else
 #  ifdef _XOPEN_SOURCE_EXTENDED
 #   define __USE_XOPEN_EXTENDED	1
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 058c91e51b..97f789715d 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 95, 96, 97, 98, 99 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
@@ -78,9 +78,18 @@ typedef __uid_t uid_t;
 #endif	/* X/Open */
 
 #ifdef __USE_UNIX98
-# ifndef __pid_t_defined
-typedef __pid_t pid_t;
-#  define __pid_t_defined
+# ifndef __blkcnt_t_defined
+#  ifndef __USE_FILE_OFFSET64
+typedef __blkcnt_t blkcnt_t;
+#  else
+typedef __blkcnt64_t blkcnt_t;
+#  endif
+#  define __blkcnt_t_defined
+# endif
+
+# ifndef __blksize_t_defined
+typedef __blksize_t blksize_t;
+#  define __blksize_t_defined
 # endif
 #endif	/* Unix98 */
 
diff --git a/libio/stdio.h b/libio/stdio.h
index 3c726c8ce5..7b6490367a 100644
--- a/libio/stdio.h
+++ b/libio/stdio.h
@@ -588,10 +588,10 @@ extern char *ctermid __P ((char *__s));
 #endif /* Use POSIX.  */
 
 
-#ifdef __USE_XOPEN
+#if defined __USE_XOPEN && !defined __USE_XOPEN2K
 /* Return the name of the current user.  */
 extern char *cuserid __P ((char *__s));
-#endif /* Use X/Open.  */
+#endif /* Use X/Open, but not issue 6.  */
 
 
 #ifdef	__USE_GNU
@@ -620,13 +620,13 @@ extern int ftrylockfile __P ((FILE *__stream));
 extern void funlockfile __P ((FILE *__stream));
 #endif /* POSIX || misc */
 
-#if defined __USE_XOPEN && !defined __USE_GNU
+#if defined __USE_XOPEN && !defined __USE_XOPEN2K && !defined __USE_GNU
 /* The X/Open standard requires some functions and variables to be
    declared here which do not belong into this header.  But we have to
    follow.  In GNU mode we don't do this nonsense.  */
 # define __need_getopt
 # include <getopt.h>
-#endif
+#endif	/* X/Open, but not issue 6 and not for GNU.  */
 
 /* If we are compiling with optimizing read this file.  It contains
    several optizing inline functions and macros.  */
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index 025c4c78e4..7f41ef9711 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -259,10 +259,10 @@ __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__));
 /* Return the remainder of integer divison X / Y with infinite precision.  */
 __MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y));
 
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
+# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
 /* Return X times (2 to the Nth power).  */
 __MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n));
-#endif
+# endif
 
 /* Return X times (2 to the Nth power).  */
 __MATHCALL (scalbn,, (_Mdouble_ __x, int __n));
diff --git a/misc/search.h b/misc/search.h
index b534d93ccb..60edbe54dd 100644
--- a/misc/search.h
+++ b/misc/search.h
@@ -1,5 +1,5 @@
 /* Declarations for System V style searching functions.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999 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
@@ -23,7 +23,6 @@
 #include <features.h>
 
 #define __need_size_t
-#define __need_NULL
 #include <stddef.h>
 
 __BEGIN_DECLS
diff --git a/posix/sys/types.h b/posix/sys/types.h
index 7a0b3828c3..37c1cb16c8 100644
--- a/posix/sys/types.h
+++ b/posix/sys/types.h
@@ -110,8 +110,9 @@ typedef __daddr_t daddr_t;
 typedef __caddr_t caddr_t;
 #endif
 
-#if defined __USE_SVID || defined __USE_XOPEN
+#if (defined __USE_SVID || defined __USE_XOPEN) && !defined __key_t_defined
 typedef __key_t key_t;
+# define __key_t_defined
 #endif
 
 #ifdef __USE_XOPEN
@@ -205,13 +206,24 @@ typedef int register_t __attribute__ ((__mode__ (__word__)));
 #endif /* Use BSD.  */
 
 
+#if defined __USE_UNIX98 && !defined __blksize_t_defined
+typedef __blksize_t blksize_t;
+# define __blksize_t_defined
+#endif
+
 /* Types from the Large File Support interface.  */
 #ifndef __USE_FILE_OFFSET64
+# ifndef __blkcnt_t_defined
 typedef __blkcnt_t blkcnt_t;	 /* Type to count number of disk blocks.  */
+#  define __blkcnt_t_defined
+# endif
 typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks.  */
 typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes.  */
 #else
+# ifndef __blkcnt_t_defined
 typedef __blkcnt64_t blkcnt_t;	   /* Type to count number of disk blocks.  */
+#  define __blkcnt_t_defined
+# endif
 typedef __fsblkcnt64_t fsblkcnt_t; /* Type to count file system blocks.  */
 typedef __fsfilcnt64_t fsfilcnt_t; /* Type to count file system inodes.  */
 #endif
diff --git a/stdio-common/stdio_lim.h.in b/stdio-common/stdio_lim.h.in
index 957fac6449..55272963a7 100644
--- a/stdio-common/stdio_lim.h.in
+++ b/stdio-common/stdio_lim.h.in
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1997, 1998, 1999 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
@@ -35,3 +35,7 @@
 # undef  FOPEN_MAX
 # define FOPEN_MAX @FOPEN_MAX@
 #endif
+
+#if defined __need_IOV_MAX && !defined IOV_MAX
+# define IOV_MAX @IOV_MAX@
+#endif
diff --git a/stdlib/getsubopt.c b/stdlib/getsubopt.c
index d559d9077f..3cff684fac 100644
--- a/stdlib/getsubopt.c
+++ b/stdlib/getsubopt.c
@@ -1,5 +1,5 @@
 /* Parse comma separate list into words.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -31,7 +31,7 @@
 int
 getsubopt (optionp, tokens, valuep)
      char **optionp;
-     const char *const *tokens;
+     char *const *tokens;
      char **valuep;
 {
   char *endp, *vstart;
diff --git a/stdlib/monetary.h b/stdlib/monetary.h
index d0dcaadfd7..de288a208b 100644
--- a/stdlib/monetary.h
+++ b/stdlib/monetary.h
@@ -1,5 +1,5 @@
 /* Header file for monetary value formatting functions.
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 1999 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
@@ -23,7 +23,15 @@
 #include <features.h>
 
 /* Get needed types.  */
-#include <sys/types.h>
+#define __need_size_t
+#include <stddef.h>
+#include <bits/types.h>
+
+#ifndef	__ssize_t_defined
+typedef __ssize_t ssize_t;
+# define __ssize_t_defined
+#endif
+
 
 __BEGIN_DECLS
 
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 97fa000ea0..bec12090f3 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -537,7 +537,7 @@ extern char *__secure_getenv __P ((__const char *__name));
 /* The SVID says this is in <stdio.h>, but this seems a better place.	*/
 /* Put STRING, which is of the form "NAME=VALUE", in the environment.
    If there is no `=', remove NAME from the environment.  */
-extern int putenv __P ((__const char *__string));
+extern int putenv __P ((char *__string));
 #endif
 
 #ifdef	__USE_BSD
@@ -736,7 +736,7 @@ extern int rpmatch __P ((__const char *__response));
    suboption.  On exit *OPTIONP is set to the beginning of the next
    token or at the terminating NUL character.  */
 extern int getsubopt __P ((char **__restrict __optionp,
-			   __const char *__const *__restrict __tokens,
+			   char *__const *__restrict __tokens,
 			   char **__restrict __valuep));
 #endif
 
diff --git a/sysdeps/generic/bits/ipc.h b/sysdeps/generic/bits/ipc.h
index 58f419be1d..7e38fdf5ea 100644
--- a/sysdeps/generic/bits/ipc.h
+++ b/sysdeps/generic/bits/ipc.h
@@ -1,6 +1,5 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
 
    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
@@ -21,7 +20,7 @@
 # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
 #endif
 
-#include <sys/types.h>
+#include <bits/types.h>
 
 /* Mode bits for `msgget', `semget', and `shmget'.  */
 #define IPC_CREAT	01000		/* create key if key does not exist */
diff --git a/sysdeps/generic/bits/types.h b/sysdeps/generic/bits/types.h
index 8d2061235d..fd9818e15d 100644
--- a/sysdeps/generic/bits/types.h
+++ b/sysdeps/generic/bits/types.h
@@ -115,6 +115,9 @@ typedef struct
 typedef unsigned short int __ipc_pid_t;
 
 
+/* Type to represent block size.  */
+typedef unsigned int __blksize_t;
+
 /* Types from the Large File Support interface.  */
 
 /* Type to count number os disk blocks.  */
diff --git a/sysdeps/generic/msgsnd.c b/sysdeps/generic/msgsnd.c
index 993895290b..5c651164ef 100644
--- a/sysdeps/generic/msgsnd.c
+++ b/sysdeps/generic/msgsnd.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, August 1995.
 
    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
@@ -29,7 +29,7 @@
 int
 msgsnd (msqid, msgp, msgsz, msgflg)
      int msqid;
-     void *msgp;
+     const void *msgp;
      size_t msgsz;
      int msgflg;
 {
diff --git a/sysdeps/generic/putenv.c b/sysdeps/generic/putenv.c
index 75fafad06d..9c7d75a6a1 100644
--- a/sysdeps/generic/putenv.c
+++ b/sysdeps/generic/putenv.c
@@ -51,7 +51,7 @@ extern char *alloca ();
 /* Put STRING, which is of the form "NAME=VALUE", in the environment.  */
 int
 putenv (string)
-     const char *string;
+     char *string;
 {
   const char *const name_end = strchr (string, '=');
 
diff --git a/sysdeps/generic/semop.c b/sysdeps/generic/semop.c
index 64f5951451..0c26deba8e 100644
--- a/sysdeps/generic/semop.c
+++ b/sysdeps/generic/semop.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, August 1995.
 
    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
@@ -26,7 +26,7 @@ int
 semop (semid, sops, nsops)
      int semid;
      struct sembuf *sops;
-     unsigned int nsops;
+     size_t nsops;
 {
   __set_errno (ENOSYS);
   return -1;
diff --git a/sysdeps/generic/shmget.c b/sysdeps/generic/shmget.c
index 4f8eb63ea0..e534423926 100644
--- a/sysdeps/generic/shmget.c
+++ b/sysdeps/generic/shmget.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, August 1995.
 
    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
@@ -26,7 +26,7 @@
 int
 shmget (key, size, shmflg)
      key_t key;
-     int size;
+     size_t size;
      int shmflg;
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/gnu/bits/ipc.h b/sysdeps/gnu/bits/ipc.h
index c4e37358e8..eb9bcff6a4 100644
--- a/sysdeps/gnu/bits/ipc.h
+++ b/sysdeps/gnu/bits/ipc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 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,7 +20,7 @@
 # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
 #endif
 
-#include <sys/types.h>
+#include <bits/types.h>
 
 /* Mode bits for `msgget', `semget', and `shmget'.  */
 #define IPC_CREAT	01000		/* Create key if key does not exist. */
diff --git a/sysdeps/mach/hurd/bits/stat.h b/sysdeps/mach/hurd/bits/stat.h
index df50a0901f..201aed10b4 100644
--- a/sysdeps/mach/hurd/bits/stat.h
+++ b/sysdeps/mach/hurd/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1993, 1994, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 93, 94, 96, 97, 99 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
@@ -62,7 +62,7 @@ struct stat
     __time_t st_ctime;		/* Status change time, seconds */
     unsigned long int st_ctime_usec; /* and microseconds.  */
 
-    unsigned int st_blksize;	/* Optimal size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal size for I/O.  */
 
 #ifndef __USE_FILE_OFFSET64
     __blkcnt_t st_blocks;	/* Number of 512-byte blocks allocated.
@@ -111,7 +111,7 @@ struct stat64
     __time_t st_ctime;		/* Status change time, seconds */
     unsigned long int st_ctime_usec; /* and microseconds.  */
 
-    unsigned int st_blksize;	/* Optimal size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal size for I/O.  */
 
     __blkcnt64_t st_blocks;	/* Number of 512-byte blocks allocated.
 				   Not related to `st_blksize'.  */
diff --git a/sysdeps/unix/bsd/bits/stat.h b/sysdeps/unix/bsd/bits/stat.h
index 8722fa0249..3343019f61 100644
--- a/sysdeps/unix/bsd/bits/stat.h
+++ b/sysdeps/unix/bsd/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1996, 1997, 1999 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
@@ -50,7 +50,7 @@ struct stat
     __time_t st_ctime;		/* Time of last status change.  */
     unsigned long int st_ctime_usec;
 
-    unsigned long int st_blksize; /* Optimal block size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal block size for I/O.  */
 #define	_STATBUF_ST_BLKSIZE	/* Tell code we have this member.  */
 
     __blkcnt_t st_blocks;	/* Number of 512-byte blocks allocated.  */
diff --git a/sysdeps/unix/bsd/osf/alpha/bits/stat.h b/sysdeps/unix/bsd/osf/alpha/bits/stat.h
index 7084b4e534..b73c23ae96 100644
--- a/sysdeps/unix/bsd/osf/alpha/bits/stat.h
+++ b/sysdeps/unix/bsd/osf/alpha/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997, 1999 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
@@ -42,7 +42,7 @@ struct stat
     int st_ctime;		/* Time of last status change.  */
     int st_ctime_usec;
 
-    unsigned int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal block size for I/O.  */
 #define	_STATBUF_ST_BLKSIZE	/* Tell code we have this member.  */
 
     __blkcnt_t st_blocks;	/* Number of 512-byte blocks allocated.  */
diff --git a/sysdeps/unix/bsd/usleep.c b/sysdeps/unix/bsd/usleep.c
index 13506d2b8f..ccd294f000 100644
--- a/sysdeps/unix/bsd/usleep.c
+++ b/sysdeps/unix/bsd/usleep.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1996, 1999 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
@@ -23,7 +23,7 @@
 /* Sleep USECONDS microseconds, or until a previously set timer goes off.  */
 void
 usleep (useconds)
-     unsigned int useconds;
+     useconds_t useconds;
 {
   struct timeval delay;
 
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/ipc.h b/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
index 7b644e8b7a..804e1ee3f7 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 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,7 +20,7 @@
 # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
 #endif
 
-#include <sys/types.h>
+#include <bits/types.h>
 
 /* Mode bits for `msgget', `semget', and `shmget'.  */
 #define IPC_CREAT	01000		/* Create key if key does not exist. */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/stat.h b/sysdeps/unix/sysv/linux/alpha/bits/stat.h
index cb4ab78268..e1dad323b1 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 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
@@ -53,7 +53,7 @@ struct stat
     __blkcnt_t st_blocks;	/* Nr. 512-byte blocks allocated.  */
     int __pad2;
 #endif
-    unsigned int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal block size for I/O.  */
     unsigned int st_flags;
     unsigned int st_gen;
     int __pad3;
@@ -76,7 +76,7 @@ struct stat64
     __time_t st_mtime;		/* Time of last modification.  */
     __time_t st_ctime;		/* Time of last status change.  */
     __blkcnt64_t st_blocks;	/* Nr. 512-byte blocks allocated.  */
-    unsigned int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal block size for I/O.  */
     unsigned int st_flags;
     unsigned int st_gen;
     int __pad3;
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/types.h b/sysdeps/unix/sysv/linux/alpha/bits/types.h
index 4bc43199d5..d98ed8ad8c 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/types.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/types.h
@@ -59,8 +59,9 @@ typedef __int32_t  __pid_t;		/* Type of process identifications.  */
 typedef __int64_t  __ssize_t;		/* Type of a byte count, or error.  */
 typedef __int64_t  __rlim_t;		/* Type of resource counts.  */
 typedef __int64_t  __rlim64_t;		/*  "" (LFS) */
-typedef __uint32_t  __blkcnt_t;		/* Type to count nr disk blocks.  */
-typedef __uint64_t  __blkcnt64_t;	/*  "" (LFS) */
+typedef __uint32_t __blksize_t;		/* Type to represnet block size.  */
+typedef __uint32_t __blkcnt_t;		/* Type to count nr disk blocks.  */
+typedef __uint64_t __blkcnt64_t;	/*  "" (LFS) */
 typedef __int32_t __fsblkcnt_t;		/* Type to count file system blocks. */
 typedef __int64_t __fsblkcnt64_t;	/*  "" (LFS) */
 typedef __uint32_t __fsfilcnt_t;	/* Type to count file system inodes. */
diff --git a/sysdeps/unix/sysv/linux/bits/stat.h b/sysdeps/unix/sysv/linux/bits/stat.h
index c175668a06..ff2b16e6fd 100644
--- a/sysdeps/unix/sysv/linux/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 95, 96, 97, 98, 99 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
@@ -53,7 +53,7 @@ struct stat
 #else
     __off64_t st_size;			/* Size of file, in bytes.  */
 #endif
-    unsigned long int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;		/* Optimal block size for I/O.  */
 
 #ifndef __USE_FILE_OFFSET64
     __blkcnt_t st_blocks;		/* Number 512-byte blocks allocated. */
@@ -84,7 +84,7 @@ struct stat64
     __dev_t st_rdev;			/* Device number, if device.  */
     unsigned short int __pad2;
     __off64_t st_size;			/* Size of file, in bytes.  */
-    unsigned long int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;		/* Optimal block size for I/O.  */
 
     __blkcnt64_t st_blocks;		/* Number 512-byte blocks allocated. */
     __time_t st_atime;			/* Time of last access.  */
diff --git a/sysdeps/unix/sysv/linux/bits/types.h b/sysdeps/unix/sysv/linux/bits/types.h
index 1884baed96..28d6157e07 100644
--- a/sysdeps/unix/sysv/linux/bits/types.h
+++ b/sysdeps/unix/sysv/linux/bits/types.h
@@ -119,6 +119,9 @@ typedef int __key_t;
 typedef unsigned short int __ipc_pid_t;
 
 
+/* Type to represent block size.  */
+typedef long int __blksize_t;
+
 /* Types from the Large File Support interface.  */
 
 /* Type to count number os disk blocks.  */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/ipc.h b/sysdeps/unix/sysv/linux/mips/bits/ipc.h
index 04bd3f0ce2..fb989cceca 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/ipc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 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,7 +20,7 @@
 # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
 #endif
 
-#include <sys/types.h>
+#include <bits/types.h>
 
 /* Mode bits for `msgget', `semget', and `shmget'.  */
 #define IPC_CREAT	01000		/* Create key if key does not exist. */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/stat.h b/sysdeps/unix/sysv/linux/mips/bits/stat.h
index f0afd5e728..1379ea7a6b 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 95, 96, 97, 98, 99 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
@@ -66,7 +66,7 @@ struct stat
     long int __reserved1;
     __time_t st_ctime;		/* Time of last status change.  */
     long int __reserved2;
-    long int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal block size for I/O.  */
 #ifndef __USE_FILE_OFFSET64
     __blkcnt_t st_blocks;	/* Number of 512-byte blocks allocated.  */
 #else
@@ -104,7 +104,7 @@ struct stat64
     long int __reserved1;
     __time_t st_ctime;		/* Time of last status change.  */
     long int __reserved2;
-    long int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal block size for I/O.  */
     __blkcnt64_t st_blocks;	/* Number of 512-byte blocks allocated.  */
     char st_fstype[16];		/* Filesystem type name */
     long int st_pad4[8];
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types.h b/sysdeps/unix/sysv/linux/mips/bits/types.h
index d7176c31c6..37c3f21c5b 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types.h
@@ -119,6 +119,9 @@ typedef int __key_t;
 typedef long int __ipc_pid_t;
 
 
+/* Type to represent block size.  */
+typedef long int __blksize_t;
+
 /* Types from the Large File Support interface.  */
 
 /* Type to count number os disk blocks.  */
diff --git a/sysdeps/unix/sysv/linux/msgsnd.c b/sysdeps/unix/sysv/linux/msgsnd.c
index c279b2e52e..af6df3d4a7 100644
--- a/sysdeps/unix/sysv/linux/msgsnd.c
+++ b/sysdeps/unix/sysv/linux/msgsnd.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, August 1995.
 
    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
@@ -26,7 +26,7 @@
 int
 msgsnd (msqid, msgp, msgsz, msgflg)
      int msqid;
-     void *msgp;
+     const void *msgp;
      size_t msgsz;
      int msgflg;
 {
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h b/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
index 1c1ae80273..58f6d99488 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 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,7 +20,7 @@
 # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
 #endif
 
-#include <sys/types.h>
+#include <bits/types.h>
 
 /* Mode bits for `msgget', `semget', and `shmget'.  */
 #define IPC_CREAT	01000		/* Create key if key does not exist. */
diff --git a/sysdeps/unix/sysv/linux/semop.c b/sysdeps/unix/sysv/linux/semop.c
index bd120bf4b3..33fd289cc4 100644
--- a/sysdeps/unix/sysv/linux/semop.c
+++ b/sysdeps/unix/sysv/linux/semop.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, August 1995.
 
    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
@@ -29,7 +29,7 @@ int
 semop (semid, sops, nsops)
      int semid;
      struct sembuf *sops;
-     unsigned int nsops;
+     size_t nsops;
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_semop, semid, (int) nsops, 0, sops);
 }
diff --git a/sysdeps/unix/sysv/linux/shmget.c b/sysdeps/unix/sysv/linux/shmget.c
index 73bfe97dc7..d9f5ba036b 100644
--- a/sysdeps/unix/sysv/linux/shmget.c
+++ b/sysdeps/unix/sysv/linux/shmget.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, August 1995.
 
    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
@@ -30,7 +30,7 @@
 int
 shmget (key, size, shmflg)
      key_t key;
-     int size;
+     size_t size;
      int shmflg;
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_shmget, key, size, shmflg, NULL);
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types.h b/sysdeps/unix/sysv/linux/sparc/bits/types.h
index 84073b7564..89b3ad9c07 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/types.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/types.h
@@ -145,6 +145,9 @@ typedef unsigned short int __ipc_pid_t;
 #endif
 
 
+/* Type to represent block size.  */
+typedef long int __blksize_t;
+
 /* Types from the Large File Support interface.  */
 
 /* Type to count number os disk blocks.  */
diff --git a/sysdeps/unix/sysv/sysv4/i386/bits/stat.h b/sysdeps/unix/sysv/sysv4/i386/bits/stat.h
index 104ad2f247..4c6b729579 100644
--- a/sysdeps/unix/sysv/sysv4/i386/bits/stat.h
+++ b/sysdeps/unix/sysv/sysv4/i386/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -51,7 +51,7 @@ struct stat
     long int st_ctime;		/* Time of last status change.  */
     unsigned long int st_ctime_usec;
 
-    long int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal block size for I/O.  */
 #define	_STATBUF_ST_BLKSIZE	/* Tell code we have this member.  */
 
     __blkcnt_t st_blocks;	/* Number of 512-byte blocks allocated.  */
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h b/sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h
index ef93b7be27..34cc328b51 100644
--- a/sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h
+++ b/sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997, 1998, 1999 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
@@ -50,7 +50,7 @@ struct stat
     __time_t st_ctime;		/* Time of last status change.  */
     unsigned long int st_ctime_usec;
 
-    long int st_blksize;	/* Optimal block size for I/O.  */
+    __blksize_t st_blksize;	/* Optimal block size for I/O.  */
 #define	_STATBUF_ST_BLKSIZE	/* Tell code we have this member.  */
 
     __blkcnt_t st_blocks;	/* Number of 512-byte blocks allocated.  */
@@ -81,7 +81,7 @@ struct stat64
     __time_t st_ctime;			/* Time of last status change */
     unsigned long int st_ctime_usec;
 
-    long int st_blksize;
+    __blksize_t st_blksize;
     __blkcnt64_t st_blocks;
     char st_fstype[_ST_FSTYPSZ];
     long int st_filler3[8];
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h b/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h
index 79713e75ba..1e7b50e780 100644
--- a/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h
+++ b/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h
@@ -110,6 +110,9 @@ typedef struct
 typedef unsigned long int __fd_mask;
 
 
+/* Type to represent block size.  */
+typedef long int __blksize_t;
+
 /* Types from the Large File Support interface.  */
 
 /* Type to count number os disk blocks.  */
diff --git a/sysvipc/sys/ipc.h b/sysvipc/sys/ipc.h
index f1ba7ff188..0ec6ed16e0 100644
--- a/sysvipc/sys/ipc.h
+++ b/sysvipc/sys/ipc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1999 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,11 +21,31 @@
 
 #include <features.h>
 
+#if !defined __USE_SVID && !defined __USE_XOPEN && __GNUC__ >= 2
+# warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE"
+#endif
+
 /* Get system dependent definition of `struct ipc_perm' and more.  */
 #include <bits/ipc.h>
 
-#if !defined __USE_SVID && !defined __USE_XOPEN && __GNUC__ >= 2
-# warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE"
+#ifndef __uid_t_defined
+typedef __uid_t uid_t;
+# define __uid_t_defined
+#endif
+
+#ifndef __gid_t_defined
+typedef __gid_t gid_t;
+# define __gid_t_defined
+#endif
+
+#ifndef __mode_t_defined
+typedef __mode_t mode_t;
+# define __mode_t_defined
+#endif
+
+#ifndef __key_t_defined
+typedef __key_t key_t;
+# define __key_t_defined
 #endif
 
 __BEGIN_DECLS
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 56938bf613..5f8f761cca 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1999 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
@@ -52,7 +52,7 @@ extern int msgrcv __P ((int __msqid, void *__msgp, size_t __msgsz,
 			long int __msgtyp, int __msgflg));
 
 /* Send message to message queue.  */
-extern int msgsnd __P ((int __msqid, void *__msgp, size_t __msgsz,
+extern int msgsnd __P ((int __msqid, __const void *__msgp, size_t __msgsz,
 			int __msgflg));
 
 __END_DECLS
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 6ae76e2347..b44194520e 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 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,7 +21,8 @@
 
 #include <features.h>
 
-#include <sys/types.h>
+#define __need_size_t
+#include <stddef.h>
 
 /* Get common definition of System V style IPC.  */
 #include <sys/ipc.h>
@@ -51,7 +52,7 @@ extern int semget __P ((key_t __key, int __nsems, int __semflg));
 
 /* Operate on semaphore.  */
 extern int semop __P ((int __semid, struct sembuf *__sops,
-		       unsigned int __nsops));
+		       size_t __nsops));
 
 __END_DECLS
 
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 47e0f496a2..6dce0a8155 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 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,8 +21,8 @@
 
 #include <features.h>
 
-#include <unistd.h>		/* for `getpagesize' declaration */
-#include <sys/types.h>
+#define __need_size_t
+#include <stddef.h>
 
 /* Get common definition of System V style IPC.  */
 #include <sys/ipc.h>
@@ -33,6 +33,8 @@
 
 /* Segment low boundary address multiple.  */
 #define SHMLBA		(__getpagesize ())
+extern int __getpagesize __P ((void));
+
 
 /* The following System V style IPC functions implement a shared memory
    facility.  The definition is found in XPG4.2.  */
@@ -43,7 +45,7 @@ __BEGIN_DECLS
 extern int shmctl __P ((int __shmid, int __cmd, struct shmid_ds *__buf));
 
 /* Get shared memory segment.  */
-extern int shmget __P ((key_t __key, int __size, int __shmflg));
+extern int shmget __P ((key_t __key, size_t __size, int __shmflg));
 
 /* Attach shared memory segment.  */
 extern void *shmat __P ((int __shmid, __const void *__shmaddr, int __shmflg));