diff options
| author | Quentin Carbonneaux | 2016-05-04 22:41:22 -0400 |
|---|---|---|
| committer | Quentin Carbonneaux | 2016-05-04 22:41:22 -0400 |
| commit | f1a2b62b2f4d47de58152a1834fa5a8b971dd6d9 (patch) | |
| tree | f277ed4e0447b15f54fd151b2545fcec926482b1 | |
| parent | 734cc4f0e72259a8be86115c71dce0f112d6ff0b (diff) | |
do not print non-printable characters
| -rw-r--r-- | irc.c | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -279,11 +279,12 @@ chdel(char *name) static char * pushl(char *p, char *e) { - int x; + int x, cl; char *w; - Rune u; + Rune u[2]; cchar_t cc; + u[1] = 0; if ((w = memchr(p, '\n', e - p))) e = w + 1; w = p; @@ -299,15 +300,18 @@ pushl(char *p, char *e) } if (p >= e || *p == ' ' || p - w + INDENT >= scr.x - 1) { while (w < p) { - w += utf8decode(w, &u, UtfSz); - setcchar(&cc, &u, 0, 0, 0); - wadd_wch(scr.mw, &cc); + w += utf8decode(w, u, UtfSz); + if (wcwidth(*u) > 0 || *u == '\n') { + setcchar(&cc, u, 0, 0, 0); + wadd_wch(scr.mw, &cc); + } } if (p >= e) return e; } - p += utf8decode(p, &u, UtfSz); - x += wcwidth(u); + p += utf8decode(p, u, UtfSz); + if ((cl = wcwidth(*u)) >= 0) + x += cl; } } |
