Forgot to fix ww_buf after ^[E.
[unix-history] / usr / src / usr.bin / window / wwredrawwin.c
CommitLineData
bd9fa46d 1#ifndef lint
f2a77fe1 2static char *sccsid = "@(#)wwredrawwin.c 3.5 83/09/15";
bd9fa46d
EW
3#endif
4
5#include "ww.h"
6
7wwredrawwin(w)
8register struct ww *w;
9{
f2a77fe1 10 wwredrawwin1(w, w->ww_i.t, w->ww_i.b, 0);
bd9fa46d
EW
11}
12
f2a77fe1 13wwredrawwin1(w, row1, row2, offset)
bd9fa46d 14register struct ww *w;
f2a77fe1 15int row1, row2, offset;
bd9fa46d
EW
16{
17 int i;
18 register j;
19 register char *smap;
20 register union ww_char *buf;
21 register char *win;
22 register union ww_char *ns;
861cd1ed 23 char *touched;
bd9fa46d 24
f2a77fe1 25 touched = &wwtouched[row1];
19f9784c 26 for (i = row1; i < row2; i++, touched++) {
f2a77fe1
EW
27 ns = &wwns[i][w->ww_i.l];
28 smap = &wwsmap[i][w->ww_i.l];
29 buf = &w->ww_buf[i + offset][w->ww_i.l];
30 win = &w->ww_win[i][w->ww_i.l];
19f9784c 31 for (j = w->ww_i.nc; --j >= 0;)
bd9fa46d
EW
32 if (*smap++ != w->ww_index)
33 win++, ns++, buf++;
861cd1ed
EW
34 else {
35 *touched = 1;
bd9fa46d
EW
36 ns++->c_w = buf++->c_w
37 ^ *win++ << WWC_MSHIFT;
861cd1ed 38 }
bd9fa46d
EW
39 }
40}