/******************** *** EGC_DYNLIB.C *** ********************/ #include "egc_dynlib.h" #include "eif_sig.h" RT_LNK HANDLE ghInstance; RT_LNK HINSTANCE eif_hInstance; RT_LNK HINSTANCE eif_hPrevInstance; extern void egc_init_plug(); void init_rt (void) { #ifdef EIF_THREADS eif_thr_register(); initsig(); initstk(); #endif } BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpvReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: ghInstance = hInst; eif_hInstance = hInst; eif_hPrevInstance = hInst; { int argc = 1; char *argv[] = {"",""}; eif_alloc_init(); #ifdef EIF_THREADS eif_thr_init_root (); #endif { GTCX; egc_init_plug(); initsig(); initstk(); eif_rtinit(argc, argv, (char **)0); } } EIF_EXIT_EIFFEL; break; case DLL_PROCESS_DETACH: EIF_ENTER_EIFFEL; reclaim (); break; case DLL_THREAD_ATTACH: init_rt(); EIF_EXIT_EIFFEL; break; case DLL_THREAD_DETACH: EIF_ENTER_EIFFEL; eif_thr_exit(); break; } return TRUE; }