Mirror the action of rc-update in baselayout-1, with the exception of adding to the currnet runlevel if no runlevel specified.
This commit is contained in:
parent
9a6cfc0a9b
commit
2c3c27e251
@ -243,26 +243,33 @@ int rc_update (int argc, char **argv)
|
|||||||
else {
|
else {
|
||||||
ssize_t num_updated = 0;
|
ssize_t num_updated = 0;
|
||||||
ssize_t (*actfunc)(const char *, const char *);
|
ssize_t (*actfunc)(const char *, const char *);
|
||||||
if (action & DOADD)
|
|
||||||
|
if (action & DOADD) {
|
||||||
actfunc = add;
|
actfunc = add;
|
||||||
else if (action & DODELETE)
|
if (! runlevels)
|
||||||
|
rc_strlist_add (&runlevels, rc_runlevel_get ());
|
||||||
|
} else if (action & DODELETE) {
|
||||||
actfunc = delete;
|
actfunc = delete;
|
||||||
else
|
if (! runlevels)
|
||||||
|
runlevels = rc_runlevel_list ();
|
||||||
|
} else
|
||||||
eerrorx ("%s: invalid action", applet);
|
eerrorx ("%s: invalid action", applet);
|
||||||
|
|
||||||
if (! runlevels)
|
if (! runlevels)
|
||||||
runlevels = rc_runlevel_list ();
|
eerrorx ("%s: no runlevels found", applet);
|
||||||
|
|
||||||
STRLIST_FOREACH (runlevels, runlevel, i) {
|
STRLIST_FOREACH (runlevels, runlevel, i) {
|
||||||
ssize_t ret = actfunc (runlevel, service);
|
ssize_t ret = actfunc (runlevel, service);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
retval = EXIT_FAILURE;
|
retval = EXIT_FAILURE;
|
||||||
num_updated += ret;
|
num_updated += ret;
|
||||||
}
|
}
|
||||||
if (retval == EXIT_SUCCESS && num_updated == 0)
|
|
||||||
|
if (retval == EXIT_SUCCESS && num_updated == 0 && action & DODELETE)
|
||||||
ewarnx ("%s: service `%s' not found in any of the specified runlevels", applet, service);
|
ewarnx ("%s: service `%s' not found in any of the specified runlevels", applet, service);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rc_strlist_free (runlevels);
|
rc_strlist_free (runlevels);
|
||||||
|
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user