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.4 (Berkeley) 06/01/90"; 10 #endif /* not lint */ 11 12 # include "curses.ext" 13 14 /* 15 * This routine performs an insert-char on the line, leaving 16 * (_cury,_curx) unchanged. 17 * 18 */ 19 winsch(win, c) 20 reg WINDOW *win; 21 char c; { 22 23 reg char *temp1, *temp2; 24 reg char *end; 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 = c; 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 } 39 else 40 return ERR; 41 return OK; 42 } 43