Beispiel #1
0
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;
    }

}
Beispiel #2
0
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);
}