diff --git a/libio/ChangeLog b/libio/ChangeLog
index b05db013c2f117695bc17b4d6346eb9fb6590a98..798a5d3c890fd0034df935a95d53b52f1eeb3f6e 100644
--- a/libio/ChangeLog
+++ b/libio/ChangeLog
@@ -1,3 +1,12 @@
+Mon Apr 12 19:22:44 1999  Mumit Khan  <khan@xraylith.wisc.edu>
+
+	* filedoalloc.c (_POSIX_SOURCE): Remove definition.
+	* fileops.c (_POSIX_SOURCE): Likewise.
+	* iopopen.c (_POSIX_SOURCE): Likewise.
+	* procbuf.cc (_POSIX_SOURCE): Likewise.
+	* libioP.h (_POSIX_SOURCE): And define it here.
+	* stdiostream.cc: Include libioP.h before others.
+
 Fri Apr  2 15:11:58 1999  H.J. Lu  (hjl@gnu.org)
 
 	* libio/configure.in (gxx_include_dir): Handle it.
diff --git a/libio/filedoalloc.c b/libio/filedoalloc.c
index 5c62280c14bb5af54454a009c0c33e90b80423dc..52b554400c21403c24d876cecea1e4ca8afb6e09 100644
--- a/libio/filedoalloc.c
+++ b/libio/filedoalloc.c
@@ -42,9 +42,6 @@
 
 /* Modified for GNU iostream by Per Bothner 1991, 1992. */
 
-#ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE
-#endif
 #include "libioP.h"
 #include <sys/types.h>
 #include <sys/stat.h>
diff --git a/libio/fileops.c b/libio/fileops.c
index c4406340704b3d7c8ab0aa74f68ce8b279976144..54e13d3f18feaab37a847ebe80ef3cfe03b80cc2 100644
--- a/libio/fileops.c
+++ b/libio/fileops.c
@@ -25,9 +25,6 @@
    General Public License.  */
 
 
-#ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE
-#endif
 #include "libioP.h"
 #include <fcntl.h>
 #include <sys/types.h>
diff --git a/libio/iopopen.c b/libio/iopopen.c
index 59d4fc3f0ed2f3603712cbc2c0ac7dfd44c8805f..58f97495c11b806ce7fa9d125468867100dc0b7d 100644
--- a/libio/iopopen.c
+++ b/libio/iopopen.c
@@ -24,9 +24,6 @@
    other reasons why the executable file might be covered by the GNU
    General Public License.  */
 
-#ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE
-#endif
 #include "libioP.h"
 #if _IO_HAVE_SYS_WAIT
 #include <signal.h>
diff --git a/libio/libioP.h b/libio/libioP.h
index d41c46619f0ac491133f15930b63ef788ef61988..36fa1e007ded23d4dfab05f94c34050cc8ed18c5 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -23,6 +23,10 @@
    other reasons why the executable file might be covered by the GNU
    General Public License.  */
 
+#ifndef _POSIX_SOURCE
+# define _POSIX_SOURCE
+#endif
+
 #include <errno.h>
 #ifndef __set_errno
 # define __set_errno(Val) errno = (Val)
diff --git a/libio/procbuf.cc b/libio/procbuf.cc
index 1c79ce4ce0f78a9d08e5bb70b30f7c904b1b82e1..eb6d50e7797f896817a704e1f479a4424bd91285 100644
--- a/libio/procbuf.cc
+++ b/libio/procbuf.cc
@@ -28,7 +28,6 @@ the executable file might be covered by the GNU General Public License. */
 #pragma implementation
 #endif
 
-#define _POSIX_SOURCE
 #include "libioP.h"
 #include "procbuf.h"
 
diff --git a/libio/stdiostream.cc b/libio/stdiostream.cc
index bc9bef08ab6736af7fb3a2bc1da34c1633c5d146..ee0907b209f4ba90632a70d5c29613bd26e53e60 100644
--- a/libio/stdiostream.cc
+++ b/libio/stdiostream.cc
@@ -28,8 +28,8 @@ the executable file might be covered by the GNU General Public License. */
 #pragma implementation
 #endif
 
-#include <stdiostream.h>
 #include "libioP.h"
+#include <stdiostream.h>
 
 // A stdiobuf is "tied" to a FILE object (as used by the stdio package).
 // Thus a stdiobuf is always synchronized with the corresponding FILE,