* Copyright (c) 1983 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
static char sccsid
[] = "@(#)display.c 5.3 (Berkeley) 6/29/88";
* The window 'manager', initializes curses and handles the actual
int curses_initialized
= 0;
* max HAS to be a function, it is called with
* a argument of the form --foo at least once.
* Display some text on somebody's window, processing some control
* characters while we are at it.
for (i
= 0; i
< size
; i
++) {
if (*text
== win
->cerase
) {
wmove(win
->x_win
, win
->x_line
, max(--win
->x_col
, 0));
getyx(win
->x_win
, win
->x_line
, win
->x_col
);
wmove(win
->x_win
, win
->x_line
, win
->x_col
);
getyx(win
->x_win
, win
->x_line
, win
->x_col
);
* On word erase search backwards until we find
* the beginning of a word or the beginning of
if (*text
== win
->werase
) {
c
= readwin(win
->x_win
, win
->x_line
, xcol
);
c
= readwin(win
->x_win
, win
->x_line
, xcol
);
wmove(win
->x_win
, win
->x_line
, xcol
+ 1);
for (i
= xcol
+ 1; i
< endcol
; i
++)
wmove(win
->x_win
, win
->x_line
, xcol
+ 1);
getyx(win
->x_win
, win
->x_line
, win
->x_col
);
if (*text
== win
->kill
) {
wmove(win
->x_win
, win
->x_line
, 0);
getyx(win
->x_win
, win
->x_line
, win
->x_col
);
if (win
->x_col
== COLS
-1) {
/* check for wraparound */
if (*text
< ' ' && *text
!= '\t') {
getyx(win
->x_win
, win
->x_line
, win
->x_col
);
if (win
->x_col
== COLS
-1) /* check for wraparound */
waddch(win
->x_win
, *text
);
getyx(win
->x_win
, win
->x_line
, win
->x_col
);
* Read the character at the indicated position in win
getyx(win
, oldline
, oldcol
);
wmove(win
, oldline
, oldcol
);
* Scroll a window, blanking out the line following the current line
* so that the current position is obvious
win
->x_line
= (win
->x_line
+ 1) % win
->x_nlines
;
wmove(win
->x_win
, win
->x_line
, win
->x_col
);
wmove(win
->x_win
, (win
->x_line
+ 1) % win
->x_nlines
, win
->x_col
);
wmove(win
->x_win
, win
->x_line
, win
->x_col
);