aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/parse-options.c
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung@kernel.org>2015-10-24 11:49:24 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-10-26 12:59:06 -0400
commita5f4a6932ec2e1a53642e97a1be64bc7b169942f (patch)
tree5632b44567e3c6aa25acc67fe7be16db443e84ed /tools/perf/util/parse-options.c
parent4341801873e23bbecee76dabb7c111e3693b900f (diff)
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: Namhyung Kim <namhyung@kernel.org> Acked-by: Ingo Molnar <mingo@kernel.org> Tested-by: Arnaldo 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.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/parse-options.c')
-rw-r--r--tools/perf/util/parse-options.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/tools/perf/util/parse-options.c b/tools/perf/util/parse-options.c
index 22c2806bda98..b8d98229a8af 100644
--- a/tools/perf/util/parse-options.c
+++ b/tools/perf/util/parse-options.c
@@ -770,24 +770,23 @@ int parse_options_usage(const char * const *usagestr,
770opt: 770opt:
771 for ( ; opts->type != OPTION_END; opts++) { 771 for ( ; opts->type != OPTION_END; opts++) {
772 if (short_opt) { 772 if (short_opt) {
773 if (opts->short_name == *optstr) 773 if (opts->short_name == *optstr) {
774 print_option_help(opts, 0);
774 break; 775 break;
776 }
775 continue; 777 continue;
776 } 778 }
777 779
778 if (opts->long_name == NULL) 780 if (opts->long_name == NULL)
779 continue; 781 continue;
780 782
781 if (!prefixcmp(optstr, opts->long_name)) 783 if (!prefixcmp(opts->long_name, optstr))
782 break; 784 print_option_help(opts, 0);
783 if (!prefixcmp(optstr, "no-") && 785 if (!prefixcmp("no-", optstr) &&
784 !prefixcmp(optstr + 3, opts->long_name)) 786 !prefixcmp(opts->long_name, optstr + 3))
785 break; 787 print_option_help(opts, 0);
786 } 788 }
787 789
788 if (opts->type != OPTION_END)
789 print_option_help(opts, 0);
790
791 return PARSE_OPT_HELP; 790 return PARSE_OPT_HELP;
792} 791}
793 792