42 lines
917 B
C
42 lines
917 B
C
/*
|
|
* Copyright (c) 1980 Regents of the University of California.
|
|
* All rights reserved. The Berkeley software License Agreement
|
|
* specifies the terms and conditions for redistribution.
|
|
*/
|
|
|
|
#ifndef lint
|
|
static char sccsid[] = "@(#)insch.c 1.1 92/07/30 SMI"; /* from UCB 5.1 85/06/07 */
|
|
#endif not lint
|
|
|
|
# include "curses.ext"
|
|
|
|
/*
|
|
* This routine performs an insert-char on the line, leaving
|
|
* (_cury,_curx) unchanged.
|
|
*
|
|
*/
|
|
winsch(win, c)
|
|
reg WINDOW *win;
|
|
char c; {
|
|
|
|
reg char *temp1, *temp2;
|
|
reg char *end;
|
|
|
|
end = &win->_y[win->_cury][win->_curx];
|
|
temp1 = &win->_y[win->_cury][win->_maxx - 1];
|
|
temp2 = temp1 - 1;
|
|
while (temp1 > end)
|
|
*temp1-- = *temp2--;
|
|
*temp1 = c;
|
|
touchline(win, win->_cury, win->_curx, win->_maxx - 1);
|
|
if (win->_cury == LINES - 1 && win->_y[LINES-1][COLS-1] != ' ')
|
|
if (win->_scroll) {
|
|
wrefresh(win);
|
|
scroll(win);
|
|
win->_cury--;
|
|
}
|
|
else
|
|
return ERR;
|
|
return OK;
|
|
}
|