diff options
author | Roy Marples <roy@marples.name> | 2007-09-19 09:00:43 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2007-09-19 09:00:43 +0000 |
commit | 5248fb52fa428f2a966a10d0db8991ef26c96b02 (patch) | |
tree | a15ad0c751aa174426db333cd183eb4b0ef6dc52 /src/rc-plugin.c | |
parent | 726e754fff24d810d39806f7d75504c4d1ca222a (diff) |
plugin hook function is now rc_plugin_hook instead of a name based
on the name of the plugin.
Diffstat (limited to 'src/rc-plugin.c')
-rw-r--r-- | src/rc-plugin.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/src/rc-plugin.c b/src/rc-plugin.c index 5e74fb73..76b8e08e 100644 --- a/src/rc-plugin.c +++ b/src/rc-plugin.c @@ -20,6 +20,8 @@ #include "rc-plugin.h" #include "strlist.h" +#define RC_PLUGIN_HOOK "rc_plugin_hook" + bool rc_in_plugin = false; typedef struct plugin @@ -66,9 +68,7 @@ void rc_plugin_load (void) STRLIST_FOREACH (files, file, i) { char *p = rc_strcatpaths (RC_PLUGINDIR, file, NULL); void *h = dlopen (p, RTLD_LAZY); - char *func; int (*fptr) (rc_hook_t, const char *); - int len; free (p); if (! h) { @@ -76,15 +76,9 @@ void rc_plugin_load (void) continue; } - func = file; - file = strsep (&func, "."); - len = strlen (file) + 7; - func = rc_xmalloc (sizeof (char *) * len); - snprintf (func, len, "_%s_hook", file); - - fptr = (int (*)(rc_hook_t, const char*)) dlfunc (h, func); + fptr = (int (*)(rc_hook_t, const char*)) dlfunc (h, RC_PLUGIN_HOOK); if (! fptr) { - eerror ("`%s' does not expose the symbol `%s'", p, func); + eerror ("%s: cannot find symbol `%s'", file, RC_PLUGIN_HOOK); dlclose (h); } else { if (plugin) { @@ -98,8 +92,6 @@ void rc_plugin_load (void) plugin->handle = h; plugin->hook = fptr; } - - free (func); } rc_strlist_free (files); |