From 89d2c7eb2625804060092330f22ea211c2c97ba3 Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 30 May 2019 07:42:41 +0000 Subject: I had hoped that non-xenl terminals had died out, at least in fairly modern OSs, but no - DragonFly BSD's console returns to haunt us. Fix it at least somewhat. GitHub issue 1763. --- tty.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'tty.c') diff --git a/tty.c b/tty.c index 34403a1f..05df4f0f 100644 --- a/tty.c +++ b/tty.c @@ -527,6 +527,12 @@ tty_putc(struct tty *tty, u_char ch) { const char *acs; + if ((tty->term->flags & TERM_EARLYWRAP) && + ch >= 0x20 && ch != 0x7f && + tty->cy == tty->sy - 1 && + tty->cx + 1 >= tty->sx) + return; + if (tty->cell.attr & GRID_ATTR_CHARSET) { acs = tty_acs_get(tty, ch); if (acs != NULL) @@ -557,6 +563,11 @@ tty_putc(struct tty *tty, u_char ch) void tty_putn(struct tty *tty, const void *buf, size_t len, u_int width) { + if ((tty->term->flags & TERM_EARLYWRAP) && + tty->cy == tty->sy - 1 && + tty->cx + len >= tty->sx) + len = tty->sx - tty->cx - 1; + tty_add(tty, buf, len); if (tty->cx + width > tty->sx) { tty->cx = (tty->cx + width) - tty->sx; -- cgit