118739Sedward /*
2*62477Sbostic * Copyright (c) 1983, 1993
3*62477Sbostic * The Regents of the University of California. All rights reserved.
433514Sbostic *
542954Sbostic * This code is derived from software contributed to Berkeley by
642954Sbostic * Edward Wang at The University of California, Berkeley.
742954Sbostic *
842835Sbostic * %sccs.include.redist.c%
918739Sedward */
1018739Sedward
1133514Sbostic #ifndef lint
12*62477Sbostic static char sccsid[] = "@(#)wwclreol.c 8.1 (Berkeley) 06/06/93";
1333514Sbostic #endif /* not lint */
1433514Sbostic
1514423Sedward #include "ww.h"
1614650Sedward #include "tt.h"
1714423Sedward
1814423Sedward /*
1914423Sedward * Clear w to the end of line.
2035330Sedward * If cleared is true, then the screen line has already been cleared.
2114423Sedward */
wwclreol1(w,row,col,cleared)2214987Sedward wwclreol1(w, row, col, cleared)
2314423Sedward register struct ww *w;
2414987Sedward int row, col;
2514459Sedward char cleared;
2614423Sedward {
2714423Sedward register i;
2814423Sedward
2914976Sedward /*
3014976Sedward * Clear the buffer right off
3114976Sedward */
3214976Sedward {
3314976Sedward register union ww_char *buf;
3414976Sedward
3514987Sedward buf = &w->ww_buf[row][col];
3614987Sedward for (i = w->ww_b.r - col; --i >= 0;)
3714423Sedward buf++->c_w = ' ';
3814976Sedward }
3914976Sedward
4014976Sedward /*
4114976Sedward * If can't see it, just return.
4214976Sedward */
4314987Sedward if (row < w->ww_i.t || row >= w->ww_i.b
4414987Sedward || w->ww_i.r <= 0 || w->ww_i.r <= col)
4514423Sedward return;
4614976Sedward
4714987Sedward if (col < w->ww_i.l)
4814987Sedward col = w->ww_i.l;
4914976Sedward
5014976Sedward /*
5135330Sedward * Now fix wwns.
5214976Sedward */
5335330Sedward {
5414976Sedward register union ww_char *s;
5514976Sedward register char *smap, *win;
5614976Sedward
5715636Sedward i = col;
5815636Sedward smap = &wwsmap[row][i];
5915817Sedward s = &wwns[row][i];
6015817Sedward win = &w->ww_win[row][i];
6135330Sedward for (i = w->ww_i.r - i; --i >= 0;)
6235330Sedward if (*smap++ == w->ww_index)
6335330Sedward s++->c_w = ' ' | *win++ << WWC_MSHIFT;
6435330Sedward else
6535330Sedward s++, win++;
6614423Sedward }
6735330Sedward if (!cleared)
6835330Sedward wwtouched[row] |= WWU_TOUCHED;
6914423Sedward }
70