aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Rogers <[email protected]>2022-11-17 18:46:05 -0800
committerArnaldo Carvalho de Melo <[email protected]>2022-11-24 10:02:40 -0300
commit1a9c20b45d193ead21dc63b07d1abb40b0a237c2 (patch)
tree9f7102d477696ce4d1affe62f2e833502b8df0bd
parent6f520ce17920b3cdfbd2479b3ccf27f9706219d0 (diff)
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: Ian Rogers <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: Caleb Biggers <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Kajol Jain <[email protected]> Cc: Kan Liang <[email protected]> Cc: Leo Yan <[email protected]> Cc: Mark Rutland <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Perry Taylor <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Ravi Bangoria <[email protected]> Cc: Rob Herring <[email protected]> Cc: Sandipan Das <[email protected]> Cc: Stephane Eranian <[email protected]> Cc: Weilin Wang <[email protected]> Cc: Xin Gao <[email protected]> Cc: Xing Zhengjun <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
-rw-r--r--tools/perf/builtin-list.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index 84fa2d050eac..f3750331e8f6 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -74,17 +74,19 @@ static void wordwrap(const char *s, int start, int max, int corr)
{
int column = start;
int n;
+ bool saw_newline = false;
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, "");
column = start + corr;
}
n = printf("%s%.*s", column > start ? " " : "", wlen, s);
if (n <= 0)
break;
+ saw_newline = s[wlen] == '\n';
s += wlen;
column += n;
s = skip_spaces(s);
@@ -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);
printf("]\n");
}
-
+ long_desc = long_desc ?: desc;
if (long_desc && print_state->long_desc) {
printf("%*s", 8, "[");
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
}
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)
printf(" MetricName: %s", metric_name);
if (metric_expr)