X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/132a5a4a47f9dbc7c52ee15234d70258c59ccf8e..f4604d0d467ae510f8167d3109e6fd05f57f1cde:/server/plugin.c diff --git a/server/plugin.c b/server/plugin.c index 6695d5a..6a78693 100644 --- a/server/plugin.c +++ b/server/plugin.c @@ -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 @@ -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; }