typo
[unix-history] / usr / src / usr.bin / window / wwadd.c
CommitLineData
7c1c9e39 1#ifndef lint
84ad208b 2static char *sccsid = "@(#)wwadd.c 3.6 83/11/23";
7c1c9e39
EW
3#endif
4
5#include "ww.h"
6
7/*
84ad208b 8 * Stick w1 behind w2.
7c1c9e39
EW
9 */
10wwadd(w1, w2)
84ad208b
EW
11register struct ww *w1;
12struct ww *w2;
7c1c9e39 13{
84ad208b
EW
14 register struct ww *w;
15 register i;
19f9784c 16
7c1c9e39
EW
17 w1->ww_order = w2->ww_order + 1;
18 w1->ww_back = w2;
19 w1->ww_forw = w2->ww_forw;
20 w2->ww_forw->ww_back = w1;
21 w2->ww_forw = w1;
19f9784c 22
84ad208b
EW
23 for (w = w1->ww_forw; w != &wwhead; w = w->ww_forw)
24 w->ww_order++;
25 for (i = w1->ww_i.t; i < w1->ww_i.b; i++) {
26 register j = w1->ww_i.l;
27 register char *smap = &wwsmap[i][j];
28 register char *win = &w1->ww_win[i][j];
29 int nvis = 0;
7c1c9e39 30
84ad208b
EW
31 for (j = w1->ww_i.l; j < w1->ww_i.r; j++) {
32 w = wwindex[*smap];
33 if (w1->ww_order > w->ww_order) {
34 win++;
35 smap++;
36 continue;
37 }
38 if (*win & WWM_GLS) {
39 win++;
40 smap++;
41 continue;
7c1c9e39 42 }
84ad208b
EW
43 if (w != &wwnobody && w->ww_win[i][j] == 0)
44 w->ww_nvis[i]--;
45 *smap++ = w1->ww_index;
46 if (*win == 0)
47 nvis++;
48 wwns[i][j].c_w = w1->ww_buf[i][j].c_w ^
49 *win++ << WWC_MSHIFT;
50 wwtouched[i] = 1;
7c1c9e39 51 }
84ad208b 52 w1->ww_nvis[i] = nvis;
7c1c9e39
EW
53 }
54}