]> granicus.if.org Git - postgresql/commitdiff
Win32:
authorBruce Momjian <bruce@momjian.us>
Fri, 5 Mar 2004 01:11:04 +0000 (01:11 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 5 Mar 2004 01:11:04 +0000 (01:11 +0000)
* 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

src/backend/main/main.c
src/backend/port/dynloader/win32.h
src/backend/postmaster/postmaster.c
src/bin/pg_resetxlog/Makefile

index 685989ecf88ce278d13dfc4400f0320601f2f05b..fe368f591aeda12f8541313d97d0256b29efcafd 100644 (file)
@@ -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
index e08113a79cbee992e1f74e1af56d798a4347cf3d..d2d753c10b3e58638e4c743c89ed4dfba6c7aa6f 100644 (file)
@@ -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 */
index 42ce48d3c286b8f10216faa14655c48ce183b128..3e35bf39399db330f9feb2b346f1503314254c99 100644 (file)
@@ -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;
 }
index 50f9d770472345109812f635c9501fe29baf69db..a5dc48fdfcd39adabccb012ec588b7c1123b7c92 100644 (file)
@@ -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)