diff options
| author | Paul Moore <pmoore@redhat.com> | 2014-03-31 09:49:07 -0400 |
|---|---|---|
| committer | Paul Moore <pmoore@redhat.com> | 2014-03-31 09:49:07 -0400 |
| commit | 6d32c850621b0be75777b9102b14f6268bbd9f0f (patch) | |
| tree | fec325f5c1ae763f5eccb3ca1254ab9d9d164b05 /tools/perf/util/parse-options.c | |
| parent | eee3094683fbc7fe6bcdaef58c1ef31f8460cdca (diff) | |
| parent | 455c6fdbd219161bd09b1165f11699d6d73de11c (diff) | |
Merge tag 'v3.14' into next
Linux 3.14
Diffstat (limited to 'tools/perf/util/parse-options.c')
| -rw-r--r-- | tools/perf/util/parse-options.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/perf/util/parse-options.c b/tools/perf/util/parse-options.c index 31f404a032a9..d22e3f8017dc 100644 --- a/tools/perf/util/parse-options.c +++ b/tools/perf/util/parse-options.c @@ -78,6 +78,8 @@ static int get_value(struct parse_opt_ctx_t *p, case OPTION_BOOLEAN: *(bool *)opt->value = unset ? false : true; + if (opt->set) + *(bool *)opt->set = true; return 0; case OPTION_INCR: @@ -224,6 +226,24 @@ static int parse_long_opt(struct parse_opt_ctx_t *p, const char *arg, return 0; } if (!rest) { + if (!prefixcmp(options->long_name, "no-")) { + /* + * The long name itself starts with "no-", so + * accept the option without "no-" so that users + * do not have to enter "no-no-" to get the + * negation. + */ + rest = skip_prefix(arg, options->long_name + 3); + if (rest) { + flags |= OPT_UNSET; + goto match; + } + /* Abbreviated case */ + if (!prefixcmp(options->long_name + 3, arg)) { + flags |= OPT_UNSET; + goto is_abbreviated; + } + } /* abbreviated? */ if (!strncmp(options->long_name, arg, arg_end - arg)) { is_abbreviated: @@ -259,6 +279,7 @@ is_abbreviated: if (!rest) continue; } +match: if (*rest) { if (*rest != '=') continue; |
