Remove rc_service_plugable function and make it private as it needs to read from our config file.

This commit is contained in:
Roy Marples 2008-01-13 17:47:23 +00:00
parent abc7a79755
commit 87e4e4410c
8 changed files with 43 additions and 50 deletions

View File

@ -115,6 +115,7 @@ char *rc_conf_value (const char *var);
bool rc_conf_yesno (const char *var);
char **env_filter (void);
char **env_config (void);
bool service_plugable (const char *service);
/* basename_c never modifies the argument. As such, if there is a trailing
* slash then an empty string is returned. */

View File

@ -833,42 +833,3 @@ char **rc_services_scheduled (const char *service)
return (list);
}
librc_hidden_def(rc_services_scheduled)
bool rc_service_plugable (const char *service)
{
char *list;
char *p;
char *star;
char *token;
bool allow = true;
char *match = getenv ("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);
}
librc_hidden_def(rc_service_plugable)

View File

@ -99,7 +99,6 @@ librc_hidden_proto(rc_service_exists)
librc_hidden_proto(rc_service_extra_commands)
librc_hidden_proto(rc_service_in_runlevel)
librc_hidden_proto(rc_service_mark)
librc_hidden_proto(rc_service_plugable)
librc_hidden_proto(rc_service_resolve)
librc_hidden_proto(rc_service_schedule_clear)
librc_hidden_proto(rc_service_schedule_start)

View File

@ -148,11 +148,6 @@ bool rc_service_mark (const char *service, rc_service_state_t state);
* @return NULL terminated string list of commands */
char **rc_service_extra_commands (const char *service);
/*! Check if the service is allowed to be hot/cold plugged
* @param service to check
* @return true if allowed, otherwise false */
bool rc_service_plugable (const char *service);
/*! Resolves a service name to its full path.
* @param service to check
* @return pointer to full path of service */

View File

@ -28,7 +28,6 @@ global:
rc_service_in_runlevel;
rc_service_mark;
rc_service_options;
rc_service_plugable;
rc_service_resolve;
rc_service_schedule_clear;
rc_service_schedule_start;

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}