Commit 1a9c20b4 authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo

perf list: Support newlines in wordwrap

Rather than a newline starting from column 0, record a newline was
seen and then add the newline and space before the next word.
Signed-off-by: default avatarIan Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Caleb Biggers <caleb.biggers@intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Perry Taylor <perry.taylor@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ravi Bangoria <ravi.bangoria@amd.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Sandipan Das <sandipan.das@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Weilin Wang <weilin.wang@intel.com>
Cc: Xin Gao <gaoxin@cdjrlc.com>
Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
Link: https://lore.kernel.org/r/20221118024607.409083-2-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 6f520ce1
...@@ -74,17 +74,19 @@ static void wordwrap(const char *s, int start, int max, int corr) ...@@ -74,17 +74,19 @@ static void wordwrap(const char *s, int start, int max, int corr)
{ {
int column = start; int column = start;
int n; int n;
bool saw_newline = false;
while (*s) { while (*s) {
int wlen = strcspn(s, " \t"); int wlen = strcspn(s, " \t\n");
if (column + wlen >= max && column > start) { if ((column + wlen >= max && column > start) || saw_newline) {
printf("\n%*s", start, ""); printf("\n%*s", start, "");
column = start + corr; column = start + corr;
} }
n = printf("%s%.*s", column > start ? " " : "", wlen, s); n = printf("%s%.*s", column > start ? " " : "", wlen, s);
if (n <= 0) if (n <= 0)
break; break;
saw_newline = s[wlen] == '\n';
s += wlen; s += wlen;
column += n; column += n;
s = skip_spaces(s); s = skip_spaces(s);
...@@ -146,7 +148,7 @@ static void default_print_event(void *ps, const char *pmu_name, const char *topi ...@@ -146,7 +148,7 @@ static void default_print_event(void *ps, const char *pmu_name, const char *topi
wordwrap(desc, 8, pager_get_columns(), 0); wordwrap(desc, 8, pager_get_columns(), 0);
printf("]\n"); printf("]\n");
} }
long_desc = long_desc ?: desc;
if (long_desc && print_state->long_desc) { if (long_desc && print_state->long_desc) {
printf("%*s", 8, "["); printf("%*s", 8, "[");
wordwrap(long_desc, 8, pager_get_columns(), 0); wordwrap(long_desc, 8, pager_get_columns(), 0);
...@@ -154,7 +156,8 @@ static void default_print_event(void *ps, const char *pmu_name, const char *topi ...@@ -154,7 +156,8 @@ static void default_print_event(void *ps, const char *pmu_name, const char *topi
} }
if (print_state->detailed && encoding_desc) { if (print_state->detailed && encoding_desc) {
printf("%*s%s", 8, "", encoding_desc); printf("%*s", 8, "");
wordwrap(encoding_desc, 8, pager_get_columns(), 0);
if (metric_name) if (metric_name)
printf(" MetricName: %s", metric_name); printf(" MetricName: %s", metric_name);
if (metric_expr) if (metric_expr)
......
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