X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/05b75f8d50b83e943af3be4071449304d82dbdcd..8a886602880a1a0b65de4e062d4be178dee4d181:/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; }