void waddch (WINDOW *win, const char ch) { TTYDEBUG_MAP ("waddch: w=%p, ch='%c', y=%d, x=%d\n", win, ch, win->y, win->x); if (win->y > win->maxy) { TTYDEBUG_MAP ("waddch: y=%d, x=%d, need to scroll, ok=%d\n", win->y, win->x, win->scrollok); /* Cursor out of window, ... */ if (! win->scrollok) return; /* ... cannot help. */ wscroll (win, win->y - win->maxy); } /* Update off-screen map. */ switch (ch) { case '\n': /* Newline */ win->y ++; /* Fall through. */ case '\r': /* Return */ win->x = 0; if (!win->leaveok) tty_ll_goto (win->y + win->begy, win->x + win->begx); break; default: /* Print everything else. */ TTYDEBUG_MAP (" -> map[%2d,%2d] = '%c'\n", win->y + win->begy, win->x + win->begx, ch); if (map (win, win->y, win->x) != ch) { map (win, win->y, win->x) = ch; tty_ll_put (win->y + win->begy, win->x + win->begx, ch); } if (win->x == win->maxx) { /* Cursor reached end of line. */ if (win->linewrap) { win->y ++; win->x = 0; } if (!win->leaveok) tty_ll_goto (win->y + win->begy, win->begx); } else win->x ++; /* Now need to tty_ll_goto. */ break; } }
static JSBool js_conio_wscroll(JSContext *cx, uintN argc, jsval *arglist) { jsrefcount rc; rc=JS_SUSPENDREQUEST(cx); wscroll(); JS_SET_RVAL(cx, arglist, JSVAL_TRUE); JS_RESUMEREQUEST(cx, rc); return(JS_TRUE); }