-D is now a toggle
[unix-history] / usr / src / usr.bin / window / wwdelete.c
CommitLineData
07662491 1#ifndef lint
f2a77fe1 2static 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 */
10wwdelete(w)
11register 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}