Merge pull request #6637 from sourcejedi/systemctl_cleanup
systemctl: improve readability of start_unit()
This commit is contained in:
+21
-13
@@ -145,7 +145,6 @@ static char *arg_root = NULL;
|
||||
static usec_t arg_when = 0;
|
||||
static char *argv_cmdline = NULL;
|
||||
static enum action {
|
||||
_ACTION_INVALID,
|
||||
ACTION_SYSTEMCTL,
|
||||
ACTION_HALT,
|
||||
ACTION_POWEROFF,
|
||||
@@ -166,7 +165,8 @@ static enum action {
|
||||
ACTION_REEXEC,
|
||||
ACTION_RUNLEVEL,
|
||||
ACTION_CANCEL_SHUTDOWN,
|
||||
_ACTION_MAX
|
||||
_ACTION_MAX,
|
||||
_ACTION_INVALID = -1
|
||||
} arg_action = ACTION_SYSTEMCTL;
|
||||
static BusTransport arg_transport = BUS_TRANSPORT_LOCAL;
|
||||
static const char *arg_host = NULL;
|
||||
@@ -3052,7 +3052,7 @@ static const struct {
|
||||
static enum action verb_to_action(const char *verb) {
|
||||
enum action i;
|
||||
|
||||
for (i = _ACTION_INVALID; i < _ACTION_MAX; i++)
|
||||
for (i = 0; i < _ACTION_MAX; i++)
|
||||
if (streq_ptr(action_table[i].verb, verb))
|
||||
return i;
|
||||
|
||||
@@ -3068,8 +3068,8 @@ static int start_unit(int argc, char *argv[], void *userdata) {
|
||||
char **name;
|
||||
int r = 0;
|
||||
|
||||
if (arg_wait && !strstr(argv[0], "start")) {
|
||||
log_error("--wait may only be used with a command that starts units.");
|
||||
if (arg_wait && !STR_IN_SET(argv[0], "start", "restart")) {
|
||||
log_error("--wait may only be used with the 'start' or 'restart' commands.");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -3085,22 +3085,30 @@ static int start_unit(int argc, char *argv[], void *userdata) {
|
||||
if (arg_action == ACTION_SYSTEMCTL) {
|
||||
enum action action;
|
||||
|
||||
method = verb_to_method(argv[0]);
|
||||
action = verb_to_action(argv[0]);
|
||||
|
||||
if (streq(argv[0], "isolate")) {
|
||||
mode = "isolate";
|
||||
suffix = ".target";
|
||||
} else
|
||||
mode = action_table[action].mode ?: arg_job_mode;
|
||||
if (action != _ACTION_INVALID) {
|
||||
method = "StartUnit";
|
||||
mode = action_table[action].mode;
|
||||
one_name = action_table[action].target;
|
||||
} else {
|
||||
if (streq(argv[0], "isolate")) {
|
||||
method = "StartUnit";
|
||||
mode = "isolate";
|
||||
|
||||
one_name = action_table[action].target;
|
||||
suffix = ".target";
|
||||
} else {
|
||||
method = verb_to_method(argv[0]);
|
||||
mode = arg_job_mode;
|
||||
}
|
||||
one_name = NULL;
|
||||
}
|
||||
} else {
|
||||
assert(arg_action < ELEMENTSOF(action_table));
|
||||
assert(action_table[arg_action].target);
|
||||
assert(action_table[arg_action].mode);
|
||||
|
||||
method = "StartUnit";
|
||||
|
||||
mode = action_table[arg_action].mode;
|
||||
one_name = action_table[arg_action].target;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user