1 #ifndef lint 2 static char *sccsid = "@(#)wwdelete.c 3.2 83/08/11"; 3 #endif 4 5 #include "ww.h" 6 7 /* 8 * Pull w free from the cover list. 9 */ 10 wwdelete(w) 11 register struct ww *w; 12 { 13 register i; 14 15 for (i = w->ww_w.t; i < w->ww_w.b; i++) { 16 register int j = w->ww_w.l; 17 register char *smap = &wwsmap[i][j]; 18 register union ww_char *ns = &wwns[i][j]; 19 for (j = w->ww_w.nc; --j >= 0;) { 20 if (*smap == w->ww_index) { 21 *smap++ = WWX_NOBODY; 22 ns++->c_w = ' '; 23 } else { 24 smap++; 25 ns++; 26 } 27 } 28 } 29 { 30 register struct ww *wp; 31 for (wp = w->ww_forw; wp != &wwhead; wp = wp->ww_forw) { 32 wp->ww_order--; 33 wwuncover(w, wp); 34 } 35 } 36 for (i = 0; i < w->ww_w.nr; i++) { 37 register j; 38 register char *win = w->ww_win[i]; 39 register char *cov = w->ww_cov[i]; 40 for (j = w->ww_w.nc; --j >= 0;) { 41 if (*win != 0) { 42 if ((*win++ &= ~WWM_COV) == 0) 43 w->ww_nvis[i]++; 44 } else 45 win++; 46 *cov++ = WWX_NOBODY; 47 } 48 } 49 w->ww_back->ww_forw = w->ww_forw; 50 w->ww_forw->ww_back = w->ww_back; 51 w->ww_forw = w->ww_back = 0; 52 } 53