diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 9762a856ff5fb587a90c8152fba6b870048d969e..9de258f88ae812f3b89209fb81de9ef66d54718e 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -42,7 +42,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/initdb/initdb.c,v 1.8 2003/11/14 17:19:35 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/initdb/initdb.c,v 1.9 2003/11/14 17:30:41 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -204,22 +204,24 @@ static void *xmalloc(size_t);
 
 #define PG_CMD_OPEN \
 do { \
-		  pg = popen(cmd,PG_BINARY_W); \
-		  if (pg == NULL)  \
-			exit_nicely(); \
+	fflush(stdout); \
+	fflush(stderr); \
+	pg = popen(cmd, PG_BINARY_W); \
+	if (pg == NULL) \
+		exit_nicely(); \
 } while (0)
 
 #define PG_CMD_CLOSE \
 do { \
-		 if ((pclose(pg) >> 8) & 0xff) \
-			exit_nicely(); \
+	if ((pclose(pg) >> 8) & 0xff) \
+		exit_nicely(); \
 } while (0)
 
 #define PG_CMD_PUTLINE \
 do { \
-		 if (fputs(*line, pg) < 0) \
-		   exit_nicely(); \
-		 fflush(pg); \
+	if (fputs(*line, pg) < 0) \
+		exit_nicely(); \
+	fflush(pg); \
 } while (0)
 
 #ifndef WIN32
@@ -862,6 +864,10 @@ find_postgres(char *path)
 
 	snprintf(cmd, sizeof(cmd), "\"%s/postgres\" -V 2>%s", path, DEVNULL);
 
+	/* flush output buffers in case popen does not... */
+	fflush(stdout);
+	fflush(stderr);
+
 	if ((pgver = popen(cmd, "r")) == NULL)
 		return FIND_EXEC_ERR;