summaryrefslogtreecommitdiff
path: root/ext/mysql/libmysql/dll.c
diff options
context:
space:
mode:
authorMySQL Team <mysql@php.net>2000-02-19 21:35:02 +0000
committerMySQL Team <mysql@php.net>2000-02-19 21:35:02 +0000
commit71613cbd57bbb4490631164bd2da832d5eba2318 (patch)
tree2acfc2296ed5fc60435c91e79c061b1f87dc4f01 /ext/mysql/libmysql/dll.c
parent739bdec582f13a95379f77cf143a23d089d2bba0 (diff)
downloadphp-git-71613cbd57bbb4490631164bd2da832d5eba2318.tar.gz
First version from the MySQL team.
Diffstat (limited to 'ext/mysql/libmysql/dll.c')
-rw-r--r--ext/mysql/libmysql/dll.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/ext/mysql/libmysql/dll.c b/ext/mysql/libmysql/dll.c
new file mode 100644
index 0000000000..a3116b33ad
--- /dev/null
+++ b/ext/mysql/libmysql/dll.c
@@ -0,0 +1,98 @@
+/* Copyright Abandoned 1999 TCX DataKonsult AB & Monty Program KB & Detron HB
+ This file is public domain and comes with NO WARRANTY of any kind */
+
+/*
+** Handling initialization of the dll library
+*/
+
+#include <global.h>
+#include <my_sys.h>
+#include <my_pthread.h>
+
+static bool libmysql_inited=0;
+
+void libmysql_init(void)
+{
+ if (libmysql_inited)
+ return;
+ libmysql_inited=1;
+ my_init();
+ {
+ DBUG_ENTER("libmysql_init");
+#ifdef LOG_ALL
+ DBUG_PUSH("d:t:S:O,c::\\tmp\\libmysql.log");
+#else
+ if (getenv("LIBMYSQL_LOG") != NULL)
+ DBUG_PUSH(getenv("LIBMYSQL_LOG"));
+#endif
+ DBUG_VOID_RETURN;
+ }
+}
+
+#ifdef WIN32
+
+static int inited=0,threads=0;
+HINSTANCE NEAR s_hModule; /* Saved module handle */
+DWORD main_thread;
+
+BOOL APIENTRY LibMain(HANDLE hInst,DWORD ul_reason_being_called,
+ LPVOID lpReserved)
+{
+ switch (ul_reason_being_called) {
+ case DLL_PROCESS_ATTACH: /* case of libentry call in win 3.x */
+ if (!inited++)
+ {
+ s_hModule=hInst;
+ libmysql_init();
+ main_thread=GetCurrentThreadId();
+ }
+ break;
+ case DLL_THREAD_ATTACH:
+ threads++;
+ my_thread_init();
+ break;
+ case DLL_PROCESS_DETACH: /* case of wep call in win 3.x */
+ if (!--inited) /* Safety */
+ {
+ /* my_thread_init() */ /* This may give extra safety */
+ my_end(0);
+ }
+ break;
+ case DLL_THREAD_DETACH:
+ /* Main thread will free by my_end() */
+ threads--;
+ if (main_thread != GetCurrentThreadId())
+ my_thread_end();
+ break;
+ default:
+ break;
+ } /* switch */
+
+ return TRUE;
+
+ UNREFERENCED_PARAMETER(lpReserved);
+} /* LibMain */
+
+int __stdcall DllMain(HANDLE hInst,DWORD ul_reason_being_called,LPVOID lpReserved)
+{
+ return LibMain(hInst,ul_reason_being_called,lpReserved);
+}
+
+#elif defined(WINDOWS)
+
+/****************************************************************************
+** This routine is called by LIBSTART.ASM at module load time. All it
+** does in this sample is remember the DLL module handle. The module
+** handle is needed if you want to do things like load stuff from the
+** resource file (for instance string resources).
+****************************************************************************/
+
+int _export FAR PASCAL libmain(HANDLE hModule,short cbHeapSize,
+ UCHAR FAR *lszCmdLine)
+{
+ s_hModule = hModule;
+ libmysql_init();
+ return TRUE;
+}
+
+#endif