1 /* 2 * Copyright 2001 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6 /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ 7 /* All Rights Reserved */ 8 9 /* 10 * Copyright (c) 1980 Regents of the University of California. 11 * All rights reserved. The Berkeley software License Agreement 12 * specifies the terms and conditions for redistribution. 13 */ 14 15 /*LINTLIBRARY*/ 16 17 #ifndef lint 18 static char 19 sccsid[] = "@(#)insch.c 1.6 88/02/08 SMI"; /* from UCB 5.1 85/06/07 */ 20 #endif /* not lint */ 21 22 #include "curses.ext" 23 24 /* 25 * This routine performs an insert-char on the line, leaving 26 * (_cury,_curx) unchanged. 27 */ 28 29 int 30 winsch(WINDOW *win, char c) 31 { 32 char *temp1, *temp2; 33 char *end; 34 35 end = &win->_y[win->_cury][win->_curx]; 36 temp1 = &win->_y[win->_cury][win->_maxx - 1]; 37 temp2 = temp1 - 1; 38 while (temp1 > end) 39 *temp1-- = *temp2--; 40 *temp1 = c; 41 (void) touchline(win, win->_cury, win->_curx, win->_maxx - 1); 42 if (win->_cury == LINES - 1 && win->_y[LINES-1][COLS-1] != ' ') 43 if (win->_scroll) { 44 (void) wrefresh(win); 45 (void) scroll(win); 46 win->_cury--; 47 } 48 else 49 return (ERR); 50 return (OK); 51 } 52