From 5248fb52fa428f2a966a10d0db8991ef26c96b02 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Wed, 19 Sep 2007 09:00:43 +0000 Subject: [PATCH] plugin hook function is now rc_plugin_hook instead of a name based on the name of the plugin. --- ChangeLog | 5 +++++ src/rc-misc.h | 28 ++++++++++++++-------------- src/rc-plugin.c | 16 ++++------------ 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4cc1f3c0..7c1be27f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for Gentoo System Intialization ("rc") scripts # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPLv2 + 19 Sep 2007; Roy Marples : + + plugin hook function is now rc_plugin_hook instead of a name based + on the name of the plugin. + 18 Sep 2007; Roy Marples : Only mount /sys if it's not mounted, #192436. diff --git a/src/rc-misc.h b/src/rc-misc.h index f10a83da..ec29987e 100644 --- a/src/rc-misc.h +++ b/src/rc-misc.h @@ -11,31 +11,31 @@ # define LIB "lib" #endif -#define RC_LEVEL_BOOT "boot" -#define RC_LEVEL_DEFAULT "default" +#define RC_LEVEL_BOOT "boot" +#define RC_LEVEL_DEFAULT "default" -#define RC_LIBDIR "/" LIB "/rcscripts" -#define RC_SVCDIR RC_LIBDIR "/init.d" -#define RC_DEPTREE RC_SVCDIR "/deptree" -#define RC_RUNLEVELDIR "/etc/runlevels" -#define RC_INITDIR "/etc/init.d" -#define RC_CONFDIR "/etc/conf.d" +#define RC_LIBDIR "/" LIB "/rcscripts" +#define RC_SVCDIR RC_LIBDIR "/init.d" +#define RC_DEPTREE RC_SVCDIR "/deptree" +#define RC_RUNLEVELDIR "/etc/runlevels" +#define RC_INITDIR "/etc/init.d" +#define RC_CONFDIR "/etc/conf.d" #define RC_KSOFTLEVEL RC_SVCDIR "/ksoftlevel" #define RC_STARTING RC_SVCDIR "/softscripts.new" #define RC_STOPPING RC_SVCDIR "/softscripts.old" -#define RC_SVCDIR_STARTING RC_SVCDIR "/starting" -#define RC_SVCDIR_INACTIVE RC_SVCDIR "/inactive" -#define RC_SVCDIR_STARTED RC_SVCDIR "/started" +#define RC_SVCDIR_STARTING RC_SVCDIR "/starting" +#define RC_SVCDIR_INACTIVE RC_SVCDIR "/inactive" +#define RC_SVCDIR_STARTED RC_SVCDIR "/started" #define RC_SVCDIR_COLDPLUGGED RC_SVCDIR "/coldplugged" -#define RC_PLUGINDIR RC_LIBDIR "/plugins" +#define RC_PLUGINDIR RC_LIBDIR "/plugins" /* Max buffer to read a line from a file */ -#define RC_LINEBUFFER 4096 +#define RC_LINEBUFFER 4096 /* Good defaults just incase user has none set */ -#define RC_NET_FS_LIST_DEFAULT "afs cifs coda davfs fuse gfs ncpfs nfs nfs4 ocfs2 shfs smbfs" +#define RC_NET_FS_LIST_DEFAULT "afs cifs coda davfs fuse gfs ncpfs nfs nfs4 ocfs2 shfs smbfs" #endif 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);