must free token_str if not used.
[unix-history] / usr / src / usr.bin / window / wwredrawwin.c
CommitLineData
bd9fa46d 1#ifndef lint
04d70db4 2static char *sccsid = "@(#)wwredrawwin.c 3.8 83/12/02";
bd9fa46d
EW
3#endif
4
5#include "ww.h"
6
f2a77fe1 7wwredrawwin1(w, row1, row2, offset)
bd9fa46d 8register struct ww *w;
f2a77fe1 9int row1, row2, offset;
bd9fa46d 10{
d069a508
EW
11 int row;
12 register col;
bd9fa46d
EW
13 register char *smap;
14 register union ww_char *buf;
15 register char *win;
16 register union ww_char *ns;
04d70db4 17 int nchanged;
bd9fa46d 18
04d70db4 19 for (row = row1; row < row2; row++) {
d069a508
EW
20 col = w->ww_i.l;
21 ns = wwns[row];
22 smap = &wwsmap[row][col];
23 buf = w->ww_buf[row + offset];
24 win = w->ww_win[row];
04d70db4 25 nchanged = 0;
d069a508
EW
26 for (; col < w->ww_i.r; col++)
27 if (*smap++ == w->ww_index) {
04d70db4 28 nchanged++;
d069a508
EW
29 ns[col].c_w =
30 buf[col].c_w ^ win[col] << WWC_MSHIFT;
861cd1ed 31 }
04d70db4
EW
32 if (nchanged > 4)
33 wwtouched[row] |= WWU_MAJOR|WWU_TOUCHED;
34 else if (nchanged > 0)
35 wwtouched[row] |= WWU_TOUCHED;
bd9fa46d
EW
36 }
37}