dougm 2002/06/20 17:05:17 Added: src/modules/perl modperl_sys.c modperl_sys.h Log: rolling our own modperl_sys_dlclose() to avoid apr/pool overhead/thread issues Revision Changes Path 1.1 modperl-2.0/src/modules/perl/modperl_sys.c Index: modperl_sys.c =================================================================== #include "mod_perl.h" /* * Perl does not provide this abstraction. * APR does, but requires a pool. efforts to expose this area of apr * failed. so we roll our own. *sigh* */ int modperl_sys_dlclose(void *handle) { #if defined(MP_SYS_DL_DLOPEN) #ifdef I_DLFCN #include <dlfcn.h> #else #include <nlist.h> #include <link.h> #endif return dlclose(handle) == 0; #elif defined(MP_SYS_DL_DYLD) return NSUnlinkModule(handle, FALSE); #elif defined(MP_SYS_DL_HPUX) shl_unload((shl_t)handle); return 1; #elif defined(MP_SYS_DL_WIN32) return FreeLibrary(handle); #elif defined(MP_SYS_DL_BEOS) return unload_add_on(handle) < B_NO_ERROR; #elif defined(MP_SYS_DL_DLLLOAD) return dllfree(handle) == 0; #elif defined(MP_SYS_DL_AIX) return dlclose(handle) == 0; #else #error "modperl_sys_dlclose not defined on this platform" return 0; #endif } 1.1 modperl-2.0/src/modules/perl/modperl_sys.h Index: modperl_sys.h =================================================================== #ifndef MODPERL_SYS_H #define MODPERL_SYS_H /* * system specific type stuff. * hopefully won't be much here since Perl/APR/Apache * take care of most portablity issues. */ int modperl_sys_dlclose(void *handle); #endif /* MODPERL_SYS_H */