Commit cdbefe9d authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by Len Brown
Browse files

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: 56dbb878 ("tools/power turbostat: Refactor added column header printing")
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent b6398bc2
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -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)