diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index d07f9edaec..6a1ccef8ec 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.138 2004/03/22 04:16:57 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.139 2004/04/19 17:42:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2830,7 +2830,7 @@ StartupXLOG(void)
 	/* This is just to allow attaching to startup process with a debugger */
 #ifdef XLOG_REPLAY_DELAY
 	if (ControlFile->state != DB_SHUTDOWNED)
-		sleep(60);
+		pg_usleep(60000000L);
 #endif
 
 	/*
@@ -3360,7 +3360,7 @@ CreateCheckPoint(bool shutdown, bool force)
 	while (!LWLockConditionalAcquire(CheckpointLock, LW_EXCLUSIVE))
 	{
 		CHECK_FOR_INTERRUPTS();
-		sleep(1);
+		pg_usleep(1000000L);
 	}
 
 	/*
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index 85f49537ef..038db4de70 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.131 2004/02/10 01:55:25 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.132 2004/04/19 17:42:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -64,7 +64,9 @@ createdb(const CreatedbStmt *stmt)
 	char	   *alt_loc;
 	char	   *target_dir;
 	char		src_loc[MAXPGPATH];
+#ifndef WIN32
 	char		buf[2 * MAXPGPATH + 100];
+#endif
 	Oid			src_dboid;
 	AclId		src_owner;
 	int			src_encoding;
diff --git a/src/backend/libpq/md5.c b/src/backend/libpq/md5.c
index 4c194dde05..b9a11cbf5c 100644
--- a/src/backend/libpq/md5.c
+++ b/src/backend/libpq/md5.c
@@ -14,7 +14,7 @@
  *	Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/libpq/md5.c,v 1.23 2004/03/24 03:44:58 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/libpq/md5.c,v 1.24 2004/04/19 17:42:57 momjian Exp $
  */
 
 
@@ -33,9 +33,7 @@
 
 #ifdef FRONTEND
 #include "postgres_fe.h"
-#ifndef WIN32
 #include "libpq/crypt.h"
-#endif   /* WIN32 */
 #endif   /* FRONTEND */
 
 #ifdef MD5_ODBC
diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index b255757218..b0b394fe8b 100644
--- a/src/backend/main/main.c
+++ b/src/backend/main/main.c
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/main/main.c,v 1.76 2004/03/15 16:14:26 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/main/main.c,v 1.77 2004/04/19 17:42:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -50,7 +50,9 @@ int
 main(int argc, char *argv[])
 {
 	int			len;
+#ifndef WIN32
 	struct passwd *pw;
+#endif
 	char	   *pw_name_persist;
 
 	/*
diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c
index 72d693f5f2..1c03fe4866 100644
--- a/src/backend/port/sysv_shmem.c
+++ b/src/backend/port/sysv_shmem.c
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/port/sysv_shmem.c,v 1.32 2004/02/25 19:41:22 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/port/sysv_shmem.c,v 1.33 2004/04/19 17:42:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -259,7 +259,7 @@ PGSharedMemoryCreate(uint32 size, bool makePrivate, int port)
 		PGSharedMemoryDetach();
 		UsedShmemSegAddr = origUsedShmemSegAddr;
 #endif
-		elog(DEBUG3,"Attaching to %x",UsedShmemSegAddr);
+		elog(DEBUG3,"Attaching to %p",UsedShmemSegAddr);
 		hdr = PGSharedMemoryAttach((IpcMemoryKey) UsedShmemSegID, &shmid);
 		if (hdr == NULL)
 			elog(FATAL, "could not attach to proper memory at fixed address: shmget(key=%d, addr=%p) failed: %m",
diff --git a/src/backend/port/win32/shmem.c b/src/backend/port/win32/shmem.c
index 7992268438..89bcadc8cd 100644
--- a/src/backend/port/win32/shmem.c
+++ b/src/backend/port/win32/shmem.c
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/port/win32/shmem.c,v 1.4 2004/02/12 20:37:34 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/port/win32/shmem.c,v 1.5 2004/04/19 17:42:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -22,7 +22,7 @@ static DWORD s_segsize = 0;
 int
 shmdt(const void *shmaddr)
 {
-	if (UnmapViewOfFile(shmaddr))
+	if (UnmapViewOfFile((LPCVOID*)shmaddr))
 		return 0;
 	else
 		return -1;
diff --git a/src/backend/port/win32/timer.c b/src/backend/port/win32/timer.c
index 8202efe3c4..b905799875 100644
--- a/src/backend/port/win32/timer.c
+++ b/src/backend/port/win32/timer.c
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/port/win32/timer.c,v 1.1 2004/02/18 16:25:12 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/port/win32/timer.c,v 1.2 2004/04/19 17:42:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -43,9 +43,9 @@ int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue
 		timerHandle = CreateWaitableTimer(NULL, TRUE, NULL);
 		if (timerHandle == NULL)
 			ereport(FATAL,
-					(errmsg_internal("failed to create waitable timer: %i",GetLastError())));
+					(errmsg_internal("failed to create waitable timer: %i",(int)GetLastError())));
 	}
-	
+
 	if (value->it_value.tv_sec == 0 &&
 		value->it_value.tv_usec == 0) {
 		/* Turn timer off */
@@ -55,11 +55,11 @@ int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue
 
 	/* Negative time to SetWaitableTimer means relative time */
 	dueTime.QuadPart = -(value->it_value.tv_usec*10 + value->it_value.tv_sec*10000000L);
-	
+
 	/* Turn timer on, or change timer */
-	if (!SetWaitableTimer(timerHandle, &dueTime, 0, timer_completion, NULL, FALSE)) 
+	if (!SetWaitableTimer(timerHandle, &dueTime, 0, timer_completion, NULL, FALSE))
 		ereport(FATAL,
-				(errmsg_internal("failed to set waitable timer: %i",GetLastError())));
+				(errmsg_internal("failed to set waitable timer: %i",(int)GetLastError())));
 
 	return 0;
 }
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 87c9d09fcd..1267acbbcb 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -13,7 +13,7 @@
  *
  *	Copyright (c) 2001-2003, PostgreSQL Global Development Group
  *
- *	$PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.66 2004/04/12 16:19:18 momjian Exp $
+ *	$PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.67 2004/04/19 17:42:58 momjian Exp $
  * ----------
  */
 #include "postgres.h"
@@ -1730,13 +1730,6 @@ pgstat_mainChild(PGSTAT_FORK_ARGS)
 				{
 					if (errno == EINTR)
 						continue;
-#ifdef WIN32
-					if (WSAGetLastError() == WSAECONNRESET) /* EOF on the pipe! (win32 socket based implementation) */
-					{
-						pipeEOF = true;
-						break;
-					}
-#endif
 					ereport(LOG,
 							(errcode_for_socket_access(),
 							 errmsg("could not read from statistics collector pipe: %m")));
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 6876044a6a..3cbd40f3db 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.380 2004/04/12 16:19:18 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.381 2004/04/19 17:42:58 momjian Exp $
  *
  * NOTES
  *
@@ -314,8 +314,6 @@ static unsigned long tmpBackendFileNum = 0;
 void read_backend_variables(unsigned long id, Port *port);
 static bool write_backend_variables(Port *port);
 
-size_t 		ShmemBackendArraySize(void);
-void 		ShmemBackendArrayAllocation(void);
 static void	ShmemBackendArrayAdd(Backend *bn);
 static void ShmemBackendArrayRemove(pid_t pid);
 #endif
@@ -2561,7 +2559,7 @@ BackendRun(Port *port)
 	 * PGOPTIONS, but it is not honored until after authentication.)
 	 */
 	if (PreAuthDelay > 0)
-		sleep(PreAuthDelay);
+		pg_usleep(PreAuthDelay*1000000L);
 
 	/* Will exit on failure */
 	BackendInit(port);
@@ -3455,8 +3453,8 @@ static void ShmemBackendArrayAdd(Backend *bn)
 		}
 	}
 
-	/* FIXME: [fork/exec] some sort of error */
-	abort();
+	ereport(FATAL,
+			(errmsg_internal("unable to add backend entry")));
 }
 
 static void ShmemBackendArrayRemove(pid_t pid)
@@ -3472,7 +3470,6 @@ static void ShmemBackendArrayRemove(pid_t pid)
 		}
 	}
 
-	/* Something stronger than WARNING here? */
 	ereport(WARNING,
 			(errmsg_internal("unable to find backend entry with pid %d",
 							 pid)));
@@ -3565,8 +3562,9 @@ static void win32_AddChild(pid_t pid, HANDLE handle)
 		++win32_numChildren;
 	}
 	else
-		/* FIXME: [fork/exec] some sort of error */
-		abort();
+		ereport(FATAL,
+				(errmsg_internal("unable to add child entry with pid %lu",
+								 pid)));
 }
 
 static void win32_RemoveChild(pid_t pid)
@@ -3588,7 +3586,6 @@ static void win32_RemoveChild(pid_t pid)
 		}
 	}
 
-	/* Something stronger than WARNING here? */
 	ereport(WARNING,
 			(errmsg_internal("unable to find child entry with pid %lu",
 							 pid)));
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index 7d27b9bde9..2122a24320 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/storage/smgr/md.c,v 1.103 2004/02/11 22:55:25 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/storage/smgr/md.c,v 1.104 2004/04/19 17:42:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -607,7 +607,7 @@ mdsync(void)
 {
 	sync();
 	if (IsUnderPostmaster)
-		sleep(2);
+		pg_usleep(2000000L);
 	sync();
 	return true;
 }
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 09fc57b6ea..1affe7d49b 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.399 2004/04/11 00:54:44 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.400 2004/04/19 17:42:58 momjian Exp $
  *
  * NOTES
  *	  this is the "main" module of the postgres backend and
@@ -2456,7 +2456,7 @@ PostgresMain(int argc, char *argv[], const char *username)
 				/*
 				 * wait N seconds to allow attach from a debugger
 				 */
-				sleep(atoi(optarg));
+				pg_usleep(atoi(optarg)*1000000L);
 				break;
 
 			case 'x':
diff --git a/src/backend/utils/error/assert.c b/src/backend/utils/error/assert.c
index afd30b081f..f35636e9fe 100644
--- a/src/backend/utils/error/assert.c
+++ b/src/backend/utils/error/assert.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/error/assert.c,v 1.25 2003/11/29 19:52:01 pgsql Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/error/assert.c,v 1.26 2004/04/19 17:42:58 momjian Exp $
  *
  * NOTE
  *	  This should eventually work with elog()
@@ -40,7 +40,11 @@ ExceptionalCondition(char *conditionName,
 	}
 
 #ifdef SLEEP_ON_ASSERT
-	sleep(1000000);
+	/*
+	 *	It would be nice to use pg_usleep() here, but only does 2000 sec
+	 *	or 33 minutes, which seems too short.
+	 */	 
+	sleep(1000000);	
 #endif
 
 	abort();
diff --git a/src/backend/utils/hash/dynahash.c b/src/backend/utils/hash/dynahash.c
index c58359ccb8..e72800f3a7 100644
--- a/src/backend/utils/hash/dynahash.c
+++ b/src/backend/utils/hash/dynahash.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/hash/dynahash.c,v 1.50 2003/12/29 23:54:22 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/hash/dynahash.c,v 1.51 2004/04/19 17:42:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -85,6 +85,7 @@ DynaHashAlloc(Size size)
 }
 
 #define MEM_ALLOC		DynaHashAlloc
+#undef 	MEM_FREE	/* already in windows header files */
 #define MEM_FREE		pfree
 
 
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index 075269b4ad..75cc07a518 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.123 2004/02/10 01:55:26 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.124 2004/04/19 17:42:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -213,11 +213,11 @@ SetDataDir(const char *dir)
 	 * generating funny-looking paths to individual files.
 	 */
 	newlen = strlen(new);
-	if (newlen > 1 && new[newlen - 1] == '/'
+	if (newlen > 1 && (new[newlen - 1] == '/'
 #ifdef WIN32
 		|| new[newlen - 1] == '\\'
 #endif
-		)
+		))
 		new[newlen - 1] = '\0';
 
 	if (DataDir)
diff --git a/src/bin/psql/common.h b/src/bin/psql/common.h
index 43045240c2..99510dcb8c 100644
--- a/src/bin/psql/common.h
+++ b/src/bin/psql/common.h
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/common.h,v 1.34 2004/01/25 03:07:22 neilc Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/common.h,v 1.35 2004/04/19 17:42:58 momjian Exp $
  */
 #ifndef COMMON_H
 #define COMMON_H
@@ -60,12 +60,6 @@ extern const char *session_username(void);
  */
 extern char parse_char(char **buf);
 
-/* Used for all Win32 popen/pclose calls */
-#ifdef WIN32
-#define popen(x,y) _popen(x,y)
-#define pclose(x) _pclose(x)
-#endif
-
 extern char *expand_tilde(char **filename);
 
 #endif   /* COMMON_H */
diff --git a/src/bin/psql/copy.c b/src/bin/psql/copy.c
index e01afb8214..0241b8eda2 100644
--- a/src/bin/psql/copy.c
+++ b/src/bin/psql/copy.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.44 2004/04/19 17:22:31 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.45 2004/04/19 17:42:58 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "copy.h"
@@ -26,7 +26,7 @@
 #include "prompt.h"
 #include "stringutils.h"
 
-#ifdef WIN32
+#if defined(WIN32) && (!defined(__MINGW32__))
 #define strcasecmp(x,y) stricmp(x,y)
 #define __S_ISTYPE(mode, mask)	(((mode) & S_IFMT) == (mask))
 #define S_ISDIR(mode)	 __S_ISTYPE((mode), S_IFDIR)
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
index 4991c7b745..3d321b7992 100644
--- a/src/bin/psql/startup.c
+++ b/src/bin/psql/startup.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.87 2004/03/24 03:10:29 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.88 2004/04/19 17:42:58 momjian Exp $
  */
 #include "postgres_fe.h"
 
@@ -573,8 +573,8 @@ process_psqlrc(void)
 	char	   *psqlrc;
 	char	   *home;
 
-#ifdef WIN32
-#define R_OK 0
+#if defined(WIN32) && (!defined(__MINGW32__))
+#define R_OK 4
 #endif
 
 	/* Look for one in the home dir */
diff --git a/src/bin/scripts/common.c b/src/bin/scripts/common.c
index 63204ece3d..f14e0b206e 100644
--- a/src/bin/scripts/common.c
+++ b/src/bin/scripts/common.c
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/common.c,v 1.6 2003/11/29 19:52:07 pgsql Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/common.c,v 1.7 2004/04/19 17:42:59 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -35,10 +35,15 @@ get_user_name(const char *progname)
 	return pw->pw_name;
 #else
 	static char username[128];	/* remains after function exit */
+	DWORD len = sizeof(username)-1;
 
-	GetUserName(username, sizeof(username)-1);
+	if (!GetUserName(username, &len))
+	{
+		perror(progname);
+		exit(1);
+	}
 	return username;
-#endif	
+#endif
 }
 
 
diff --git a/src/include/port.h b/src/include/port.h
index e539d1f25d..93b549503f 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/port.h,v 1.24 2004/04/05 03:16:21 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/port.h,v 1.25 2004/04/19 17:42:59 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -48,7 +48,7 @@ extern off_t ftello(FILE *stream);
 #define pipewrite(a,b,c)	write(a,b,c)
 #else
 extern int pgpipe(int handles[2]);
-#define piperead(a,b,c)		recv(a,b,c,0)
+extern int piperead(int s, char* buf, int len);
 #define pipewrite(a,b,c)	send(a,b,c,0)
 #endif
 
@@ -70,6 +70,11 @@ extern int	win32_open(const char*,int,...);
 #define 	open(a,b,...)	win32_open(a,b,##__VA_ARGS__)
 #endif
 
+#ifndef __BORLANDC__
+#define popen(a,b) _popen(a,b)
+#define pclose(a) _pclose(a)
+#endif
+
 extern int	copydir(char *fromdir, char *todir);
 
 /* Missing rand functions */
diff --git a/src/include/port/win32.h b/src/include/port/win32.h
index d1e55725b9..fb91e66468 100644
--- a/src/include/port/win32.h
+++ b/src/include/port/win32.h
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.21 2004/04/12 16:19:18 momjian Exp $ */
+/* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.22 2004/04/19 17:42:59 momjian Exp $ */
 
 /* undefine and redefine after #include */
 #undef mkdir
@@ -6,6 +6,7 @@
 #undef ERROR
 #include <windows.h>
 #include <winsock.h>
+#include <process.h>
 #undef near
 
 /* Must be here to avoid conflicting with prototype in windows.h */
@@ -192,14 +193,6 @@ int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue
  */
 #define lstat slat
 
-#define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
-#define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
-
-#define S_IRUSR _S_IREAD
-#define S_IWUSR _S_IWRITE
-#define S_IXUSR _S_IEXEC
-#define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
-
 /*
  * Supplement to <errno.h>.
  */
diff --git a/src/include/storage/ipc.h b/src/include/storage/ipc.h
index 899198447f..3dcfe41bfc 100644
--- a/src/include/storage/ipc.h
+++ b/src/include/storage/ipc.h
@@ -11,7 +11,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/storage/ipc.h,v 1.65 2004/02/25 19:41:23 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/storage/ipc.h,v 1.66 2004/04/19 17:42:59 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -32,4 +32,11 @@ extern void on_exit_reset(void);
 extern void CreateSharedMemoryAndSemaphores(bool makePrivate,
 											int maxBackends,
 											int port);
+
+#ifdef EXEC_BACKEND
+/* postmaster.c */
+extern size_t	ShmemBackendArraySize(void);
+extern void		ShmemBackendArrayAllocation(void);
+#endif
+
 #endif   /* IPC_H */
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
index f9031e79b2..3842fe6e13 100644
--- a/src/interfaces/libpq/Makefile
+++ b/src/interfaces/libpq/Makefile
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1994, Regents of the University of California
 #
-# $PostgreSQL: pgsql/src/interfaces/libpq/Makefile,v 1.100 2004/03/24 03:54:16 momjian Exp $
+# $PostgreSQL: pgsql/src/interfaces/libpq/Makefile,v 1.101 2004/04/19 17:42:59 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -78,4 +78,4 @@ uninstall: uninstall-lib
 	rm -f $(DESTDIR)$(includedir)/libpq-fe.h $(DESTDIR)$(includedir_internal)/libpq-int.h $(DESTDIR)$(includedir_internal)/pqexpbuffer.h
 
 clean distclean maintainer-clean: clean-lib
-	rm -f $(OBJS) crypt.c getaddrinfo.c inet_aton.c noblock.c snprintf.c strerror.c path.c thread.c dllist.c md5.c ip.c encnames.c wchar.c
+	rm -f $(OBJS) crypt.c getaddrinfo.c inet_aton.c noblock.c snprintf.c strerror.c open.c path.c thread.c dllist.c md5.c ip.c encnames.c wchar.c
diff --git a/src/interfaces/libpq/fe-print.c b/src/interfaces/libpq/fe-print.c
index 9afa1294e6..64b53fda3a 100644
--- a/src/interfaces/libpq/fe-print.c
+++ b/src/interfaces/libpq/fe-print.c
@@ -10,7 +10,7 @@
  * didn't really belong there.
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/interfaces/libpq/fe-print.c,v 1.50 2004/01/09 02:02:43 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/interfaces/libpq/fe-print.c,v 1.51 2004/04/19 17:42:59 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -183,11 +183,7 @@ PQprint(FILE *fout,
 				  - (po->header != 0) * 2		/* row count and newline */
 				  )))
 			{
-#ifdef WIN32
-				fout = _popen(pagerenv, "w");
-#else
 				fout = popen(pagerenv, "w");
-#endif
 				if (fout)
 				{
 					usePipe = 1;
diff --git a/src/interfaces/libpq/win32.c b/src/interfaces/libpq/win32.c
index 96097bca59..c0bdf58ffd 100644
--- a/src/interfaces/libpq/win32.c
+++ b/src/interfaces/libpq/win32.c
@@ -309,14 +309,14 @@ winsock_strerror(int err, char *strerrbuf, size_t buflen)
 	}
 
 	if (!success)
-		sprintf(strerrbuf, "Unknown socket error (0x%08X/%lu)", err, err);
+		sprintf(strerrbuf, "Unknown socket error (0x%08X/%i)", err, err);
 	else
 	{
 		strerrbuf[buflen - 1] = '\0';
 		offs = strlen(strerrbuf);
 		if (offs > (int)buflen - 64)
 			offs = buflen - 64;
-		sprintf(strerrbuf + offs, " (0x%08X/%lu)", err, err);
+		sprintf(strerrbuf + offs, " (0x%08X/%i)", err, err);
 	}
 	return strerrbuf;
 }
diff --git a/src/interfaces/libpq/win32.h b/src/interfaces/libpq/win32.h
index 9d4557fc0d..350b350b48 100644
--- a/src/interfaces/libpq/win32.h
+++ b/src/interfaces/libpq/win32.h
@@ -22,8 +22,6 @@
 #define write(a,b,c) _write(a,b,c)
 #endif
 
-#define popen(a,b) _popen(a,b)
-#define pclose(a) _pclose(a)
 #define vsnprintf(a,b,c,d) _vsnprintf(a,b,c,d)
 #define snprintf _snprintf
 
diff --git a/src/port/open.c b/src/port/open.c
index ccd2a15b1d..627922b600 100644
--- a/src/port/open.c
+++ b/src/port/open.c
@@ -6,7 +6,7 @@
  *
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/port/open.c,v 1.1 2004/03/24 03:54:16 momjian Exp $
+ * $PostgreSQL: pgsql/src/port/open.c,v 1.2 2004/04/19 17:42:59 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -18,7 +18,8 @@
 #include <errno.h>
 #include <assert.h>
 
-int openFlagsToCreateFileFlags(int openFlags)
+static int
+openFlagsToCreateFileFlags(int openFlags)
 {
 	switch (openFlags & (O_CREAT|O_TRUNC|O_EXCL))
 	{
diff --git a/src/port/pipe.c b/src/port/pipe.c
index fe94c09111..4a707f7335 100644
--- a/src/port/pipe.c
+++ b/src/port/pipe.c
@@ -10,7 +10,7 @@
  *	must be replaced with recv/send.
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/port/pipe.c,v 1.1 2004/01/09 04:58:09 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/port/pipe.c,v 1.2 2004/04/19 17:42:59 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,3 +53,13 @@ pgpipe(int handles[2])
 	closesocket(s);
 	return 0;
 }
+
+
+int piperead(int s, char* buf, int len)
+{
+	int ret = recv(s,buf,len,0);
+	if (ret < 0 && WSAGetLastError() == WSAECONNRESET)
+		/* EOF on the pipe! (win32 socket based implementation) */
+		ret = 0;
+	return ret;
+}
diff --git a/src/port/rand.c b/src/port/rand.c
index faeec88b28..7fc3094dec 100644
--- a/src/port/rand.c
+++ b/src/port/rand.c
@@ -5,6 +5,7 @@
  *
  *-------------------------------------------------------------------------
  */
+#include "c.h"
 
 /*
  * Copyright (c) 1993 Martin Birgmeier
@@ -38,7 +39,7 @@ unsigned short _rand48_mult[3] = {
 };
 unsigned short _rand48_add = RAND48_ADD;
 
-void
+static void
 _dorand48(unsigned short xseed[3])
 {
 	unsigned long accu;
diff --git a/src/port/sprompt.c b/src/port/sprompt.c
index e771b5ebbc..664d4bc606 100644
--- a/src/port/sprompt.c
+++ b/src/port/sprompt.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/port/sprompt.c,v 1.4 2003/11/29 19:52:13 pgsql Exp $
+ *	  $PostgreSQL: pgsql/src/port/sprompt.c,v 1.5 2004/04/19 17:42:59 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -54,8 +54,8 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
 
 #else
 #ifdef WIN32
-	HANDLE		t;
-	LPDWORD		t_orig;
+	HANDLE		t = NULL;
+	LPDWORD		t_orig	= NULL;
 #endif
 #endif