From d476975e6c8fcc7457f016eb23cabaa14f225783 Mon Sep 17 00:00:00 2001 From: cxgeorge <> Date: Tue, 25 Sep 2001 01:32:41 +0000 Subject: [PATCH] add unload_dso --- dtool/src/dtoolutil/load_dso.cxx | 20 +++++++++++++++++++- dtool/src/dtoolutil/load_dso.h | 4 ++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/dtool/src/dtoolutil/load_dso.cxx b/dtool/src/dtoolutil/load_dso.cxx index ba7161eea9..4e8498319d 100644 --- a/dtool/src/dtoolutil/load_dso.cxx +++ b/dtool/src/dtoolutil/load_dso.cxx @@ -28,11 +28,16 @@ load_dso(const Filename &) return (void *) NULL; } +bool +unload_dso(void *dso_handle) { + return false; +} + string load_dso_error() { ostringstream ps2errmsg; - ps2errmsg << "load_dso_error() unsupported on PS2. (CSN)"; + ps2errmsg << "load_dso_error() unsupported on PS2"; return ps2errmsg.str(); } @@ -53,6 +58,14 @@ load_dso(const Filename &filename) { return LoadLibrary(os_specific.c_str()); } +bool +unload_dso(void *dso_handle) { + HMODULE dll_handle = (HMODULE) dso_handle; + + // true indicates success + return FreeLibrary(dll_handle); +} + string load_dso_error() { DWORD last_error = GetLastError(); @@ -136,6 +149,11 @@ load_dso(const Filename &filename) { return dlopen(os_specific.c_str(), RTLD_NOW); } +bool +unload_dso(void *dso_handle) { + return dlclose(dso_handle)==0; +} + string load_dso_error() { return dlerror(); diff --git a/dtool/src/dtoolutil/load_dso.h b/dtool/src/dtoolutil/load_dso.h index 830a99f686..55cef6ca3c 100644 --- a/dtool/src/dtoolutil/load_dso.h +++ b/dtool/src/dtoolutil/load_dso.h @@ -29,6 +29,10 @@ EXPCL_DTOOL void * load_dso(const Filename &filename); +// true indicates success +EXPCL_DTOOL bool +unload_dso(void *dso_handle); + // Returns the error message from the last failed load_dso() call. EXPCL_DTOOL string