Commit | Line | Data |
---|---|---|
07662491 EW |
1 | #ifndef lint |
2 | static 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 | */ | |
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 | } |