diff src/sysdll.c @ 276:6330739388db r21-0b36

Import from CVS: tag r21-0b36
author cvs
date Mon, 13 Aug 2007 10:30:37 +0200
parents c5d627a313b1
children 8626e4521993
line wrap: on
line diff
--- a/src/sysdll.c	Mon Aug 13 10:29:43 2007 +0200
+++ b/src/sysdll.c	Mon Aug 13 10:30:37 2007 +0200
@@ -44,184 +44,245 @@
 #include <dlfcn.h>
 
 #ifndef RTLD_LAZY
-#define RTLD_LAZY 1
+# define RTLD_LAZY 1
 #endif /* RTLD_LAZY isn't defined under FreeBSD - ick */
 
 #ifndef RTLD_GLOBAL
-#define RTLD_GLOBAL 0
+# define RTLD_GLOBAL 0
 #endif
 
-int dll_init(CONST char *arg) {
-  return(0);
+int
+dll_init (CONST char *arg)
+{
+  return 0;
 }
 
-dll_handle dll_open(CONST char *fname) {
-  return((dll_handle)dlopen(fname,RTLD_LAZY|RTLD_GLOBAL));
+dll_handle
+dll_open (CONST char *fname)
+{
+  return (dll_handle)dlopen (fname, RTLD_LAZY | RTLD_GLOBAL);
 }
 
-int dll_close(dll_handle h) {
-  return(dlclose((void *)h));
+int
+dll_close (dll_handle h)
+{
+  return dlclose((void *)h);
 }
 
-dll_func dll_function(dll_handle h,CONST char *n) {
+dll_func
+dll_function (dll_handle h, CONST char *n)
+{
 #ifdef DLSYM_NEEDS_UNDERSCORE
-    char buf[1024];
-    *buf = '_';
-    (void)strcpy(buf + 1, n);
-    n = buf;
+  char *buf = alloca_array (char, strlen (n) + 2);
+  *buf = '_';
+  (void)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) {
-  return((dll_var)dlsym((void *)h,n));
+dll_var
+dll_variable (dll_handle h, CONST char *n)
+{
+  return (dll_var)dlsym ((void *)h, n);
 }
 
-CONST char *dll_error(dll_handle h) {
+CONST char *
+dll_error (dll_handle h)
+{
 #ifdef HAVE_DLERROR
-  return((CONST char *)dl_error());
+  return (CONST char *)dlerror ();
 #else
-  return("Shared library error");
+  return "Shared library error";
 #endif
 }
 
 #elif defined(HAVE_SHL_LOAD)
 /* This is the HP/UX version */
 #include <dl.h>
-int dll_init(CONST char *arg) {
-  return(0);
+int
+dll_init (CONST char *arg)
+{
+  return 0;
 }
 
-dll_handle dll_open(CONST char *fname) {
-  shl_t h = shl_load(fname,BIND_DEFERRED,0L);
+dll_handle
+dll_open (CONST char *fname)
+{
+  shl_t h = shl_load (fname, BIND_DEFERRED,0L);
   shl_t *hp = NULL;
 
-  if (h) {
-    hp = (shl_t *)malloc(sizeof(shl_t));
-    if (!hp) {
-      shl_unload(h);
-    } else {
-      *hp = h;
+  if (h)
+    {
+      hp = (shl_t *)malloc (sizeof (shl_t));
+      if (!hp)
+	shl_unload(h);
+      else
+	*hp = h;
     }
-  }
-  return((dll_handle)hp);
+  return (dll_handle)hp;
 }
 
-int dll_close(dll_handle h) {
+int
+dll_close (dll_handle h)
+{
   shl_t hp = *((shl_t *)h);
-  free(hp);
-  return (shl_unload(h));
+  free (hp);
+  return shl_unload(h);
 }
 
-dll_func dll_function(dll_handle h,CONST char *n) {
+dll_func
+dll_function (dll_handle h, CONST char *n)
+{
   long handle = 0L;
 
-  if (shl_findsym((shl_t *)h,n,TYPE_PROCEDURE,&handle))
-    return(NULL);
+  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_var
+dll_variable (dll_handle h, CONST char *n)
+{
   long handle = 0L;
 
-  if (shl_findsym((shl_t *)h,n,TYPE_DATA,&handle))
-    return(NULL);
+  if (shl_findsym ((shl_t *)h, n, TYPE_DATA, &handle))
+    return NULL;
 
-  return((dll_var)handle);
+  return (dll_var)handle;
 }
 
-CONST char *dll_error(dll_handle h) {
-  return("Generic shared library error");
+CONST char *
+dll_error (dll_handle h)
+{
+  /* #### WTF?!  Shouldn't this at least attempt to get strerror or
+     something?  --hniksic */
+  return "Generic shared library error";
 }
 
 #elif defined(HAVE_INIT_DLD)
 #include <dld.h>
-int dll_init(CONST char *arg) {
-  char *real_exe = dld_find_executable(arg);
+int
+dll_init (CONST char *arg)
+{
+  char *real_exe = dld_find_executable (arg);
   int rc;
 
-  rc = dld_init(real_exe);
-  if (rc) {
-    dld_perror (exe);
-    return(-1);
-  }
-  return(0);
+  rc = dld_init (real_exe);
+  if (rc)
+    {
+      dld_perror (exe);
+      return -1;
+    }
+  return 0;
 }
 
-dll_handle dll_open(CONST char *fname) {
-  rc = dld_link(fname);
-  if (rc) {
-    return (NULL);
-  }
-  return((dll_handle)1);
+dll_handle
+dll_open (CONST char *fname)
+{
+  rc = dld_link (fname);
+  if (rc)
+    return NULL;
+
+  return (dll_handle)1;
 }
 
-int dll_close(dll_handle h) {
+int
+dll_close (dll_handle h)
+{
   /* *sigh* DLD is pretty lame and doesn't return a handle that you can use
   ** later on to free the file - you have to remember the filename and
   ** use that as the unlinker.  We should eventually keep a linked list
   ** of loaded modules and then use the node pointer as the unique id
   ** for the shared library.  Wheeee.  But not now.
   */
-  return(1);
+  return 1;
 }
 
-DLL_FUNC dll_function(dll_handle h,CONST char *n) {
-  return (dld_get_func(n));
+DLL_FUNC
+dll_function (dll_handle h, CONST char *n)
+{
+  return dld_get_func(n);
 }
 
-DLL_FUNC dll_variable(dll_handle h,CONST char *n) {
-  return (dld_get_symbol(n));
+DLL_FUNC
+dll_variable (dll_handle h, CONST char *n)
+{
+  return dld_get_symbol(n);
 }
 #elif defined(_WINDOWS) || defined(WIN32)
-int dll_init(CONST char *arg) {
-  return(0);
+int
+dll_init (CONST char *arg)
+{
+  return 0;
 }
 
-dll_handle dll_open(CONST char *fname) {
-  return((dll_handle)LoadLibrary(fname));
+dll_handle
+dll_open (CONST char *fname)
+{
+  return (dll_handle)LoadLibrary (fname);
 }
 
-int dll_close(dll_handle h) {
-  return(FreeLibrary(h));
+int
+dll_close (dll_handle h)
+{
+  return FreeLibrary (h);
 }
 
-dll_func dll_function(dll_handle h,CONST char *n) {
-  return((dll_func)GetProcAddress(h,n));
+dll_func
+dll_function (dll_handle h, CONST char *n)
+{
+  return (dll_func)GetProcAddress (h,n);
 }
 
-dll_func dll_variable(dll_handle h,CONST char *n) {
-  return((dll_func)GetProcAddress(h,n));
+dll_func
+dll_variable (dll_handle h, CONST char *n)
+{
+  return (dll_func)GetProcAddress (h,n);
 }
 
-CONST char *dll_error(dll_handle h) {
-  return("Windows DLL Error");
+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) {
-  return(-1);
+int
+dll_init (CONST char *arg)
+{
+  return -1;
 }
 
-dll_handle dll_open(CONST char *fname) {
-  return(NULL);
+dll_handle
+dll_open (CONST char *fname)
+{
+  return NULL;
 }
 
-int dll_close(dll_handle h) {
-  return(0);
+int
+dll_close (dll_handle h)
+{
+  return 0;
 }
 
-dll_func dll_function(dll_handle h,CONST char *n) {
-  return(NULL);
+dll_func
+dll_function (dll_handle h, CONST char *n)
+{
+  return NULL;
 }
 
-dll_func dll_variable(dll_handle h,CONST char *n) {
-  return(NULL);
+dll_func
+dll_variable (dll_handle h, CONST char *n)
+{
+  return NULL;
 }
 
-CONST char *dll_error(dll_handle h) {
-  return("Shared libraries not implemented on this system.");
+CONST char *
+dll_error (dll_handle h)
+{
+  return "Shared libraries not implemented on this system";
 }
 #endif /* System conditionals */