chiark / gitweb /
Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/disorder
[disorder] / server / plugin.c
index 2032d9da259d848665199b8b8f40520654d4b46a..6856e711cef57b1e2be841ebe53db2f1ce8cea55 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004-2008 Richard Kettlewell
+ * Copyright (C) 2004-2009, 2011 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -15,7 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-
+/** @file server/plugin.c
+ * @brief Server plugin interface
+ */
 #include "disorder-server.h"
 
 #include <dlfcn.h>
 # define SOSUFFIX ".so"
 #endif
 
+/** @brief A loaded plugin */
 struct plugin {
+  /** @brief Next plugin */
   struct plugin *next;
+
+  /** @brief Handle returned from dlopen() */
   void *dlhandle;
+
+  /** @brief Plugin name */
   const char *name;
 };
 
@@ -52,7 +60,7 @@ const struct plugin *open_plugin(const char *name,
     if(access(p, R_OK) == 0) {
       h = dlopen(p, RTLD_NOW);
       if(!h) {
-       error(0, "error opening %s: %s", p, dlerror());
+       disorder_error(0, "error opening %s: %s", p, dlerror());
        continue;
       }
       pl = xmalloc(sizeof *pl);
@@ -63,7 +71,8 @@ const struct plugin *open_plugin(const char *name,
       return pl;
     }
   }
-  (flags & PLUGIN_FATAL ? fatal : error)(0, "cannot find plugin '%s'", name);
+  (flags & PLUGIN_FATAL ? disorder_fatal : disorder_error)
+    (0, "cannot find plugin '%s'", name);
   return 0;
 }
 
@@ -71,10 +80,10 @@ function_t *get_plugin_function(const struct plugin *pl,
                                const char *symbol) {
   function_t *f;
 
-  f = (function_t *)dlsym(pl->dlhandle, symbol);
+  f = (function_t *)dlfunc(pl->dlhandle, symbol);
   if(!f)
-    fatal(0, "error looking up function '%s' in '%s': %s",
-         symbol, pl->name, dlerror());
+    disorder_fatal(0, "error looking up function '%s' in '%s': %s",
+                  symbol, pl->name, dlerror());
   return f;
 }
 
@@ -84,8 +93,8 @@ const void *get_plugin_object(const struct plugin *pl,
 
   o = dlsym(pl->dlhandle, symbol);
   if(!o)
-    fatal(0, "error looking up object '%s' in '%s': %s",
-         symbol, pl->name, dlerror());
+    disorder_fatal(0, "error looking up object '%s' in '%s': %s",
+                  symbol, pl->name, dlerror());
   return o;
 }