mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-10-27 18:55:09 +03:00
main: implement --test
This commit is contained in:
parent
2f357920ff
commit
e965d56dac
34
main.c
34
main.c
@ -35,7 +35,8 @@
|
|||||||
|
|
||||||
static enum {
|
static enum {
|
||||||
ACTION_RUN,
|
ACTION_RUN,
|
||||||
ACTION_HELP
|
ACTION_HELP,
|
||||||
|
ACTION_TEST
|
||||||
} action = ACTION_RUN;
|
} action = ACTION_RUN;
|
||||||
|
|
||||||
static char *default_unit = NULL;
|
static char *default_unit = NULL;
|
||||||
@ -134,7 +135,8 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
ARG_LOG_LEVEL = 0x100,
|
ARG_LOG_LEVEL = 0x100,
|
||||||
ARG_LOG_TARGET,
|
ARG_LOG_TARGET,
|
||||||
ARG_DEFAULT,
|
ARG_DEFAULT,
|
||||||
ARG_RUNNING_AS
|
ARG_RUNNING_AS,
|
||||||
|
ARG_TEST
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct option options[] = {
|
static const struct option options[] = {
|
||||||
@ -142,6 +144,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
{ "log-target", required_argument, NULL, ARG_LOG_TARGET },
|
{ "log-target", required_argument, NULL, ARG_LOG_TARGET },
|
||||||
{ "default", required_argument, NULL, ARG_DEFAULT },
|
{ "default", required_argument, NULL, ARG_DEFAULT },
|
||||||
{ "running-as", required_argument, NULL, ARG_RUNNING_AS },
|
{ "running-as", required_argument, NULL, ARG_RUNNING_AS },
|
||||||
|
{ "test", no_argument, NULL, ARG_TEST },
|
||||||
{ "help", no_argument, NULL, 'h' },
|
{ "help", no_argument, NULL, 'h' },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
@ -193,6 +196,10 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ARG_TEST:
|
||||||
|
action = ACTION_TEST;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
action = ACTION_HELP;
|
action = ACTION_HELP;
|
||||||
break;
|
break;
|
||||||
@ -220,7 +227,8 @@ static int help(void) {
|
|||||||
" --default=UNIT Set default unit\n"
|
" --default=UNIT Set default unit\n"
|
||||||
" --log-level=LEVEL Set log level\n"
|
" --log-level=LEVEL Set log level\n"
|
||||||
" --log-target=TARGET Set log target (console, syslog, kmsg)\n"
|
" --log-target=TARGET Set log target (console, syslog, kmsg)\n"
|
||||||
" --running-as=AS Set running as (init, system, sesstion)\n",
|
" --running-as=AS Set running as (init, system, sesstion)\n"
|
||||||
|
" --test Determine startup sequence, dump it and exit\n",
|
||||||
__progname);
|
__progname);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -266,7 +274,7 @@ int main(int argc, char *argv[]) {
|
|||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_se(action == ACTION_RUN);
|
assert_se(action == ACTION_RUN || action == ACTION_TEST);
|
||||||
|
|
||||||
/* Move out of the way, so that we won't block unmounts */
|
/* Move out of the way, so that we won't block unmounts */
|
||||||
assert_se(chdir("/") == 0);
|
assert_se(chdir("/") == 0);
|
||||||
@ -303,16 +311,26 @@ int main(int argc, char *argv[]) {
|
|||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("→ By units:\n");
|
if (action == ACTION_TEST) {
|
||||||
manager_dump_units(m, stdout, "\t");
|
printf("→ By units:\n");
|
||||||
|
manager_dump_units(m, stdout, "\t");
|
||||||
|
}
|
||||||
|
|
||||||
if ((r = manager_add_job(m, JOB_START, target, JOB_REPLACE, false, &job)) < 0) {
|
if ((r = manager_add_job(m, JOB_START, target, JOB_REPLACE, false, &job)) < 0) {
|
||||||
log_error("Failed to start default target: %s", strerror(-r));
|
log_error("Failed to start default target: %s", strerror(-r));
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("→ By jobs:\n");
|
if (action == ACTION_TEST) {
|
||||||
manager_dump_jobs(m, stdout, "\t");
|
printf("→ By jobs:\n");
|
||||||
|
manager_dump_jobs(m, stdout, "\t");
|
||||||
|
|
||||||
|
if (getpid() == 1)
|
||||||
|
pause();
|
||||||
|
|
||||||
|
retval = 0;
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
if ((r = manager_loop(m)) < 0) {
|
if ((r = manager_loop(m)) < 0) {
|
||||||
log_error("Failed to run mainloop: %s", strerror(-r));
|
log_error("Failed to run mainloop: %s", strerror(-r));
|
||||||
|
Loading…
Reference in New Issue
Block a user