X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/05b75f8d50b83e943af3be4071449304d82dbdcd..7489d3af05a4394e9621e14a196a9f6c4f788a26:/server/plugin.c
diff --git a/server/plugin.c b/server/plugin.c
index a0c7d35..6a78693 100644
--- a/server/plugin.c
+++ b/server/plugin.c
@@ -1,23 +1,23 @@
/*
* 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
+ * 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
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
+ * along with this program. If not, see .
+ */
+/** @file server/plugin.c
+ * @brief Server plugin interface
*/
-
#include "disorder-server.h"
#include
@@ -28,9 +28,15 @@
# 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;
};
@@ -54,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);
@@ -65,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;
}
@@ -75,8 +82,8 @@ function_t *get_plugin_function(const struct plugin *pl,
f = (function_t *)dlsym(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;
}
@@ -86,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;
}