diff options
author | Jiri Olsa <jolsa@kernel.org> | 2017-01-03 03:19:54 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2017-01-03 09:10:38 -0500 |
commit | b66fb1da5a8cac3f5c3cdbe41937c91efc4e76a4 (patch) | |
tree | 66f45f717f76deb0e564013c68772f948037fe88 | |
parent | 1f2ed153b916c95a49a1ca9d7107738664224b7f (diff) |
tools lib subcmd: Add OPT_STRING_OPTARG_SET option
To allow string options with a default argument and variable set when
the option is used.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Wang Nan <wangnan0@huawei.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1483431600-19887-2-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/lib/subcmd/parse-options.c | 3 | ||||
-rw-r--r-- | tools/lib/subcmd/parse-options.h | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/tools/lib/subcmd/parse-options.c b/tools/lib/subcmd/parse-options.c index 3284bb14ae78..8aad81151d50 100644 --- a/tools/lib/subcmd/parse-options.c +++ b/tools/lib/subcmd/parse-options.c | |||
@@ -213,6 +213,9 @@ static int get_value(struct parse_opt_ctx_t *p, | |||
213 | else | 213 | else |
214 | err = get_arg(p, opt, flags, (const char **)opt->value); | 214 | err = get_arg(p, opt, flags, (const char **)opt->value); |
215 | 215 | ||
216 | if (opt->set) | ||
217 | *(bool *)opt->set = true; | ||
218 | |||
216 | /* PARSE_OPT_NOEMPTY: Allow NULL but disallow empty string. */ | 219 | /* PARSE_OPT_NOEMPTY: Allow NULL but disallow empty string. */ |
217 | if (opt->flags & PARSE_OPT_NOEMPTY) { | 220 | if (opt->flags & PARSE_OPT_NOEMPTY) { |
218 | const char *val = *(const char **)opt->value; | 221 | const char *val = *(const char **)opt->value; |
diff --git a/tools/lib/subcmd/parse-options.h b/tools/lib/subcmd/parse-options.h index 8866ac438b34..11c3be3bcce7 100644 --- a/tools/lib/subcmd/parse-options.h +++ b/tools/lib/subcmd/parse-options.h | |||
@@ -137,6 +137,11 @@ struct option { | |||
137 | { .type = OPTION_STRING, .short_name = (s), .long_name = (l), \ | 137 | { .type = OPTION_STRING, .short_name = (s), .long_name = (l), \ |
138 | .value = check_vtype(v, const char **), (a), .help = (h), \ | 138 | .value = check_vtype(v, const char **), (a), .help = (h), \ |
139 | .flags = PARSE_OPT_OPTARG, .defval = (intptr_t)(d) } | 139 | .flags = PARSE_OPT_OPTARG, .defval = (intptr_t)(d) } |
140 | #define OPT_STRING_OPTARG_SET(s, l, v, os, a, h, d) \ | ||
141 | { .type = OPTION_STRING, .short_name = (s), .long_name = (l), \ | ||
142 | .value = check_vtype(v, const char **), (a), .help = (h), \ | ||
143 | .flags = PARSE_OPT_OPTARG, .defval = (intptr_t)(d), \ | ||
144 | .set = check_vtype(os, bool *)} | ||
140 | #define OPT_STRING_NOEMPTY(s, l, v, a, h) { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), (a), .help = (h), .flags = PARSE_OPT_NOEMPTY} | 145 | #define OPT_STRING_NOEMPTY(s, l, v, a, h) { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), (a), .help = (h), .flags = PARSE_OPT_NOEMPTY} |
141 | #define OPT_DATE(s, l, v, h) \ | 146 | #define OPT_DATE(s, l, v, h) \ |
142 | { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), .argh = "time", .help = (h), .callback = parse_opt_approxidate_cb } | 147 | { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), .argh = "time", .help = (h), .callback = parse_opt_approxidate_cb } |