summary refs log tree commit diff
diff options
context:
space:
mode:
authorBart Schaefer <schaefer@zsh.org>2022-04-04 14:48:21 -0700
committerBart Schaefer <schaefer@zsh.org>2022-04-04 14:48:21 -0700
commit0d9c2422bf3815ee04e5c1b562a22b9df56c07ed (patch)
treeac8a8a818d751e3e3ccf032d37d768c69e02d9bd
parentb80d1600395c46b24ebe8d34e40fb4e660692de1 (diff)
downloadzsh-0d9c2422bf3815ee04e5c1b562a22b9df56c07ed.tar.gz
zsh-0d9c2422bf3815ee04e5c1b562a22b9df56c07ed.tar.xz
zsh-0d9c2422bf3815ee04e5c1b562a22b9df56c07ed.zip
49992: further unify single- and multi-byte implementations of nicechar()
-rw-r--r--ChangeLog3
-rw-r--r--Src/utils.c62
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  <schaefer@zsh.org>
 
+	* 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.
  */