1 /* 2 * Copyright 2004 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 #pragma ident "%Z%%M% %I% %E% SMI" 16 17 /*LINTLIBRARY*/ 18 19 #ifndef lint 20 static char 21 sccsid[] = "@(#)erase.c 1.6 88/02/08 SMI"; /* from UCB 5.1 85/06/07 */ 22 #endif /* not lint */ 23 24 #include <stddef.h> 25 #include "curses.ext" 26 27 /* 28 * This routine erases everything on the window. 29 */ 30 31 int 32 werase(WINDOW *win) 33 { 34 int y; 35 char *sp, *end, *start, *maxx; 36 ptrdiff_t minx; 37 38 #ifdef DEBUG 39 fprintf(outf, "WERASE(%0.2o)\n", win); 40 #endif 41 for (y = 0; y < win->_maxy; y++) { 42 minx = _NOCHANGE; 43 start = win->_y[y]; 44 end = &start[win->_maxx]; 45 for (sp = start; sp < end; sp++) 46 if (*sp != ' ') { 47 maxx = sp; 48 if (minx == _NOCHANGE) 49 minx = sp - start; 50 *sp = ' '; 51 } 52 if (minx != _NOCHANGE) 53 (void) touchline(win, y, (int)minx, 54 (int)(maxx - win->_y[y])); 55 } 56 win->_curx = win->_cury = 0; 57 return (OK); 58 } 59