-# Microsoft Developer Studio Project File - Name="psqlodbc35w" - Package Owner=<4>\r
+# Microsoft Developer Studio Project File - Name="psqlODBC" - Package Owner=<4>\r
# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
# ** \95Ò\8fW\82µ\82È\82¢\82Å\82\82¾\82³\82¢ **\r
\r
# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
\r
-CFG=psqlodbc35w - Win32 Release\r
+CFG=psqlODBC - Win32 Release\r
!MESSAGE \82±\82ê\82Í\97L\8cø\82ÈÒ²¸Ì§²Ù\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81B \82±\82ÌÌßÛ¼Þª¸Ä\82ðËÞÙÄÞ\82·\82é\82½\82ß\82É\82Í NMAKE \82ð\8eg\97p\82µ\82Ä\82\82¾\82³\82¢\81B\r
!MESSAGE [Ò²¸Ì§²Ù\82Ì´¸½Îß°Ä] ºÏÝÄÞ\82ð\8eg\97p\82µ\82Ä\8eÀ\8ds\82µ\82Ä\82\82¾\82³\82¢\r
!MESSAGE \r
-!MESSAGE NMAKE /f "psqlodbc35w.mak".\r
+!MESSAGE NMAKE /f "psqlodbc.mak".\r
!MESSAGE \r
!MESSAGE NMAKE \82Ì\8eÀ\8ds\8e\9e\82É\8d\\90¬\82ð\8ew\92è\82Å\82«\82Ü\82·\r
!MESSAGE ºÏÝÄÞ ×²Ý\8fã\82ÅϸÛ\82Ì\90Ý\92è\82ð\92è\8b`\82µ\82Ü\82·\81B\97á:\r
!MESSAGE \r
-!MESSAGE NMAKE /f "psqlodbc35w.mak" CFG="psqlODBC - Win32 Release"\r
-!MESSAGE\r
+!MESSAGE NMAKE /f "psqlodbc.mak" CFG="psqlODBC - Win32 Release"\r
+!MESSAGE \r
!MESSAGE \91I\91ð\89Â\94\\82ÈËÞÙÄÞ Ó°ÄÞ:\r
-!MESSAGE\r
+!MESSAGE \r
!MESSAGE "psqlODBC - Win32 Release" ("Win32 (x86) Console Application" \97p)\r
!MESSAGE "psqlODBC - Win32 Debug" ("Win32 (x86) Console Application" \97p)\r
-!MESSAGE\r
+!MESSAGE \r
\r
# Begin Project\r
# PROP AllowPerConfigDependencies 0\r
# PROP Ignore_Export_Lib 0\r
# PROP Target_Dir ""\r
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "USE_LIBPQ" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PSQLODBC_EXPORTS" /D ODBCVER=0x0351 /D "DRIVER_CURSOR_IMPLEMENT" /D "WIN_MULTITHREAD_SUPPORT" /D "MULTIBYTE" /D "UNICODE_SUPPORT" /Fp"psqlodbc.pch" /YX /FD /c\r
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "C:\VSHOME\postgresql-8.1.3\src\include" /I "C:\VSHOME\postgresql-8.1.3\src\interfaces\libpq" /I "C:\VSHOME\openssl-0.9.8a\inc32" /D "NDEBUG" /D "USE_LIBPQ" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PSQLODBC_EXPORTS" /D ODBCVER=0x0351 /D "DRIVER_CURSOR_IMPLEMENT" /D "WIN_MULTITHREAD_SUPPORT" /D "MULTIBYTE" /D "UNICODE_SUPPORT" /D "USE_SSL" /Fp"psqlodbc.pch" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "C:\HOME\postgresql-8.1.4_client\src\include" /I "C:\HOME\postgresql-8.1.4_client\src\interfaces\libpq" /I "C:\HOME\openssl-0.9.8a\inc32" /D "NDEBUG" /D "USE_LIBPQ" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PSQLODBC_EXPORTS" /D ODBCVER=0x0351 /D "DRIVER_CURSOR_IMPLEMENT" /D "WIN_MULTITHREAD_SUPPORT" /D "MULTIBYTE" /D "UNICODE_SUPPORT" /D "USE_SSL" /Fp"psqlodbc.pch" /YX /FD /c\r
# ADD BASE RSC /l 0x411 /d "NDEBUG"\r
# ADD RSC /l 0x411 /i "." /i "japanese" /d "NDEBUG"\r
# SUBTRACT RSC /x\r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:windows /machine:I386\r
-# ADD LINK32 wsock32.lib shfolder.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpq.lib C:\VSHOME\openssl-0.9.8a\out32\ssleay32.lib C:\VSHOME\openssl-0.9.8a\out32\libeay32.lib /nologo /subsystem:windows /dll /pdb:"psqlodbc35w.pdb" /machine:I386 /out:"psqlodbc35w.dll" /implib:"psqlodbc35w.lib" /libpath:"C:\VSHOME\postgresql-8.1.3\src\interfaces\libpq\Release"\r
+# ADD LINK32 ws2_32.lib shfolder.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpq.lib C:\HOME\openssl-0.9.8a\out32\ssleay32.lib C:\HOME\openssl-0.9.8a\out32\libeay32.lib /nologo /subsystem:windows /dll /pdb:"psqlodbc35w.pdb" /machine:I386 /out:"psqlodbc35w.dll" /implib:"psqlodbc35w.lib" /libpath:"C:\HOME\postgresql-8.1.4_client\src\interfaces\libpq\Release"\r
# SUBTRACT LINK32 /pdb:none\r
\r
!ELSEIF "$(CFG)" == "psqlODBC - Win32 Debug"\r
# PROP Ignore_Export_Lib 0\r
# PROP Target_Dir ""\r
# ADD BASE CPP /nologo /MD /W3 /Gm /GX /ZI /Od /D "USE_LIBPQ" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PSQLODBC_EXPORTS" /D ODBCVER=0x0351 /D "DRIVER_CURSOR_IMPLEMENT" /D "WIN_MULTITHREAD_SUPPORT" /D "MULTIBYTE" /D "UNICODE_SUPPORT" /YX /FD /GZ /c\r
-# ADD CPP /nologo /MD /W3 /Gm /GX /ZI /I "C:\VSHOME\postgresql-8.1.3\src\include" /I "C:\VSHOME\postgresql-8.1.3\src\interfaces\libpq" /I "C:\VSHOME\openssl-0.9.8a\inc32" /D "_DEBUG" /D "USE_LIBPQ" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PSQLODBC_EXPORTS" /D ODBCVER=0x0351 /D "DRIVER_CURSOR_IMPLEMENT" /D "WIN_MULTITHREAD_SUPPORT" /D "MULTIBYTE" /D "UNICODE_SUPPORT" /D "USE_SSL" /FR /YX /FD /GZ /c\r
+# ADD CPP /nologo /MD /W3 /Gm /GX /ZI /I "C:\HOME\postgresql-8.1.4_client\src\include" /I "C:\HOME\postgresql-8.1.4_client\src\interfaces\libpq" /I "C:\HOME\openssl-0.9.8a\inc32" /D "_DEBUG" /D "USE_LIBPQ" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PSQLODBC_EXPORTS" /D ODBCVER=0x0351 /D "DRIVER_CURSOR_IMPLEMENT" /D "WIN_MULTITHREAD_SUPPORT" /D "MULTIBYTE" /D "UNICODE_SUPPORT" /D "USE_SSL" /FR /YX /FD /GZ /c\r
# ADD BASE RSC /l 0x411 /d "_DEBUG"\r
# ADD RSC /l 0x411 /i "." /i "japanese" /d "_DEBUG"\r
# SUBTRACT RSC /x\r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386\r
-# ADD LINK32 wsock32.lib shfolder.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpq.lib C:\VSHOME\openssl-0.9.8a\out32\ssleay32.lib C:\VSHOME\openssl-0.9.8a\out32\libeay32.lib /nologo /subsystem:windows /dll /pdb:"psqlodbc35w.pdb" /debug /machine:I386 /out:"psqlodbc35w.dll" /implib:"psqlodbc35w.lib" /libpath:"C:\VSHOME\postgresql-8.1.3\src\interfaces\libpq\Debug"\r
+# ADD LINK32 ws2_32.lib shfolder.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpq.lib C:\HOME\openssl-0.9.8a\out32\ssleay32.lib C:\HOME\openssl-0.9.8a\out32\libeay32.lib /nologo /subsystem:windows /dll /pdb:"psqlodbc35w.pdb" /debug /machine:I386 /out:"psqlodbc35w.dll" /implib:"psqlodbc35w.lib" /libpath:"C:\HOME\postgresql-8.1.4_client\src\interfaces\libpq\Debug"\r
# SUBTRACT LINK32 /pdb:none\r
\r
!ENDIF \r
# PROP Default_Filter ""\r
# Begin Source File\r
\r
-SOURCE=.\psqlodbc.rc\r
+SOURCE=.\psqlodbc.def\r
# End Source File\r
# Begin Source File\r
\r
-SOURCE=.\psqlodbc.def\r
+SOURCE=.\psqlodbc.rc\r
# End Source File\r
# Begin Source File\r
\r
free(self);
}
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+static freeaddrinfo_func freeaddrinfo_ptr = NULL;
+static getaddrinfo_func getaddrinfo_ptr = NULL;
+static getnameinfo_func getnameinfo_ptr = NULL;
+static HMODULE ws2_hnd = NULL;
+#endif
char
SOCK_connect_to(SocketClass *self, unsigned short port, char *hostname, long timeout)
int family;
char retval = 0;
+
if (self->socket != -1)
{
SOCK_set_error(self, SOCKET_ALREADY_CONNECTED, "Socket is already connected");
return 0;
}
-
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+ if (ws2_hnd == NULL)
+ ws2_hnd = GetModuleHandle("ws2_32.dll");
+ if (freeaddrinfo_ptr == NULL)
+ freeaddrinfo_ptr = (freeaddrinfo_func)GetProcAddress(ws2_hnd, "freeaddrinfo");
+ if (getnameinfo_ptr == NULL)
+ getaddrinfo_ptr = (getaddrinfo_func)GetProcAddress(ws2_hnd, "getaddrinfo");
+#endif
/*
* If it is a valid IP address, use it. Otherwise use hostname lookup.
*/
snprintf(portstr, sizeof(portstr), "%d", port);
if (inet_addr(hostname) != INADDR_NONE)
rest.ai_flags = AI_NUMERICHOST;
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+ ret = getaddrinfo_ptr(hostname, portstr, &rest, &addrs);
+#else
ret = getaddrinfo(hostname, portstr, &rest, &addrs);
+#endif
if (ret || !addrs)
{
SOCK_set_error(self, SOCKET_HOST_NOT_FOUND, "Could not resolve hostname.");
if (addrs)
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+ freeaddrinfo_ptr(addrs);
+#else
freeaddrinfo(addrs);
+#endif
return 0;
}
curadr = addrs;
goto retry;
}
if (addrs)
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+ freeaddrinfo_ptr(addrs);
+#else
freeaddrinfo(addrs);
+#endif
}
return retval;
}
#define HAVE_UNIX_SOCKETS
#endif /* HAVE_SYS_UN_H */
#else
+
#include <winsock2.h>
#include <ws2tcpip.h>
+
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+/*
+ * 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.
+ */
+
+#define AI_PASSIVE 0x1 // Socket address will be used in bind() call.
+#define AI_CANONNAME 0x2 // Return canonical name in first ai_canonname.
+#define AI_NUMERICHOST 0x4 // Nodename must be a numeric address string.
+
+#define _SS_MAXSIZE 128
+#define _SS_ALIGNSIZE (sizeof(__int64))
+#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short))
+#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) + _SS_PAD1SIZE + _SS_ALIGNSIZE))
+
+typedef int socklen_t;
+
+struct sockaddr_storage {
+ short ss_family;
+ char __ss_pad1[_SS_PAD1SIZE];
+ __int64 __ss_align;
+ char __ss_pad2[_SS_PAD2SIZE];
+};
+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;
+};
+typedef void (WSAAPI *freeaddrinfo_func) (struct addrinfo*);
+typedef int (WSAAPI *getaddrinfo_func) (const char*, const char*,
+ const struct addrinfo*,
+ struct addrinfo**);
+typedef int (WSAAPI *getnameinfo_func) (const struct sockaddr*,
+ socklen_t, char*, DWORD,
+ char*, DWORD, int);
+#endif
+
#include <libpq-fe.h>
#include <openssl/ssl.h>
#define SOCKETFD SOCKET