Commit a5f4a693 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo

perf tools: Improve ambiguous option help message

Currently if an option name is ambiguous it only prints first two
matched option names but no help.  It'd be better it could show all
possible names and help messages too.

Before:
  $ perf report --show
    Error: Ambiguous option: show (could be --show-total-period or
                                            --show-ref-call-graph)
   Usage: perf report [<options>]

After:
  $ perf report --show
    Error: Ambiguous option: show (could be --show-total-period or
                                            --show-ref-call-graph)
   Usage: perf report [<options>]

      -n, --show-nr-samples
                              Show a column with the number of samples
          --showcpuutilization
                              Show sample percentage for different cpu modes
      -I, --show-info         Display extended information about perf.data file
          --show-total-period
                              Show a column with the sum of periods
          --show-ref-call-graph
                              Show callgraph from reference event
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Acked-by: default avatarIngo Molnar <mingo@kernel.org>
Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1445701767-12731-1-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 43418018
...@@ -770,24 +770,23 @@ int parse_options_usage(const char * const *usagestr, ...@@ -770,24 +770,23 @@ int parse_options_usage(const char * const *usagestr,
opt: opt:
for ( ; opts->type != OPTION_END; opts++) { for ( ; opts->type != OPTION_END; opts++) {
if (short_opt) { if (short_opt) {
if (opts->short_name == *optstr) if (opts->short_name == *optstr) {
print_option_help(opts, 0);
break; break;
}
continue; continue;
} }
if (opts->long_name == NULL) if (opts->long_name == NULL)
continue; continue;
if (!prefixcmp(optstr, opts->long_name)) if (!prefixcmp(opts->long_name, optstr))
break; print_option_help(opts, 0);
if (!prefixcmp(optstr, "no-") && if (!prefixcmp("no-", optstr) &&
!prefixcmp(optstr + 3, opts->long_name)) !prefixcmp(opts->long_name, optstr + 3))
break; print_option_help(opts, 0);
} }
if (opts->type != OPTION_END)
print_option_help(opts, 0);
return PARSE_OPT_HELP; return PARSE_OPT_HELP;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment