tools/power turbostat: Fix delimiter bug in print functions

Commands that add counters, such as 'turbostat --show C1,C1+'
display merged columns without a delimiter.

This is caused by the bad syntax: '(*printed++ ? delim : "")', shared by
print_name()/print_hex_value()/print_decimal_value()/print_float_value()

Use '((*printed)++ ? delim : "")' to correctly increment the value at *printed.

[lenb: fix code and commit message typo, re-word]
Fixes: 56dbb87850 ("tools/power turbostat: Refactor added column header printing")
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Artem Bityutskiy 2026-03-11 11:00:34 +02:00 committed by Len Brown
parent b6398bc2ef
commit cdbefe9d40

View File

@ -2837,29 +2837,29 @@ static inline int print_name(int width, int *printed, char *delim, char *name, e
UNUSED(type);
if (format == FORMAT_RAW && width >= 64)
return (sprintf(outp, "%s%-8s", (*printed++ ? delim : ""), name));
return (sprintf(outp, "%s%-8s", ((*printed)++ ? delim : ""), name));
else
return (sprintf(outp, "%s%s", (*printed++ ? delim : ""), name));
return (sprintf(outp, "%s%s", ((*printed)++ ? delim : ""), name));
}
static inline int print_hex_value(int width, int *printed, char *delim, unsigned long long value)
{
if (width <= 32)
return (sprintf(outp, "%s%08x", (*printed++ ? delim : ""), (unsigned int)value));
return (sprintf(outp, "%s%08x", ((*printed)++ ? delim : ""), (unsigned int)value));
else
return (sprintf(outp, "%s%016llx", (*printed++ ? delim : ""), value));
return (sprintf(outp, "%s%016llx", ((*printed)++ ? delim : ""), value));
}
static inline int print_decimal_value(int width, int *printed, char *delim, unsigned long long value)
{
UNUSED(width);
return (sprintf(outp, "%s%lld", (*printed++ ? delim : ""), value));
return (sprintf(outp, "%s%lld", ((*printed)++ ? delim : ""), value));
}
static inline int print_float_value(int *printed, char *delim, double value)
{
return (sprintf(outp, "%s%0.2f", (*printed++ ? delim : ""), value));
return (sprintf(outp, "%s%0.2f", ((*printed)++ ? delim : ""), value));
}
void print_header(char *delim)