* Copyright (c) 1983 Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
static char sccsid
[] = "@(#)display.c 5.4 (Berkeley) 6/1/90";
* 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
);