lineedit: fix unicode characters in prompt

function                                             old     new   delta
parse_and_put_prompt                                 779     823     +44

Signed-off-by: Audun-Marius Gangstø <audun@gangsto.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Audun-Marius Gangstø 2020-11-21 12:26:39 +01:00 committed by Denys Vlasenko
parent 4323ac861e
commit 9bf4499dd7

View File

@ -2029,10 +2029,17 @@ static void parse_and_put_prompt(const char *prmt_ptr)
if (c == '\n')
cmdedit_prmt_len = 0;
else if (flg_not_length != ']') {
#if 0 /*ENABLE_UNICODE_SUPPORT*/
/* Won't work, pbuf is one BYTE string here instead of an one Unicode char string. */
/* FIXME */
#if ENABLE_UNICODE_SUPPORT
if (n == 1) {
/* Only count single-byte characters and the first of multi-byte characters */
if ((unsigned char)*pbuf < 0x80 /* single byte character */
|| (unsigned char)*pbuf >= 0xc0 /* first of multi-byte characters */
) {
cmdedit_prmt_len += n;
}
} else {
cmdedit_prmt_len += unicode_strwidth(pbuf);
}
#else
cmdedit_prmt_len += n;
#endif