BSD 4_3_Tahoe release
[unix-history] / usr / src / usr.lib / libcurses / insch.c
/*
* Copyright (c) 1981 Regents of the University of California.
* All rights reserved.
*
* 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.
*/
#ifndef lint
static char sccsid[] = "@(#)insch.c 5.3 (Berkeley) 6/30/88";
#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;
}