Commit | Line | Data |
---|---|---|
07662491 | 1 | #ifndef lint |
861cd1ed | 2 | static char *sccsid = "@(#)wwdelete.c 3.3 83/08/16"; |
07662491 EW |
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 | { | |
861cd1ed EW |
13 | { |
14 | register i = w->ww_w.t; | |
15 | register char *touched = &wwtouched[i]; | |
16 | ||
17 | for (; i < w->ww_w.b; i++, touched++) { | |
18 | register int j = w->ww_w.l; | |
19 | register char *smap = &wwsmap[i][j]; | |
20 | register union ww_char *ns = &wwns[i][j]; | |
07662491 | 21 | |
861cd1ed EW |
22 | for (j = w->ww_w.nc; --j >= 0;) { |
23 | if (*smap == w->ww_index) { | |
24 | *touched = 1; | |
25 | *smap++ = WWX_NOBODY; | |
26 | ns++->c_w = ' '; | |
27 | } else { | |
28 | smap++; | |
29 | ns++; | |
30 | } | |
07662491 EW |
31 | } |
32 | } | |
33 | } | |
34 | { | |
35 | register struct ww *wp; | |
861cd1ed | 36 | |
07662491 EW |
37 | for (wp = w->ww_forw; wp != &wwhead; wp = wp->ww_forw) { |
38 | wp->ww_order--; | |
39 | wwuncover(w, wp); | |
40 | } | |
41 | } | |
861cd1ed EW |
42 | { |
43 | register i; | |
44 | ||
45 | for (i = 0; i < w->ww_w.nr; i++) { | |
46 | register j; | |
47 | register char *win = w->ww_win[i]; | |
48 | register char *cov = w->ww_cov[i]; | |
49 | for (j = w->ww_w.nc; --j >= 0;) { | |
50 | if (*win != 0) { | |
51 | if ((*win++ &= ~WWM_COV) == 0) | |
52 | w->ww_nvis[i]++; | |
53 | } else | |
54 | win++; | |
55 | *cov++ = WWX_NOBODY; | |
56 | } | |
07662491 EW |
57 | } |
58 | } | |
59 | w->ww_back->ww_forw = w->ww_forw; | |
60 | w->ww_forw->ww_back = w->ww_back; | |
61 | w->ww_forw = w->ww_back = 0; | |
62 | } |