summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian2004-03-05 01:11:04 +0000
committerBruce Momjian2004-03-05 01:11:04 +0000
commitd91acf840136f751898378c0ff41d317e993d1a6 (patch)
tree32d74329b5e486e145c90fbdac100e9109356d6c
parent033e37bed14817345a6d8a3eced75005d3b65bbd (diff)
Win32:
* Mostly, casting etc to remove compilation warnings in win32 only code. * main.c: set _IONBF to stdout/stderr under win32 (under win32, _IOLBF defaults to full buffering) * pg_resetxlog/Makefile: ensures dirmod.o gets cleaned (got bitten by this when, after "make clean"ing, switching compilation between Ming + Cygwin) Claudio Natoli
-rw-r--r--src/backend/main/main.c12
-rw-r--r--src/backend/port/dynloader/win32.h5
-rw-r--r--src/backend/postmaster/postmaster.c28
-rw-r--r--src/bin/pg_resetxlog/Makefile4
4 files changed, 31 insertions, 18 deletions
diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index 685989ecf8..fe368f591a 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.74 2004/02/22 21:26:55 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/main/main.c,v 1.75 2004/03/05 01:11:04 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -91,7 +91,14 @@ main(int argc, char *argv[])
#if defined(WIN32)
{
WSADATA wsaData;
- int err = WSAStartup(MAKEWORD(2,2), &wsaData);
+ int err;
+
+ /* Make output streams unbuffered by default */
+ setvbuf(stdout,NULL,_IONBF,0);
+ setvbuf(stderr,NULL,_IONBF,0);
+
+ /* Prepare Winsock */
+ err = WSAStartup(MAKEWORD(2,2), &wsaData);
if (err != 0)
{
fprintf(stderr, "%s: WSAStartup failed: %d\n",
@@ -99,6 +106,7 @@ main(int argc, char *argv[])
exit(1);
}
+ /* Start our win32 signal implementation */
pgwin32_signal_initialize();
}
#endif
diff --git a/src/backend/port/dynloader/win32.h b/src/backend/port/dynloader/win32.h
index e08113a79c..d2d753c10b 100644
--- a/src/backend/port/dynloader/win32.h
+++ b/src/backend/port/dynloader/win32.h
@@ -8,4 +8,9 @@
#define pg_dlclose dlclose
#define pg_dlerror dlerror
+char* dlerror(void);
+int dlclose(void *handle);
+void* dlsym(void *handle, const char *symbol);
+void* dlopen(const char *path, int mode);
+
#endif /* PORT_PROTOS_H */
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 42ce48d3c2..3e35bf3939 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.369 2004/02/25 19:41:22 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.370 2004/03/05 01:11:04 momjian Exp $
*
* NOTES
*
@@ -3525,29 +3525,29 @@ pid_t win32_forkexec(const char* path, char *argv[])
si.cb = sizeof(si);
if (!CreateProcess(NULL,cmdLine,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi))
{
- elog(ERROR,"CreateProcess call failed (%d): %m",GetLastError());
+ elog(ERROR,"CreateProcess call failed (%i): %m",(int)GetLastError());
return -1;
}
if (!IsUnderPostmaster)
/* We are the Postmaster creating a child... */
win32_AddChild(pi.dwProcessId,pi.hProcess);
-
+
if (!DuplicateHandle(GetCurrentProcess(),
pi.hProcess,
GetCurrentProcess(),
&childHandleCopy,
0,
FALSE,
- DUPLICATE_SAME_ACCESS))
+ DUPLICATE_SAME_ACCESS))
ereport(FATAL,
- (errmsg_internal("failed to duplicate child handle: %i",GetLastError())));
+ (errmsg_internal("failed to duplicate child handle: %i",(int)GetLastError())));
waiterThread = CreateThread(NULL, 64*1024, win32_sigchld_waiter, (LPVOID)childHandleCopy, 0, NULL);
if (!waiterThread)
ereport(FATAL,
- (errmsg_internal("failed to create sigchld waiter thread: %i",GetLastError())));
- CloseHandle(waiterThread);
-
+ (errmsg_internal("failed to create sigchld waiter thread: %i",(int)GetLastError())));
+ CloseHandle(waiterThread);
+
if (IsUnderPostmaster)
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
@@ -3600,14 +3600,14 @@ static void win32_RemoveChild(pid_t pid)
/* Something stronger than WARNING here? */
ereport(WARNING,
- (errmsg_internal("unable to find child entry with pid %d",
+ (errmsg_internal("unable to find child entry with pid %lu",
pid)));
}
static pid_t win32_waitpid(int *exitstatus)
{
Assert(win32_childPIDArray && win32_childHNDArray);
- elog(DEBUG3,"waiting on %d children",win32_numChildren);
+ elog(DEBUG3,"waiting on %lu children",win32_numChildren);
if (win32_numChildren > 0)
{
@@ -3623,8 +3623,8 @@ static pid_t win32_waitpid(int *exitstatus)
{
case WAIT_FAILED:
ereport(ERROR,
- (errmsg_internal("failed to wait on %d children: %i",
- win32_numChildren,GetLastError())));
+ (errmsg_internal("failed to wait on %lu children: %i",
+ win32_numChildren,(int)GetLastError())));
/* Fall through to WAIT_TIMEOUTs return */
case WAIT_TIMEOUT:
@@ -3641,7 +3641,7 @@ static pid_t win32_waitpid(int *exitstatus)
* No choice other than to assume a catastrophic failure.
*/
ereport(FATAL,
- (errmsg_internal("failed to get exit code for child %d",
+ (errmsg_internal("failed to get exit code for child %lu",
win32_childPIDArray[index])));
*exitstatus = (int)exitCode;
return win32_childPIDArray[index];
@@ -3661,7 +3661,7 @@ static DWORD WINAPI win32_sigchld_waiter(LPVOID param) {
if (r == WAIT_OBJECT_0)
pg_queue_signal(SIGCHLD);
else
- fprintf(stderr,"ERROR: Failed to wait on child process handle: %i\n",GetLastError());
+ fprintf(stderr,"ERROR: Failed to wait on child process handle: %i\n",(int)GetLastError());
CloseHandle(procHandle);
return 0;
}
diff --git a/src/bin/pg_resetxlog/Makefile b/src/bin/pg_resetxlog/Makefile
index 50f9d77047..a5dc48fdfc 100644
--- a/src/bin/pg_resetxlog/Makefile
+++ b/src/bin/pg_resetxlog/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1998-2002, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/bin/pg_resetxlog/Makefile,v 1.5 2004/02/10 23:24:13 tgl Exp $
+# $PostgreSQL: pgsql/src/bin/pg_resetxlog/Makefile,v 1.6 2004/03/05 01:11:04 momjian Exp $
#
#-------------------------------------------------------------------------
@@ -38,4 +38,4 @@ uninstall:
rm -f $(DESTDIR)$(bindir)/pg_resetxlog$(X)
clean distclean maintainer-clean:
- rm -f pg_resetxlog$(X) pg_resetxlog.o pg_crc.o pg_crc.c dirmod.c
+ rm -f pg_resetxlog$(X) pg_crc.c dirmod.c $(OBJS)