How is this different from apr_dso_unload?
Ryan
On Mon, 9 Apr 2001, Doug MacEachern wrote:
> mod_perl needs to close the handle for each Perl extension .so loaded by
> Perl modules. in 1.x we could call:
> ap_os_dso_unload(handle);
>
> where handle is the same value returned by dlopen() or similar.
> Perl's abstraction is not an option since you need to call a Perl function
> to use it, and we cannot close these handles until the interpreter is
> destroyed.
>
> something like the following for each $os/dso.c would do the trick.
> i will implement the patch if there are no objections, otherwise it will
> really suck to duplicate this functionality that is currently private in
> apr.
>
> Index: srclib/apr/dso/unix/dso.c
> ===================================================================
> RCS file: /home/cvs/apr/dso/unix/dso.c,v
> retrieving revision 1.33
> diff -u -r1.33 dso.c
> --- srclib/apr/dso/unix/dso.c 2001/02/16 21:04:17 1.33
> +++ srclib/apr/dso/unix/dso.c 2001/04/10 00:08:52
> @@ -64,19 +64,30 @@
> #include <string.h> /* for strerror() on HP-UX */
> #endif
>
> +APR_DECLARE(apr_status_t) apr_dso_handle_close(void *handle)
> +{
> +#if defined(HPUX) || defined(HPUX10) || defined(HPUX11)
> + shl_unload((shl_t)dso->handle);
> +#else
> + if (dlclose(handle) != 0) {
> + return APR_EINIT;
> + }
> +#endif
> + return APR_SUCCESS;
> +}
> +
> static apr_status_t dso_cleanup(void *thedso)
> {
> + apr_status_t status;
> apr_dso_handle_t *dso = thedso;
>
> if (dso->handle == NULL)
> return APR_SUCCESS;
>
> -#if defined(HPUX) || defined(HPUX10) || defined(HPUX11)
> - shl_unload((shl_t)dso->handle);
> -#else
> - if (dlclose(dso->handle) != 0)
> - return APR_EINIT;
> -#endif
> + if ((status = apr_dso_handle_close(dso->handle)) != APR_SUCCESS) {
> + return status;
> + }
> +
> dso->handle = NULL;
>
> return APR_SUCCESS;
>
>
_______________________________________________________________________________
Ryan Bloom [EMAIL PROTECTED]
406 29th St.
San Francisco, CA 94131
-------------------------------------------------------------------------------