Module Name: src Committed By: blymn Date: Sun May 12 02:29:00 UTC 2019
Modified Files: src/lib/libcurses: addbytes.c Log Message: Fix _cursesi_addwchar so that it performs line wrap. SUSv2 says add_wch line wraps and updates position. Since wrap is done we are not past EOL. To generate a diff of this commit: cvs rdiff -u -r1.49 -r1.50 src/lib/libcurses/addbytes.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libcurses/addbytes.c diff -u src/lib/libcurses/addbytes.c:1.49 src/lib/libcurses/addbytes.c:1.50 --- src/lib/libcurses/addbytes.c:1.49 Thu Nov 15 03:17:51 2018 +++ src/lib/libcurses/addbytes.c Sun May 12 02:29:00 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: addbytes.c,v 1.49 2018/11/15 03:17:51 uwe Exp $ */ +/* $NetBSD: addbytes.c,v 1.50 2019/05/12 02:29:00 blymn Exp $ */ /* * Copyright (c) 1987, 1993, 1994 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)addbytes.c 8.4 (Berkeley) 5/4/94"; #else -__RCSID("$NetBSD: addbytes.c,v 1.49 2018/11/15 03:17:51 uwe Exp $"); +__RCSID("$NetBSD: addbytes.c,v 1.50 2019/05/12 02:29:00 blymn Exp $"); #endif #endif /* not lint */ @@ -564,6 +564,7 @@ _cursesi_addwchar(WINDOW *win, __LINE ** lp->nsp); __CTRACE(__CTRACE_INPUT, "_cursesi_addwchar: add rest columns (%d:%d)\n", sx + 1, sx + cw - 1); + __CTRACE(__CTRACE_INPUT, "_cursesi_addwchar: *x = %d, win->maxx = %d\n", *x, win->maxx); #endif /* DEBUG */ for (tp = lp + 1, *x = sx + 1; *x - sx <= cw - 1; tp++, (*x)++) { if (tp->nsp) { @@ -577,12 +578,27 @@ _cursesi_addwchar(WINDOW *win, __LINE ** } if (*x == win->maxx) { - (*lnp)->flags |= __ISPASTEOL; +#ifdef DEBUG + __CTRACE(__CTRACE_INPUT, "_cursesi_addwchar: do line wrap\n"); +#endif /* DEBUG */ newx = win->maxx - 1 + win->ch_off; if (newx > *(*lnp)->lastchp) *(*lnp)->lastchp = newx; __touchline(win, *y, sx, (int) win->maxx - 1); - *x = win->curx = sx; + *x = sx = 0; + if (*y == win->scr_b) { + if (!(win->flags & __SCROLLOK)) + return ERR; + PSYNCH_OUT; + scroll(win); + PSYNCH_IN; + } else { + (*y)++; + } + lp = &win->alines[*y]->line[0]; + (*lnp) = win->alines[*y]; + win->curx = *x; + win->cury = *y; } else { win->curx = *x; @@ -612,7 +628,8 @@ _cursesi_addwchar(WINDOW *win, __LINE ** } #ifdef DEBUG - __CTRACE(__CTRACE_INPUT, "add_wch: %d : 0x%x\n", lp->ch, lp->attr); + __CTRACE(__CTRACE_INPUT, "_cursesi_addwchar: %d : 0x%x\n", lp->ch, lp->attr); + __CTRACE(__CTRACE_INPUT, "_cursesi_addwchar: *x = %d, *y = %d, win->maxx = %d\n", *x, *y, win->maxx); #endif /* DEBUG */ __sync(win); return OK;