]> granicus.if.org Git - procps-ng/commit
free: Use wstr width and not length
authorCraig Small <csmall@dropbear.xyz>
Tue, 1 Feb 2022 05:46:09 +0000 (16:46 +1100)
committerCraig Small <csmall@dropbear.xyz>
Tue, 1 Feb 2022 05:46:09 +0000 (16:46 +1100)
commite5542f1fc33e61f594876039c9eed24a92a2597d
treeb683d2f43c319f5c623d6fb4fe713c2049fd09db
parent9f4db0fb5606e4872829bd44b29443d5707b1505
free: Use wstr width and not length

The previous commit used the value from mbstowcs() to work out
the spacing required, as printf() got it completely wrong.

However, for alignment of text you don't use the string length
but the string width.

As the referenced website says:
 Use wcslen when allocating memory for wide characters, and use wcswidth to
 align text.

Which is what free does now. Chinese is still off by one but I cannot
see why this is so. It's close enough for now. If someone can work
it out, I'd love to know what the fix is.

As a side effect, #213 is fixed because we are putting the correct
number of spaces in.

French is still an issue (see #24 ) but this is because the string is
too long!

References:
 procps-ng/procps#24
 procps-ng/procps#213
 procps-ng/procps#229
 commit 9f4db0fb5606e4872829bd44b29443d5707b1505
 https://www.linux.com/news/programming-wide-characters/

Signed-off-by: Craig Small <csmall@dropbear.xyz>
NEWS
free.c