Commit | Line | Data |
---|---|---|
60de5df9 | 1 | /* |
00747047 KB |
2 | * Copyright (c) 1983, 1993 |
3 | * The Regents of the University of California. All rights reserved. | |
46e9ea25 | 4 | * |
3dd3a9e5 KB |
5 | * This code is derived from software contributed to Berkeley by |
6 | * Edward Wang at The University of California, Berkeley. | |
7 | * | |
87f529ec | 8 | * %sccs.include.redist.c% |
60de5df9 EW |
9 | */ |
10 | ||
46e9ea25 | 11 | #ifndef lint |
00747047 | 12 | static char sccsid[] = "@(#)wwclreol.c 8.1 (Berkeley) %G%"; |
46e9ea25 KB |
13 | #endif /* not lint */ |
14 | ||
a43a8870 | 15 | #include "ww.h" |
e908bfac | 16 | #include "tt.h" |
a43a8870 EW |
17 | |
18 | /* | |
19 | * Clear w to the end of line. | |
6a1ef78a | 20 | * If cleared is true, then the screen line has already been cleared. |
a43a8870 | 21 | */ |
f2a77fe1 | 22 | wwclreol1(w, row, col, cleared) |
a43a8870 | 23 | register struct ww *w; |
f2a77fe1 | 24 | int row, col; |
14f251df | 25 | char cleared; |
a43a8870 EW |
26 | { |
27 | register i; | |
a43a8870 | 28 | |
19f9784c EW |
29 | /* |
30 | * Clear the buffer right off | |
31 | */ | |
32 | { | |
33 | register union ww_char *buf; | |
34 | ||
f2a77fe1 EW |
35 | buf = &w->ww_buf[row][col]; |
36 | for (i = w->ww_b.r - col; --i >= 0;) | |
a43a8870 | 37 | buf++->c_w = ' '; |
a43a8870 | 38 | } |
19f9784c EW |
39 | |
40 | /* | |
41 | * If can't see it, just return. | |
42 | */ | |
f2a77fe1 EW |
43 | if (row < w->ww_i.t || row >= w->ww_i.b |
44 | || w->ww_i.r <= 0 || w->ww_i.r <= col) | |
19f9784c EW |
45 | return; |
46 | ||
f2a77fe1 EW |
47 | if (col < w->ww_i.l) |
48 | col = w->ww_i.l; | |
19f9784c EW |
49 | |
50 | /* | |
6a1ef78a | 51 | * Now fix wwns. |
19f9784c | 52 | */ |
6a1ef78a | 53 | { |
19f9784c EW |
54 | register union ww_char *s; |
55 | register char *smap, *win; | |
19f9784c | 56 | |
2012dbdd EW |
57 | i = col; |
58 | smap = &wwsmap[row][i]; | |
59 | s = &wwns[row][i]; | |
60 | win = &w->ww_win[row][i]; | |
6a1ef78a EW |
61 | for (i = w->ww_i.r - i; --i >= 0;) |
62 | if (*smap++ == w->ww_index) | |
63 | s++->c_w = ' ' | *win++ << WWC_MSHIFT; | |
64 | else | |
65 | s++, win++; | |
a43a8870 | 66 | } |
6a1ef78a EW |
67 | if (!cleared) |
68 | wwtouched[row] |= WWU_TOUCHED; | |
a43a8870 | 69 | } |