diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2013-11-18 04:55:55 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-11-27 12:58:36 -0500 |
commit | 4bc437964ef540462bd15af4a713da62961809aa (patch) | |
tree | 4d6dcde004db36b4865be799c9423c306e523ee3 | |
parent | 3aa5939d71fa22a947808ba9c798b8537c35097a (diff) |
perf tools: Allow '--inherit' as the negation of '--no-inherit'
Long options can be negated by prefixing them with 'no-'. However
options that already start with 'no-', such as '--no-inherit' result in
ugly double 'no's.
Avoid that by accepting that the removal of 'no-' also negates the long
option.
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1384768557-23331-3-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/util/parse-options.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/perf/util/parse-options.c b/tools/perf/util/parse-options.c index 31f404a032a9..b6b39ff14fbb 100644 --- a/tools/perf/util/parse-options.c +++ b/tools/perf/util/parse-options.c | |||
@@ -224,6 +224,24 @@ static int parse_long_opt(struct parse_opt_ctx_t *p, const char *arg, | |||
224 | return 0; | 224 | return 0; |
225 | } | 225 | } |
226 | if (!rest) { | 226 | if (!rest) { |
227 | if (!prefixcmp(options->long_name, "no-")) { | ||
228 | /* | ||
229 | * The long name itself starts with "no-", so | ||
230 | * accept the option without "no-" so that users | ||
231 | * do not have to enter "no-no-" to get the | ||
232 | * negation. | ||
233 | */ | ||
234 | rest = skip_prefix(arg, options->long_name + 3); | ||
235 | if (rest) { | ||
236 | flags |= OPT_UNSET; | ||
237 | goto match; | ||
238 | } | ||
239 | /* Abbreviated case */ | ||
240 | if (!prefixcmp(options->long_name + 3, arg)) { | ||
241 | flags |= OPT_UNSET; | ||
242 | goto is_abbreviated; | ||
243 | } | ||
244 | } | ||
227 | /* abbreviated? */ | 245 | /* abbreviated? */ |
228 | if (!strncmp(options->long_name, arg, arg_end - arg)) { | 246 | if (!strncmp(options->long_name, arg, arg_end - arg)) { |
229 | is_abbreviated: | 247 | is_abbreviated: |
@@ -259,6 +277,7 @@ is_abbreviated: | |||
259 | if (!rest) | 277 | if (!rest) |
260 | continue; | 278 | continue; |
261 | } | 279 | } |
280 | match: | ||
262 | if (*rest) { | 281 | if (*rest) { |
263 | if (*rest != '=') | 282 | if (*rest != '=') |
264 | continue; | 283 | continue; |