Index: win32.mak =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/libpq/win32.mak,v retrieving revision 1.23 diff -u -r1.23 win32.mak --- win32.mak 3 Jun 2004 00:11:13 -0000 1.23 +++ win32.mak 4 Jun 2004 13:26:39 -0000 @@ -74,19 +74,25 @@ -@erase "$(OUTDIR)\$(OUTFILENAME)dll.lib" -@erase "$(INTDIR)\wchar.obj" -@erase "$(INTDIR)\encnames.obj" + -@erase "$(INTDIR)\pthread-win32.obj" -config: ..\..\include\pg_config.h +config: ..\..\include\pg_config.h pthread.h pg_config_paths.h ..\..\include\pg_config.h: ..\..\include\pg_config.h.win32 copy ..\..\include\pg_config.h.win32 ..\..\include\pg_config.h +pthread.h: pthread.h.win32 + copy pthread.h.win32 pthread.h + +pg_config_paths.h: win32.mak + echo #define SYSCONFDIR "" >pg_config_paths.h "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" -CPP_PROJ=/nologo /W3 /GX $(OPT) /I "..\..\include" /D "FRONTEND" $(DEBUGDEF) /D\ +CPP_PROJ=/nologo /W3 /GX $(OPT) /I "..\..\include" /I. /D "FRONTEND" $(DEBUGDEF) /D\ "WIN32" /D "_WINDOWS" /Fp"$(INTDIR)\libpq.pch" /YX\ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c /D "HAVE_VSNPRINTF" /D "HAVE_STRDUP" @@ -95,6 +101,10 @@ SSL_LIBS=ssleay32.lib libeay32.lib gdi32.lib !ENDIF +!IFDEF ENABLE_THREAD_SAFETY +CPP_PROJ=$(CPP_PROJ) /D ENABLE_THREAD_SAFETY +!ENDIF + CPP_SBRS=. LIB32=link.exe -lib @@ -121,7 +131,8 @@ "$(INTDIR)\fe-secure.obj" \ "$(INTDIR)\pqexpbuffer.obj" \ "$(INTDIR)\wchar.obj" \ - "$(INTDIR)\encnames.obj" + "$(INTDIR)\encnames.obj" \ + "$(INTDIR)\pthread-win32.obj" RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res" Index: fe-connect.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/libpq/fe-connect.c,v retrieving revision 1.272 diff -u -r1.272 fe-connect.c --- fe-connect.c 3 Jun 2004 00:07:38 -0000 1.272 +++ fe-connect.c 4 Jun 2004 13:26:43 -0000 @@ -882,11 +882,13 @@ const char *node = NULL; int ret; #ifdef ENABLE_THREAD_SAFETY +#ifndef WIN32 static pthread_once_t check_sigpipe_once = PTHREAD_ONCE_INIT; /* Check only on first connection request */ pthread_once(&check_sigpipe_once, check_sigpipe_handler); #endif +#endif if (!conn) return 0; @@ -3187,7 +3189,13 @@ default_threadlock(int acquire) { #ifdef ENABLE_THREAD_SAFETY - static pthread_mutex_t singlethread_lock = PTHREAD_MUTEX_INITIALIZER; + static pthread_mutex_t singlethread_lock; + static int mutex_initialized = 0; + if (!mutex_initialized) + { + mutex_initialized = 1; + pthread_mutex_init(&singlethread_lock, NULL); + } if (acquire) pthread_mutex_lock(&singlethread_lock); else Index: fe-secure.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/libpq/fe-secure.c,v retrieving revision 1.41 diff -u -r1.41 fe-secure.c --- fe-secure.c 3 Jun 2004 00:13:19 -0000 1.41 +++ fe-secure.c 4 Jun 2004 13:26:45 -0000 @@ -864,8 +864,13 @@ init_ssl_system(PGconn *conn) { #ifdef ENABLE_THREAD_SAFETY -static pthread_mutex_t init_mutex = PTHREAD_MUTEX_INITIALIZER; - + static pthread_mutex_t init_mutex; + static int mutex_initialized = 0; + if (!mutex_initialized) + { + mutex_initialized = 1; + pthread_mutex_init(&init_mutex, NULL); + } pthread_mutex_lock(&init_mutex); if (pq_initssllib && pq_lockarray == NULL) { @@ -1171,6 +1176,7 @@ #ifdef ENABLE_THREAD_SAFETY +#ifndef WIN32 /* * Check SIGPIPE handler and perhaps install our own. */ @@ -1210,6 +1216,7 @@ if (!PQinSend()) exit(128 + SIGPIPE); /* typical return value for SIG_DFL */ } +#endif #endif /*