From 87e4e4410cb542f3b56989d02e088c5efdfaf157 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Sun, 13 Jan 2008 17:47:23 +0000 Subject: Remove rc_service_plugable function and make it private as it needs to read from our config file. --- src/rc/rc-misc.c | 38 ++++++++++++++++++++++++++++++++++++++ src/rc/rc.c | 6 +++--- src/rc/runscript.c | 2 +- 3 files changed, 42 insertions(+), 4 deletions(-) (limited to 'src/rc') diff --git a/src/rc/rc-misc.c b/src/rc/rc-misc.c index 0d6be40d..fe6022e2 100644 --- a/src/rc/rc-misc.c +++ b/src/rc/rc-misc.c @@ -387,3 +387,41 @@ char **env_config (void) free (runlevel); return (env); } + +bool service_plugable (const char *service) +{ + char *list; + char *p; + char *star; + char *token; + bool allow = true; + char *match = rc_conf_value ("rc_plug_services"); + if (! match) + return true; + + list = xstrdup (match); + p = list; + while ((token = strsep (&p, " "))) { + bool truefalse = true; + if (token[0] == '!') { + truefalse = false; + token++; + } + + star = strchr (token, '*'); + if (star) { + if (strncmp (service, token, star - token) == 0) { + allow = truefalse; + break; + } + } else { + if (strcmp (service, token) == 0) { + allow = truefalse; + break; + } + } + } + + free (list); + return (allow); +} diff --git a/src/rc/rc.c b/src/rc/rc.c index 4bf6541e..6fcbd981 100644 --- a/src/rc/rc.c +++ b/src/rc/rc.c @@ -1195,7 +1195,7 @@ int main (int argc, char **argv) continue; if (rc_service_exists (d->d_name) && - rc_service_plugable (d->d_name)) + service_plugable (d->d_name)) rc_service_mark (d->d_name, RC_SERVICE_COLDPLUGGED); i = strlen (DEVBOOT "/") + strlen (d->d_name) + 1; @@ -1229,7 +1229,7 @@ int main (int argc, char **argv) tmp = xmalloc (sizeof (char) * i); snprintf (tmp, i, "net.%s", d->d_name); if (rc_service_exists (tmp) && - rc_service_plugable (tmp)) + service_plugable (tmp)) rc_service_mark (tmp, RC_SERVICE_COLDPLUGGED); CHAR_FREE (tmp); } @@ -1250,7 +1250,7 @@ int main (int argc, char **argv) tmp = xmalloc (sizeof (char) * i); snprintf (tmp, i, "moused.%s", d->d_name); if (rc_service_exists (tmp) && - rc_service_plugable (tmp)) + service_plugable (tmp)) rc_service_mark (tmp, RC_SERVICE_COLDPLUGGED); CHAR_FREE (tmp); } diff --git a/src/rc/runscript.c b/src/rc/runscript.c index 1f3d6625..e136e944 100644 --- a/src/rc/runscript.c +++ b/src/rc/runscript.c @@ -1185,7 +1185,7 @@ int runscript (int argc, char **argv) } if (rc_yesno (getenv ("IN_HOTPLUG"))) { - if (! rc_conf_yesno ("rc_hotplug") || ! rc_service_plugable (applet)) + if (! rc_conf_yesno ("rc_hotplug") || ! service_plugable (applet)) eerrorx ("%s: not allowed to be hotplugged", applet); } -- cgit v1.2.3