diff options
author | Roy Marples <roy@marples.name> | 2008-01-13 17:47:23 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-01-13 17:47:23 +0000 |
commit | 87e4e4410cb542f3b56989d02e088c5efdfaf157 (patch) | |
tree | 14ffb2f5a665b6a9015925a8fed2ed0bb5fdc164 /src/rc | |
parent | abc7a79755c82ed5b6737901d71f8f7f15e1d992 (diff) |
Remove rc_service_plugable function and make it private as it needs to read from our config file.
Diffstat (limited to 'src/rc')
-rw-r--r-- | src/rc/rc-misc.c | 38 | ||||
-rw-r--r-- | src/rc/rc.c | 6 | ||||
-rw-r--r-- | src/rc/runscript.c | 2 |
3 files changed, 42 insertions, 4 deletions
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); } |