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

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: 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-3-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent b272a59d
......@@ -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++);
......
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