date and time created 83/08/09 18:37:52 by edward
[unix-history] / usr / src / usr.bin / window / wwdelete.c
CommitLineData
07662491
EW
1#ifndef lint
2static char *sccsid = "@(#)wwdelete.c 3.1 83/08/09";
3#endif
4
5#include "ww.h"
6
7/*
8 * Pull w free from the cover list.
9 */
10wwdelete(w)
11register 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}