From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756864AbbJ2Jkb (ORCPT ); Thu, 29 Oct 2015 05:40:31 -0400 Received: from terminus.zytor.com ([198.137.202.10]:56078 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756271AbbJ2Jk2 (ORCPT ); Thu, 29 Oct 2015 05:40:28 -0400 Date: Thu, 29 Oct 2015 02:40:09 -0700 From: tip-bot for Namhyung Kim Message-ID: Cc: namhyung@kernel.org, jolsa@redhat.com, linux-kernel@vger.kernel.org, acme@redhat.com, tglx@linutronix.de, hpa@zytor.com, mingo@kernel.org, dsahern@gmail.com, a.p.zijlstra@chello.nl Reply-To: jolsa@redhat.com, acme@redhat.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, namhyung@kernel.org, a.p.zijlstra@chello.nl, hpa@zytor.com, dsahern@gmail.com, mingo@kernel.org In-Reply-To: <1445701767-12731-3-git-send-email-namhyung@kernel.org> References: <1445701767-12731-3-git-send-email-namhyung@kernel.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf tools: Setup pager when printing usage and help Git-Commit-ID: 01b19455c08cc37d1c3ef174524278e84c92fec1 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 01b19455c08cc37d1c3ef174524278e84c92fec1 Gitweb: http://git.kernel.org/tip/01b19455c08cc37d1c3ef174524278e84c92fec1 Author: Namhyung Kim AuthorDate: Sun, 25 Oct 2015 00:49:26 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Mon, 26 Oct 2015 14:08:48 -0300 perf tools: Setup pager when printing usage and help It's annoying to see error or help message when command has many options like in perf record, report or top. So setup pager when print parser error or help message - it should be OK since no UI is enabled at the parsing time. The usage_with_options() already disables it by calling exit_browser() anyway. Signed-off-by: Namhyung Kim Acked-by: Ingo Molnar Tested-by: Arnaldo Carvalho de Melo Cc: David Ahern Cc: Jiri Olsa Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/1445701767-12731-3-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/parse-options.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/parse-options.c b/tools/perf/util/parse-options.c index b8d9822..eeeed98 100644 --- a/tools/perf/util/parse-options.c +++ b/tools/perf/util/parse-options.c @@ -7,6 +7,8 @@ #define OPT_SHORT 1 #define OPT_UNSET 2 +static struct strbuf error_buf = STRBUF_INIT; + static int opterror(const struct option *opt, const char *reason, int flags) { if (flags & OPT_SHORT) @@ -540,9 +542,11 @@ int parse_options_subcommand(int argc, const char **argv, const struct option *o exit(130); default: /* PARSE_OPT_UNKNOWN */ if (ctx.argv[0][1] == '-') { - error("unknown option `%s'", ctx.argv[0] + 2); + strbuf_addf(&error_buf, "unknown option `%s'", + ctx.argv[0] + 2); } else { - error("unknown switch `%c'", *ctx.opt); + strbuf_addf(&error_buf, "unknown switch `%c'", + *ctx.opt); } usage_with_options(usagestr, options); } @@ -711,6 +715,13 @@ int usage_with_options_internal(const char * const *usagestr, if (!usagestr) return PARSE_OPT_HELP; + setup_pager(); + + if (strbuf_avail(&error_buf)) { + fprintf(stderr, " Error: %s\n", error_buf.buf); + strbuf_release(&error_buf); + } + fprintf(stderr, "\n Usage: %s\n", *usagestr++); while (*usagestr && **usagestr) fprintf(stderr, " or: %s\n", *usagestr++);