#include <config.h>
#endif
+#include <stdlib.h>
#include "sysdll.h"
/* This whole file is conditional upon HAVE_SHLIB */
#ifdef HAVE_SHLIB
/* Thankfully, most systems follow the ELFish dlopen() method.
-** HAVE__DLOPEN is lame, but SCO has their dl* functions as _dl*, and
-** unless you include dlfcn.h you don't get the macros to mask them, and
-** autoconf fails to find them. No longer true as of 5.0.5.
-**
-** Anybody who wants to use this on SCO needs to have their configure.in
-** look for _dlopen() as well as dlopen()
*/
-#if defined(HAVE_DLOPEN) || defined(HAVE__DLOPEN) || defined(HAVE_DLFCN_H)
+#if defined(HAVE_DLOPEN)
#include <dlfcn.h>
#ifndef RTLD_LAZY
#endif
int
-dll_init (CONST char *arg)
+dll_init (const char *arg)
{
return 0;
}
dll_handle
-dll_open (CONST char *fname)
+dll_open (const char *fname)
{
- return (dll_handle)dlopen (fname, RTLD_LAZY | RTLD_GLOBAL);
+ return (dll_handle) dlopen (fname, RTLD_LAZY | RTLD_GLOBAL);
}
int
dll_close (dll_handle h)
{
- return dlclose((void *)h);
+ return dlclose ((void *) h);
}
dll_func
-dll_function (dll_handle h, CONST char *n)
+dll_function (dll_handle h, const char *n)
{
#ifdef DLSYM_NEEDS_UNDERSCORE
char *buf = alloca_array (char, strlen (n) + 2);
*buf = '_';
- (void)strcpy(buf + 1, n);
+ strcpy (buf + 1, n);
n = buf;
#endif
- return (dll_func)dlsym ((void *)h, n);
+ return (dll_func) dlsym ((void *) h, n);
}
dll_var
-dll_variable (dll_handle h, CONST char *n)
+dll_variable (dll_handle h, const char *n)
{
#ifdef DLSYM_NEEDS_UNDERSCORE
char *buf = alloca_array (char, strlen (n) + 2);
*buf = '_';
- (void)strcpy(buf + 1, n);
+ strcpy (buf + 1, n);
n = buf;
#endif
return (dll_var)dlsym ((void *)h, n);
}
-CONST char *
+const char *
dll_error (dll_handle h)
{
#if defined(HAVE_DLERROR) || defined(dlerror)
- return (CONST char *)dlerror ();
+ return (const char *) dlerror ();
#elif defined(HAVE__DLERROR)
- return (const char *)_dlerror();
+ return (const char *) _dlerror();
#else
return "Shared library error";
#endif
/* This is the HP/UX version */
#include <dl.h>
int
-dll_init (CONST char *arg)
+dll_init (const char *arg)
{
return 0;
}
dll_handle
-dll_open (CONST char *fname)
+dll_open (const char *fname)
{
- shl_t h = shl_load (fname, BIND_DEFERRED,0L);
- shl_t *hp = NULL;
+ /* shl_load will hang hard if passed a NULL fname. */
+ if (fname == NULL) return NULL;
- if (h)
- {
- hp = (shl_t *)malloc (sizeof (shl_t));
- if (!hp)
- shl_unload(h);
- else
- *hp = h;
- }
- return (dll_handle)hp;
+ return (dll_handle) shl_load (fname, BIND_DEFERRED,0L);
}
int
dll_close (dll_handle h)
{
- shl_t hp = *((shl_t *)h);
- free (hp);
- return shl_unload(h);
+ return shl_unload ((shl_t) h);
}
dll_func
-dll_function (dll_handle h, CONST char *n)
+dll_function (dll_handle h, const char *n)
{
long handle = 0L;
- if (shl_findsym ((shl_t *)h, n, TYPE_PROCEDURE, &handle))
+ if (shl_findsym ((shl_t *) &h, n, TYPE_PROCEDURE, &handle))
return NULL;
- return (dll_func)handle;
+ return (dll_func) handle;
}
dll_var
-dll_variable (dll_handle h, CONST char *n)
+dll_variable (dll_handle h, const char *n)
{
long handle = 0L;
- if (shl_findsym ((shl_t *)h, n, TYPE_DATA, &handle))
+ if (shl_findsym ((shl_t *) &h, n, TYPE_DATA, &handle))
return NULL;
- return (dll_var)handle;
+ return (dll_var) handle;
}
-CONST char *
+const char *
dll_error (dll_handle h)
{
/* #### WTF?! Shouldn't this at least attempt to get strerror or
#elif defined(HAVE_INIT_DLD)
#include <dld.h>
int
-dll_init (CONST char *arg)
+dll_init (const char *arg)
{
char *real_exe = dld_find_executable (arg);
int rc;
}
dll_handle
-dll_open (CONST char *fname)
+dll_open (const char *fname)
{
rc = dld_link (fname);
if (rc)
return NULL;
- return (dll_handle)1;
+ return (dll_handle) 1;
}
int
}
DLL_FUNC
-dll_function (dll_handle h, CONST char *n)
+dll_function (dll_handle h, const char *n)
{
- return dld_get_func(n);
+ return dld_get_func (n);
}
DLL_FUNC
-dll_variable (dll_handle h, CONST char *n)
+dll_variable (dll_handle h, const char *n)
{
- return dld_get_symbol(n);
+ return dld_get_symbol (n);
}
-#elif defined(_WINDOWS) || defined(WIN32)
+#elif defined (WIN32_NATIVE)
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
int
-dll_init (CONST char *arg)
+dll_init (const char *arg)
{
return 0;
}
dll_handle
-dll_open (CONST char *fname)
+dll_open (const char *fname)
{
- return (dll_handle)LoadLibrary (fname);
+ return (dll_handle) LoadLibrary (fname);
}
int
}
dll_func
-dll_function (dll_handle h, CONST char *n)
+dll_function (dll_handle h, const char *n)
{
- return (dll_func)GetProcAddress (h,n);
+ return (dll_func) GetProcAddress (h, n);
}
dll_func
-dll_variable (dll_handle h, CONST char *n)
+dll_variable (dll_handle h, const char *n)
{
- return (dll_func)GetProcAddress (h,n);
+ return (dll_func) GetProcAddress (h, n);
}
-CONST char *
+const char *
dll_error (dll_handle h)
{
return "Windows DLL Error";
#else
/* Catchall if we don't know about this systems method of dynamic loading */
int
-dll_init (CONST char *arg)
+dll_init (const char *arg)
{
return -1;
}
dll_handle
-dll_open (CONST char *fname)
+dll_open (const char *fname)
{
return NULL;
}
}
dll_func
-dll_function (dll_handle h, CONST char *n)
+dll_function (dll_handle h, const char *n)
{
return NULL;
}
dll_func
-dll_variable (dll_handle h, CONST char *n)
+dll_variable (dll_handle h, const char *n)
{
return NULL;
}
-CONST char *
+const char *
dll_error (dll_handle h)
{
return "Shared libraries not implemented on this system";