chiark
/
gitweb
/
~mdw
/
disorder
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
server/*.c: Don't try reading per-user configuration.
[disorder]
/
server
/
plugin.c
diff --git
a/server/plugin.c
b/server/plugin.c
index 2032d9da259d848665199b8b8f40520654d4b46a..6856e711cef57b1e2be841ebe53db2f1ce8cea55 100644
(file)
--- a/
server/plugin.c
+++ b/
server/plugin.c
@@
-1,6
+1,6
@@
/*
* This file is part of DisOrder.
/*
* This file is part of DisOrder.
- * Copyright (C) 2004-200
8
Richard Kettlewell
+ * Copyright (C) 2004-200
9, 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
*
* 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/>.
*/
* 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>
#include "disorder-server.h"
#include <dlfcn.h>
@@
-26,9
+28,15
@@
# define SOSUFFIX ".so"
#endif
# define SOSUFFIX ".so"
#endif
+/** @brief A loaded plugin */
struct plugin {
struct plugin {
+ /** @brief Next plugin */
struct plugin *next;
struct plugin *next;
+
+ /** @brief Handle returned from dlopen() */
void *dlhandle;
void *dlhandle;
+
+ /** @brief Plugin name */
const char *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) {
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);
continue;
}
pl = xmalloc(sizeof *pl);
@@
-63,7
+71,8
@@
const struct plugin *open_plugin(const char *name,
return pl;
}
}
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;
}
return 0;
}
@@
-71,10
+80,10
@@
function_t *get_plugin_function(const struct plugin *pl,
const char *symbol) {
function_t *f;
const char *symbol) {
function_t *f;
- f = (function_t *)dl
sym
(pl->dlhandle, symbol);
+ f = (function_t *)dl
func
(pl->dlhandle, symbol);
if(!f)
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;
}
return f;
}
@@
-84,8
+93,8
@@
const void *get_plugin_object(const struct plugin *pl,
o = dlsym(pl->dlhandle, symbol);
if(!o)
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;
}
return o;
}