1 /* 2 * Copyright (c) 1981 Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 */ 7 8 #ifndef lint 9 static char sccsid[] = "@(#)insch.c 5.5 (Berkeley) 08/23/92"; 10 #endif /* not lint */ 11 12 #include <curses.h> 13 14 /* 15 * winsch -- 16 * Do an insert-char on the line, leaving (_cury,_curx) unchanged. 17 */ 18 int 19 winsch(win, ch) 20 register WINDOW *win; 21 int ch; 22 { 23 24 register char *end, *temp1, *temp2; 25 26 end = &win->_y[win->_cury][win->_curx]; 27 temp1 = &win->_y[win->_cury][win->_maxx - 1]; 28 temp2 = temp1 - 1; 29 while (temp1 > end) 30 *temp1-- = *temp2--; 31 *temp1 = ch; 32 touchline(win, win->_cury, win->_curx, win->_maxx - 1); 33 if (win->_cury == LINES - 1 && win->_y[LINES - 1][COLS - 1] != ' ') 34 if (win->_scroll) { 35 wrefresh(win); 36 scroll(win); 37 win->_cury--; 38 } else 39 return (ERR); 40 return (OK); 41 } 42