diff options
Diffstat (limited to 'src/interfaces/odbc/windev/psqlodbc.c')
-rw-r--r-- | src/interfaces/odbc/windev/psqlodbc.c | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/src/interfaces/odbc/windev/psqlodbc.c b/src/interfaces/odbc/windev/psqlodbc.c new file mode 100644 index 00000000000..cc8d8b7bfb4 --- /dev/null +++ b/src/interfaces/odbc/windev/psqlodbc.c @@ -0,0 +1,132 @@ +/*-------- + * Module: psqlodbc.c + * + * Description: This module contains the main entry point (DllMain) + * for the library. It also contains functions to get + * and set global variables for the driver in the registry. + * + * Classes: n/a + * + * API functions: none + * + * Comments: See "notice.txt" for copyright and license information. + *-------- + */ + +#include "psqlodbc.h" +#include "dlg_specific.h" + +#ifdef WIN32 +#include <winsock.h> +#endif + +GLOBAL_VALUES globals; + +RETCODE SQL_API SQLDummyOrdinal(void); + +#ifdef WIN32 +HINSTANCE NEAR s_hModule; /* Saved module handle. */ + +/* This is where the Driver Manager attaches to this Driver */ +BOOL WINAPI +DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) +{ + WORD wVersionRequested; + WSADATA wsaData; + + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + s_hModule = hInst; /* Save for dialog boxes */ + + /* Load the WinSock Library */ + wVersionRequested = MAKEWORD(1, 1); + + if (WSAStartup(wVersionRequested, &wsaData)) + return FALSE; + + /* Verify that this is the minimum version of WinSock */ + if (LOBYTE(wsaData.wVersion) != 1 || + HIBYTE(wsaData.wVersion) != 1) + { + WSACleanup(); + return FALSE; + } + + getCommonDefaults(DBMS_NAME, ODBCINST_INI, NULL); + break; + + case DLL_THREAD_ATTACH: + break; + + case DLL_PROCESS_DETACH: + WSACleanup(); + return TRUE; + + case DLL_THREAD_DETACH: + break; + + default: + break; + } + + return TRUE; + + UNREFERENCED_PARAMETER(lpReserved); +} + +#else /* not WIN32 */ + +#ifndef TRUE +#define TRUE (BOOL)1 +#endif +#ifndef FALSE +#define FALSE (BOOL)0 +#endif + +#ifdef __GNUC__ + +/* This function is called at library initialization time. */ + +static BOOL +__attribute__((constructor)) +init(void) +{ + getCommonDefaults(DBMS_NAME, ODBCINST_INI, NULL); + return TRUE; +} + +#else /* not __GNUC__ */ + +/* + * These two functions do shared library initialziation on UNIX, well at least + * on Linux. I don't know about other systems. + */ +BOOL +_init(void) +{ + getCommonDefaults(DBMS_NAME, ODBCINST_INI, NULL); + return TRUE; +} + +BOOL +_fini(void) +{ + return TRUE; +} +#endif /* not __GNUC__ */ +#endif /* not WIN32 */ + + +/* + * This function is used to cause the Driver Manager to + * call functions by number rather than name, which is faster. + * The ordinal value of this function must be 199 to have the + * Driver Manager do this. Also, the ordinal values of the + * functions must match the value of fFunction in SQLGetFunctions() + */ +RETCODE SQL_API +SQLDummyOrdinal(void) +{ + return SQL_SUCCESS; +} |