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