diff options
author | Bruce Momjian | 2006-07-06 02:12:32 +0000 |
---|---|---|
committer | Bruce Momjian | 2006-07-06 02:12:32 +0000 |
commit | 9368e2518bf4ba4c70daede41f4afc7316512440 (patch) | |
tree | bae53316d789c9ae4b8fc28fa366d2e1452c7f94 | |
parent | acef8b387ccdd161d9aaa78e05cf2c8e19c2471c (diff) |
WIN32 fixes:
I take out patch for this as a promise. This is client-build support of
MS-VC6+.
Fix for different getaddrinfo structure ordering on Win32 for IPv6.
Hiroshi Saito
-rw-r--r-- | src/bin/pg_config/win32.mak | 8 | ||||
-rw-r--r-- | src/bin/pg_dump/win32.mak | 12 | ||||
-rw-r--r-- | src/include/getaddrinfo.h | 21 | ||||
-rw-r--r-- | src/include/pg_config.h.win32 | 10 | ||||
-rw-r--r-- | src/port/thread.c | 4 | ||||
-rw-r--r-- | src/win32.mak | 1 |
6 files changed, 53 insertions, 3 deletions
diff --git a/src/bin/pg_config/win32.mak b/src/bin/pg_config/win32.mak index 77726a2dfc..1a7597dfa9 100644 --- a/src/bin/pg_config/win32.mak +++ b/src/bin/pg_config/win32.mak @@ -48,7 +48,7 @@ CLEAN : CPP_PROJ=/nologo $(OPT) /W3 /GX /D "WIN32" $(DEBUGDEF) /D "_CONSOLE" /D\ "_MBCS" /Fp"$(INTDIR)\pg_config.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c \ /I ..\..\include /I ..\..\interfaces\libpq /I ..\..\include\port\win32 \ - /D "HAVE_STRDUP" /D "FRONTEND" + /I ..\..\include\port\win32_msvc /D "HAVE_STRDUP" /D "FRONTEND" CPP_OBJS=$(INTDIR)/ CPP_SBRS=. @@ -63,6 +63,7 @@ LINK32_OBJS= \ "$(INTDIR)\pgstrcasecmp.obj" \ "$(OUTDIR)\path.obj" \ "$(INTDIR)\exec.obj" \ + "$(INTDIR)\snprintf.obj" \ !IFDEF DEBUG "..\..\interfaces\libpq\Debug\libpqddll.lib" !ELSE @@ -89,6 +90,11 @@ LINK32_OBJS= \ $(CPP_PROJ) ..\..\port\exec.c << +"$(INTDIR)\snprintf.obj" : ..\..\port\snprintf.c + $(CPP) @<< + $(CPP_PROJ) ..\..\port\snprintf.c +<< + .c{$(CPP_OBJS)}.obj:: $(CPP) @<< $(CPP_PROJ) $< diff --git a/src/bin/pg_dump/win32.mak b/src/bin/pg_dump/win32.mak index 653fefe32c..f89e181fa2 100644 --- a/src/bin/pg_dump/win32.mak +++ b/src/bin/pg_dump/win32.mak @@ -30,7 +30,8 @@ REFDOCDIR= ../../../doc/src/sgml/ref CPP_PROJ=/nologo $(OPT) /W3 /GX /D "WIN32" $(DEBUGDEF) /D "_CONSOLE" /D\ "_MBCS" /Fp"$(INTDIR)\pg_dump.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c \ - /I ..\..\include /I ..\..\interfaces\libpq /I ..\..\include\port\win32 /I ..\..\backend \ + /I ..\..\include /I ..\..\interfaces\libpq /I ..\..\include\port\win32 \ + /I ..\..\include\port\win32_msvc /I ..\..\backend \ /D "HAVE_STRDUP" /D "FRONTEND" CPP_OBJS=$(INTDIR)/ @@ -56,6 +57,7 @@ CLEAN : -@erase "$(INTDIR)\path.obj" -@erase "$(INTDIR)\pgstrcasecmp.obj" -@erase "$(INTDIR)\sprompt.obj" + -@erase "$(INTDIR)\snprintf.obj" -@erase "$(INTDIR)\pg_dump.pch" -@erase "$(OUTDIR)\pg_dump.obj" -@erase "$(OUTDIR)\pg_dump.exe" @@ -92,7 +94,8 @@ LINK32_OBJS= \ "$(INTDIR)\getopt_long.obj" \ "$(INTDIR)\path.obj" \ "$(INTDIR)\pgstrcasecmp.obj" \ - "$(INTDIR)\sprompt.obj" + "$(INTDIR)\sprompt.obj" \ + "$(INTDIR)\snprintf.obj" LINK32_OBJS_DMP= \ "$(INTDIR)\common.obj" \ @@ -173,6 +176,11 @@ LINK32_OBJS = $(LINK32_OBJS) "..\..\interfaces\libpq\Release\libpqdll.lib" $(CPP_PROJ) ..\..\port\sprompt.c << +"$(INTDIR)\snprintf.obj" : "$(INTDIR)" ..\..\port\snprintf.c + $(CPP) @<< + $(CPP_PROJ) ..\..\port\snprintf.c +<< + ..\..\backend\parser\parse.h : ..\..\backend\parser\gram.y $(YACC) -y -d ..\..\backend\parser\gram.y $(MV) ..\..\backend\parser\y.tab.h ..\..\backend\parser\parse.h diff --git a/src/include/getaddrinfo.h b/src/include/getaddrinfo.h index 577e647088..1e7ac12ab2 100644 --- a/src/include/getaddrinfo.h +++ b/src/include/getaddrinfo.h @@ -41,7 +41,9 @@ #define EAI_SYSTEM (-11) #else /* WIN32 */ #ifdef WIN32_ONLY_COMPILER +#ifndef WSA_NOT_ENOUGH_MEMORY #define WSA_NOT_ENOUGH_MEMORY (WSAENOBUFS) +#endif #define WSATYPE_NOT_FOUND (WSABASEERR+109) #endif #define EAI_AGAIN WSATRY_AGAIN @@ -89,6 +91,7 @@ #ifndef HAVE_STRUCT_ADDRINFO +#ifndef WIN32 struct addrinfo { int ai_flags; @@ -100,6 +103,24 @@ struct addrinfo char *ai_canonname; struct addrinfo *ai_next; }; +#else +/* + * The order of the structure elements on Win32 doesn't match the + * order specified in the standard, but we have to match it for + * IPv6 to work. + */ +struct addrinfo +{ + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + char *ai_canonname; + struct sockaddr *ai_addr; + struct addrinfo *ai_next; +}; +#endif #endif /* HAVE_STRUCT_ADDRINFO */ diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32 index b2cf29246e..a805aa4da5 100644 --- a/src/include/pg_config.h.win32 +++ b/src/include/pg_config.h.win32 @@ -247,13 +247,17 @@ /* Define to 1 if constants of type 'long long int' should have the suffix LL. */ +#if (_MSC_VER > 1200) #define HAVE_LL_CONSTANTS 1 +#endif /* Define to 1 if `long int' works and is 64 bits. */ /* #undef HAVE_LONG_INT_64 */ /* Define to 1 if `long long int' works and is 64 bits. */ +#if (_MSC_VER > 1200) #define HAVE_LONG_LONG_INT_64 +#endif /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 @@ -395,7 +399,9 @@ /* #undef HAVE_STRTOUQ */ /* Define to 1 if the system has the type `struct addrinfo'. */ +#if (_MSC_VER > 1200) #define HAVE_STRUCT_ADDRINFO 1 +#endif /* Define to 1 if the system has the type `struct cmsgcred'. */ /* #undef HAVE_STRUCT_CMSGCRED */ @@ -410,10 +416,14 @@ /* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */ /* Define to 1 if the system has the type `struct sockaddr_storage'. */ +#if (_MSC_VER > 1200) #define HAVE_STRUCT_SOCKADDR_STORAGE 1 +#endif /* Define to 1 if `ss_family' is member of `struct sockaddr_storage'. */ +#if (_MSC_VER > 1200) #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1 +#endif /* Define to 1 if `ss_len' is member of `struct sockaddr_storage'. */ /* #undef HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN */ diff --git a/src/port/thread.c b/src/port/thread.c index 254eec5bef..1c5c847d29 100644 --- a/src/port/thread.c +++ b/src/port/thread.c @@ -16,8 +16,12 @@ #include <pwd.h> #if defined(FRONTEND) && defined(ENABLE_THREAD_SAFETY) +#ifdef WIN32 +#include "pthread-win32.h" +#else #include <pthread.h> #endif +#endif /* diff --git a/src/win32.mak b/src/win32.mak index 83d31549a9..717be2812f 100644 --- a/src/win32.mak +++ b/src/win32.mak @@ -13,6 +13,7 @@ NULL=nul ALL: cd include if not exist pg_config.h copy pg_config.h.win32 pg_config.h + if not exist pg_config_os.h copy port\win32.h pg_config_os.h cd .. cd interfaces\libpq nmake /f win32.mak $(MAKEMACRO) |