From 0d9c2422bf3815ee04e5c1b562a22b9df56c07ed Mon Sep 17 00:00:00 2001 From: Bart Schaefer Date: Mon, 4 Apr 2022 14:48:21 -0700 Subject: 49992: further unify single- and multi-byte implementations of nicechar() --- ChangeLog | 3 +++ Src/utils.c | 62 ------------------------------------------------------------- 2 files changed, 3 insertions(+), 62 deletions(-) diff --git a/ChangeLog b/ChangeLog index d2ffce95e..1a5d48415 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2022-04-04 Bart Schaefer + * 49992: Src/utils.c: further unify single- and multi-byte + implementations of nicechar() to fix ${(V)...} output format + * 49991: Src/glob.c, Src/utils.c: single-byte brace expansion handles $'\0' and control character output aligns with multibyte diff --git a/Src/utils.c b/Src/utils.c index 66cb2a63a..ffa59eff8 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -438,7 +438,6 @@ putshout(int c) return 0; } -#ifdef MULTIBYTE_SUPPORT /* * Turn a character into a visible representation thereof. The visible * string is put together in a static buffer, and this function returns @@ -524,67 +523,6 @@ nicechar(int c) return nicechar_sel(c, 0); } -#else /* MULTIBYTE_SUPPORT */ - -/**/ -mod_export char * -nicechar(int c) -{ - static char buf[10]; - char *s = buf; - c &= 0xff; - if (ZISPRINT(c)) - goto done; - if (c & 0x80) { - if (isset(PRINTEIGHTBIT)) - goto done; - *s++ = '\\'; - *s++ = 'M'; - *s++ = '-'; - c &= 0x7f; - if(ZISPRINT(c)) - goto done; - } - if (c == 0x7f) { - *s++ = '\\'; - *s++ = 'C'; - *s++ = '-'; - c = '?'; - } else if (c == '\n') { - *s++ = '\\'; - c = 'n'; - } else if (c == '\t') { - *s++ = '\\'; - c = 't'; - } else if (c < 0x20) { - /* - if (quotable) { - *s++ = '\\'; - *s++ = 'C'; - *s++ = '-'; - } else - */ - *s++ = '^'; - c += 0x40; - } - done: - /* - * The resulting string is still metafied, so check if - * we are returning a character in the range that needs metafication. - * This can't happen if the character is printed "nicely", so - * this results in a maximum of two bytes total (plus the null). - */ - if (imeta(c)) { - *s++ = Meta; - *s++ = c ^ 32; - } else - *s++ = c; - *s = 0; - return buf; -} - -#endif /* MULTIBYTE_SUPPORT */ - /* * Return 1 if nicechar() would reformat this character. */ -- cgit 1.4.1