rse 98/04/13 03:32:28
Modified: src/os/win32 os.h
src/os/unix os.h os.c
src/os/bs2000 os.h os.c
src/modules/standard mod_so.c mod_cgi.c
src/main http_core.c
src/include compat.h
Log:
Manual DSO cleanup after renaming:
- renamed remaining os_ stuff in os/unix/ and os/bs2000/ to ap_ variants
- merged the ap_dso_xxxx non-HPUX-specific #defines
and the HPUX-specific functions
- moved the FreeBSD-underscore hack from mod_so (where it was badly placed
because it is a low-level stuff) to the dlsym() call in os/unix/os.c
(where is is placed better because _there_ is the os-specific stuff)
- some minor cleanups to os.h
- additions to compat.h
Revision Changes Path
1.16 +5 -5 apache-1.3/src/os/win32/os.h
Index: os.h
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/os/win32/os.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- os.h 1998/04/11 12:01:06 1.15
+++ os.h 1998/04/13 10:32:23 1.16
@@ -101,8 +101,8 @@
/* Abstractions for dealing with shared object files (DLLs on Win32).
* These are used by mod_so.c
*/
-#define os_dl_module_handle_type HINSTANCE
-#define os_dl_load(l) LoadLibraryEx(l, NULL, LOAD_WITH_ALTERED_SEARCH_PATH)
-#define os_dl_unload(l) FreeLibrary(l)
-#define os_dl_sym(h,s) GetProcAddress(h,s)
-#define os_dl_error() "" /* for now */
+#define ap_dso_handle_t HINSTANCE
+#define ap_dso_load(l) LoadLibraryEx(l, NULL,
LOAD_WITH_ALTERED_SEARCH_PATH)
+#define ap_dso_unload(l) FreeLibrary(l)
+#define ap_dso_sym(h,s) GetProcAddress(h,s)
+#define ap_dso_error() "" /* for now */
1.20 +26 -32 apache-1.3/src/os/unix/os.h
Index: os.h
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/os/unix/os.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- os.h 1998/04/12 15:49:28 1.19
+++ os.h 1998/04/13 10:32:23 1.20
@@ -80,55 +80,49 @@
#endif
/*
- * Abstraction layer for dynamic loading of modules (mod_so.c)
+ * Abstraction layer for loading
+ * Apache modules under run-time via
+ * dynamic shared object (DSO) mechanism
*/
-#if defined(LINUX) || defined(__FreeBSD__) || defined(SOLARIS2) || \
- defined(__bsdi__) || defined(IRIX) || defined(SVR4) || defined(OSF1)
-# define HAVE_DLFCN_H 1
+#if defined(HPUX) || defined(HPUX10)
+#define HAVE_DL_H 1
#endif
-#if defined(__FreeBSD__)
-# define NEED_UNDERSCORE_SYM
+#if defined(LINUX) || defined(__FreeBSD__) || defined(SOLARIS2) || \
+ defined(__bsdi__) || defined(IRIX) || defined(SVR4) || defined(OSF1)
+#define HAVE_DLFCN_H 1
#endif
- /* OSes that don't support dlopen */
-#if defined(UW) || defined(ULTRIX) || defined(HPUX) || defined(HPUX10)
-# define NO_DL
+#ifdef HAVE_DL_H
+#include <dl.h>
#endif
- /* Start of real module */
#ifdef HAVE_DLFCN_H
-# include <dlfcn.h>
+#include <dlfcn.h>
#else
-void * dlopen (const char * __filename, int __flag);
-const char * dlerror (void);
-void * dlsym (void *, const char *);
-int dlclose (void *);
+void *dlopen(const char *, int);
+int dlclose(void *);
+void *dlsym(void *, const char *);
+const char *dlerror(void);
#endif
-#ifndef RTLD_NOW
-/*
- * probably on an older system that doesn't support RTLD_NOW or RTLD_LAZY.
+/* probably on an older system that doesn't support RTLD_NOW or RTLD_LAZY.
* The below define is a lie since we are really doing RTLD_LAZY since the
* system doesn't support RTLD_NOW.
*/
-# define RTLD_NOW 1
+#ifndef RTLD_NOW
+#define RTLD_NOW 1
#endif
-#if defined(HPUX) || defined(HPUX10)
-#include <dl.h>
-#define os_dl_module_handle_type void *
-void *os_dl_load(char *path);
-void os_dl_unload(void *handle);
-void *os_dl_sym(void *handle, char *symname);
-char *os_dl_error(void);
-#else
-#define os_dl_module_handle_type void *
-#define os_dl_load(l) dlopen(l, RTLD_NOW)
-#define os_dl_unload(l) dlclose(l)
-#define os_dl_sym(h,s) dlsym(h,s)
-#define os_dl_error() dlerror()
+#if defined(__FreeBSD__)
+#define DLSYM_NEEDS_UNDERSCORE
#endif
+
+#define ap_dso_handle_t void *
+void * ap_dso_load(const char *);
+void ap_dso_unload(void *);
+void * ap_dso_sym(void *, const char *);
+const char *ap_dso_error(void);
#endif /* !APACHE_OS_H */
1.8 +31 -15 apache-1.3/src/os/unix/os.c
Index: os.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/os/unix/os.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- os.c 1998/04/12 15:49:28 1.7
+++ os.c 1998/04/13 10:32:24 1.8
@@ -10,34 +10,39 @@
/* some linkers complain unless there's at least one function in each
* .o file... and extra prototype is for gcc -Wmissing-prototypes
*/
-extern void os_is_not_here(void);
-void os_is_not_here(void) {}
+extern void ap_is_not_here(void);
+void ap_is_not_here(void) {}
-
-#if defined(HPUX) || defined(HPUX10)
-
/*
- * HPUX dlopen interface-emulation
+ * Abstraction layer for loading
+ * Apache modules under run-time via
+ * dynamic shared object (DSO) mechanism
*/
-#include <dl.h>
-#include <errno.h>
-
-void *os_dl_load(char *path)
+void *ap_dso_load(const char *path)
{
+#if defined(HPUX) || defined(HPUX10)
shl_t handle;
handle = shl_load(path, BIND_IMMEDIATE|BIND_VERBOSE|BIND_NOSTART, 0L);
return (void *)handle;
+#else
+ return dlopen(path, RTLD_NOW);
+#endif
}
-void os_dl_unload(void *handle)
+void ap_dso_unload(void *handle)
{
+#if defined(HPUX) || defined(HPUX10)
shl_unload((shl_t)handle);
+#else
+ dlclose(handle);
+#endif
return;
}
-void *os_dl_sym(void *handle, char *symname)
+void *ap_dso_sym(void *handle, const char *symname)
{
+#if defined(HPUX) || defined(HPUX10)
void *symaddr = NULL;
int status;
@@ -46,12 +51,23 @@
if (status == -1 && errno == 0) /* try TYPE_DATA instead */
status = shl_findsym((shl_t *)&handle, symname, TYPE_DATA, &symaddr);
return (status == -1 ? NULL : symaddr);
+#else /* ndef HPUX */
+#ifdef DLSYM_NEEDS_UNDERSCORE
+ char symbol[256];
+ sprintf(symbol, "_%s", symname);
+ return dlsym(handle, symbol);
+#else
+ return dlsym(handle, symname);
+#endif
+#endif /* ndef HPUX */
}
-char *os_dl_error(void)
+const char *ap_dso_error(void)
{
+#if defined(HPUX) || defined(HPUX10)
return strerror(errno);
+#else
+ return dlerror();
+#endif
}
-
-#endif /* HPUX dlopen interface-emulation */
1.6 +1 -1 apache-1.3/src/os/bs2000/os.h
Index: os.h
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/os/bs2000/os.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- os.h 1998/04/11 12:01:03 1.5
+++ os.h 1998/04/13 10:32:24 1.6
@@ -26,5 +26,5 @@
/* Sorry if this is ugly, but the include order doesn't allow me
* to use request_rec here... */
struct request_rec;
-extern int os_checkconv(struct request_rec *r);
+extern int ap_checkconv(struct request_rec *r);
#endif /*AP_OS_BS2000_OS_H*/
1.7 +1 -1 apache-1.3/src/os/bs2000/os.c
Index: os.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/os/bs2000/os.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- os.c 1998/04/11 12:01:02 1.6
+++ os.c 1998/04/13 10:32:25 1.7
@@ -64,7 +64,7 @@
#include "os.h"
/* Check the Content-Type to decide if conversion is needed */
-int os_checkconv(struct request_rec *r)
+int ap_checkconv(struct request_rec *r)
{
int convert_to_ascii;
1.20 +9 -19 apache-1.3/src/modules/standard/mod_so.c
Index: mod_so.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_so.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- mod_so.c 1998/04/11 12:00:51 1.19
+++ mod_so.c 1998/04/13 10:32:25 1.20
@@ -195,7 +195,7 @@
ap_remove_module(modi->modp);
/* unload the module space itself */
- os_dl_unload((os_dl_module_handle_type)modi->modp->dynamic_load_handle);
+ ap_dso_unload((ap_dso_handle_t)modi->modp->dynamic_load_handle);
/* destroy the module information */
modi->modp = NULL;
@@ -211,9 +211,7 @@
static void unload_file(void *handle)
{
- /* The Linux manpage doesn't give any way to check the success of
- * dlclose() */
- os_dl_unload((os_dl_module_handle_type)handle);
+ ap_dso_unload((ap_dso_handle_t)handle);
}
/*
@@ -224,7 +222,7 @@
static const char *load_module(cmd_parms *cmd, void *dummy,
char *modname, char *filename)
{
- void *modhandle;
+ ap_dso_handle_t modhandle;
module *modp;
const char *szModuleFile=ap_server_root_relative(cmd->pool, filename);
so_server_conf *sconf;
@@ -250,8 +248,8 @@
/*
* Load the file into the Apache address space
*/
- if (!(modhandle = os_dl_load(szModuleFile))) {
- const char *my_error = os_dl_error();
+ if (!(modhandle = ap_dso_load(szModuleFile))) {
+ const char *my_error = ap_dso_error();
return ap_pstrcat (cmd->pool, "Cannot load ", szModuleFile,
" into server: ",
my_error ? my_error : "(reason unknown)",
@@ -261,21 +259,13 @@
"loaded module %s", modname);
/*
- * Optionally prefix the symbol with an underscore
- * for some platforms.
- */
-#ifdef NEED_UNDERSCORE_SYM
- modname = ap_pstrcat(cmd->pool, "_", modname, NULL);
-#endif
-
- /*
* Retrieve the pointer to the module structure through the module name:
* First with the hidden variant (prefix `AP_') and then with the plain
* symbol name.
*/
- if (!(modp = (module *)(os_dl_sym (modhandle, modname)))) {
+ if (!(modp = (module *)(ap_dso_sym(modhandle, modname)))) {
return ap_pstrcat(cmd->pool, "Can't find module ", modname,
- " in file ", filename, ":", os_dl_error(), NULL);
+ " in file ", filename, ":", ap_dso_error(), NULL);
}
modi->modp = modp;
modp->dynamic_load_handle = modhandle;
@@ -319,8 +309,8 @@
file = ap_server_root_relative(cmd->pool, filename);
- if (!(handle = os_dl_load(file))) {
- const char *my_error = os_dl_error();
+ if (!(handle = ap_dso_load(file))) {
+ const char *my_error = ap_dso_error();
return ap_pstrcat (cmd->pool, "Cannot load ", filename,
" into server:",
my_error ? my_error : "(reason unknown)",
1.75 +1 -1 apache-1.3/src/modules/standard/mod_cgi.c
Index: mod_cgi.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_cgi.c,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -r1.74 -r1.75
--- mod_cgi.c 1998/04/11 12:00:45 1.74
+++ mod_cgi.c 1998/04/13 10:32:26 1.75
@@ -499,7 +499,7 @@
#ifdef CHARSET_EBCDIC
/* Now check the Content-Type to decide if conversion is needed */
- os_checkconv(r);
+ ap_checkconv(r);
#endif /*CHARSET_EBCDIC*/
location = ap_table_get(r->headers_out, "Location");
1.182 +1 -1 apache-1.3/src/main/http_core.c
Index: http_core.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v
retrieving revision 1.181
retrieving revision 1.182
diff -u -r1.181 -r1.182
--- http_core.c 1998/04/11 12:00:29 1.181
+++ http_core.c 1998/04/13 10:32:26 1.182
@@ -2127,7 +2127,7 @@
* the type to the real text/{plain,html,...} type. Otherwise, we
* set a flag that translation is required later on.
*/
- os_checkconv(r);
+ ap_checkconv(r);
#endif /*CHARSET_EBCDIC*/
ap_send_http_header (r);
1.2 +4 -0 apache-1.3/src/include/compat.h
Index: compat.h
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/include/compat.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- compat.h 1998/04/11 12:02:36 1.1
+++ compat.h 1998/04/13 10:32:27 1.2
@@ -389,5 +389,9 @@
#define util_uri_init ap_util_uri_init
#define uudecode ap_uudecode
#define vbprintf ap_vbprintf
+#define os_dl_load ap_dso_load
+#define os_dl_unload ap_dso_unload
+#define os_dl_sym ap_dso_sym
+#define os_dl_error ap_dso_error
#endif /* APACHE_COMPAT_H */