summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-05-08 23:36:55 +0200
committerLennart Poettering <lennart@poettering.net>2012-05-08 23:36:55 +0200
commita5d87bf0eaf718afe62fb0b18c2f526c6e4375fc (patch)
tree0bc2a0f75c2cc0a061fd1fd7d6eb1a739aa55acc
parentd889a2069a87e4617b32ddbdeace5a53a12c699d (diff)
main: simplify+unify logic for parsing runtime booleans
-rw-r--r--src/core/main.c64
1 files changed, 37 insertions, 27 deletions
diff --git a/src/core/main.c b/src/core/main.c
index fe4522e9a0..58780990c8 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -760,9 +760,9 @@ static int parse_argv(int argc, char *argv[]) {
{ "test", no_argument, NULL, ARG_TEST },
{ "help", no_argument, NULL, 'h' },
{ "dump-configuration-items", no_argument, NULL, ARG_DUMP_CONFIGURATION_ITEMS },
- { "dump-core", no_argument, NULL, ARG_DUMP_CORE },
- { "crash-shell", no_argument, NULL, ARG_CRASH_SHELL },
- { "confirm-spawn", no_argument, NULL, ARG_CONFIRM_SPAWN },
+ { "dump-core", optional_argument, NULL, ARG_DUMP_CORE },
+ { "crash-shell", optional_argument, NULL, ARG_CRASH_SHELL },
+ { "confirm-spawn", optional_argument, NULL, ARG_CONFIRM_SPAWN },
{ "show-status", optional_argument, NULL, ARG_SHOW_STATUS },
#ifdef HAVE_SYSV_COMPAT
{ "sysv-console", optional_argument, NULL, ARG_SYSV_CONSOLE },
@@ -871,39 +871,49 @@ static int parse_argv(int argc, char *argv[]) {
break;
case ARG_DUMP_CORE:
- arg_dump_core = true;
+ r = optarg ? parse_boolean(optarg) : 1;
+ if (r < 0) {
+ log_error("Failed to parse dump core boolean %s.", optarg);
+ return r;
+ }
+ arg_dump_core = r;
break;
case ARG_CRASH_SHELL:
- arg_crash_shell = true;
+ r = optarg ? parse_boolean(optarg) : 1;
+ if (r < 0) {
+ log_error("Failed to parse crash shell boolean %s.", optarg);
+ return r;
+ }
+ arg_crash_shell = r;
break;
case ARG_CONFIRM_SPAWN:
- arg_confirm_spawn = true;
+ r = optarg ? parse_boolean(optarg) : 1;
+ if (r < 0) {
+ log_error("Failed to parse confirm spawn boolean %s.", optarg);
+ return r;
+ }
+ arg_confirm_spawn = r;
break;
case ARG_SHOW_STATUS:
-
- if (optarg) {
- if ((r = parse_boolean(optarg)) < 0) {
- log_error("Failed to show status boolean %s.", optarg);
- return r;
- }
- arg_show_status = r;
- } else
- arg_show_status = true;
+ r = optarg ? parse_boolean(optarg) : 1;
+ if (r < 0) {
+ log_error("Failed to parse show status boolean %s.", optarg);
+ return r;
+ }
+ arg_show_status = r;
break;
+
#ifdef HAVE_SYSV_COMPAT
case ARG_SYSV_CONSOLE:
-
- if (optarg) {
- if ((r = parse_boolean(optarg)) < 0) {
- log_error("Failed to SysV console boolean %s.", optarg);
- return r;
- }
- arg_sysv_console = r;
- } else
- arg_sysv_console = true;
+ r = optarg ? parse_boolean(optarg) : 1;
+ if (r < 0) {
+ log_error("Failed to parse SysV console boolean %s.", optarg);
+ return r;
+ }
+ arg_sysv_console = r;
break;
#endif
@@ -1014,9 +1024,9 @@ static int help(void) {
" --unit=UNIT Set default unit\n"
" --system Run a system instance, even if PID != 1\n"
" --user Run a user instance\n"
- " --dump-core Dump core on crash\n"
- " --crash-shell Run shell on crash\n"
- " --confirm-spawn Ask for confirmation when spawning processes\n"
+ " --dump-core[=0|1] Dump core on crash\n"
+ " --crash-shell[=0|1] Run shell on crash\n"
+ " --confirm-spawn[=0|1] Ask for confirmation when spawning processes\n"
" --show-status[=0|1] Show status updates on the console during bootup\n"
#ifdef HAVE_SYSV_COMPAT
" --sysv-console[=0|1] Connect output of SysV scripts to console\n"