Simplify the function print_literal() which is used to format a
string that may contain unprintable characters or control
characters.

- Unprintable characters were being displayed in normal text rather
  than the bold used for the rest of the message.  This doesn't seem
  particularly helpful and it upsets the calculation of the width
  of the message in show_status_line().  Use '?' rather than '.' for
  unprintable characters.

- Newlines in the string were displayed as both '^J' and '$', which
  is somewhat redundant.

function                                             old     new   delta
not_implemented                                      199     108     -91
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-91)             Total: -91 bytes

Signed-off-by: Ron Yorston <[email protected]>
---
 editors/vi.c | 19 ++-----------------
 1 file changed, 2 insertions(+), 17 deletions(-)

diff --git a/editors/vi.c b/editors/vi.c
index 126780175..9877fa19f 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -1376,21 +1376,14 @@ static void print_literal(char *buf, const char *s)
        char *d;
        unsigned char c;
 
-       buf[0] = '\0';
        if (!s[0])
                s = "(NULL)";
 
        d = buf;
        for (; *s; s++) {
-               int c_is_no_print;
-
                c = *s;
-               c_is_no_print = (c & 0x80) && !Isprint(c);
-               if (c_is_no_print) {
-                       strcpy(d, ESC_NORM_TEXT);
-                       d += sizeof(ESC_NORM_TEXT)-1;
-                       c = '.';
-               }
+               if ((c & 0x80) && !Isprint(c))
+                       c = '?';
                if (c < ' ' || c == 0x7f) {
                        *d++ = '^';
                        c |= '@'; // 0x40
@@ -1399,14 +1392,6 @@ static void print_literal(char *buf, const char *s)
                }
                *d++ = c;
                *d = '\0';
-               if (c_is_no_print) {
-                       strcpy(d, ESC_BOLD_TEXT);
-                       d += sizeof(ESC_BOLD_TEXT)-1;
-               }
-               if (*s == '\n') {
-                       *d++ = '$';
-                       *d = '\0';
-               }
                if (d - buf > MAX_INPUT_LEN - 10) // paranoia
                        break;
        }
-- 
2.31.1

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to