diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-08-20 00:15:05 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-08-20 00:18:14 +0200 |
commit | dad29dff1925a114e20d4eb7b47fca23c4f25fd7 (patch) | |
tree | e48b3cec55288b8fced0cf6076ac86e487011f58 /src/analyze/analyze.c | |
parent | f9ffbca2fb1ba7a7854d83439a4644590be0d9e1 (diff) |
cmdline: for new tools avoid introduce new negative switches, and properly align --help texts
Negative switches are a bad un-normalized thing. We alerady have some,
but we should try harder to avoid intrdoucing new ones.
Hence, instead of adding two switches:
--foobar
--no-foobar
Let's instead use the syntax
--foobar
--foobar=yes
--foobar=no
Where the first two are equivalent. The boolean argument is parsed
following the usual rules.
Change all new negative switches this way.
This patch also properly aligns the --help table, so that single char
switches always get a column separate of the long switches.
Diffstat (limited to 'src/analyze/analyze.c')
-rw-r--r-- | src/analyze/analyze.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index b8b47ed396..d860a022b7 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -1202,7 +1202,7 @@ static void help(void) { " services, which finished TIMESPAN earlier, than the\n" " latest in the branch. The unit of TIMESPAN is seconds\n" " unless specified with a different unit, i.e. 50ms\n" - " --no-man Do not check for existence of man pages\n\n" + " --man[=BOOL] Do [not] check for existence of man pages\n\n" "Commands:\n" " time Print time spent in the kernel before reaching userspace\n" " blame Print list of running units ordered by time to init\n" @@ -1230,7 +1230,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_DOT_TO_PATTERN, ARG_FUZZ, ARG_NO_PAGER, - ARG_NO_MAN, + ARG_MAN, }; static const struct option options[] = { @@ -1244,7 +1244,7 @@ static int parse_argv(int argc, char *argv[]) { { "to-pattern", required_argument, NULL, ARG_DOT_TO_PATTERN }, { "fuzz", required_argument, NULL, ARG_FUZZ }, { "no-pager", no_argument, NULL, ARG_NO_PAGER }, - { "no-man", no_argument, NULL, ARG_NO_MAN }, + { "man", optional_argument, NULL, ARG_MAN }, { "host", required_argument, NULL, 'H' }, { "machine", required_argument, NULL, 'M' }, {} @@ -1315,8 +1315,18 @@ static int parse_argv(int argc, char *argv[]) { arg_host = optarg; break; - case ARG_NO_MAN: - arg_man = false; + case ARG_MAN: + if (optarg) { + r = parse_boolean(optarg); + if (r < 0) { + log_error("Failed to parse --man= argument."); + return -EINVAL; + } + + arg_man = !!r; + } else + arg_man = true; + break; case '?': |