Commit | Line | Data |
---|---|---|
8584be19 | 1 | #ifndef lint |
5cb4df98 | 2 | static char *sccsid = "@(#)wwmisc.c 3.4 83/11/28"; |
8584be19 EW |
3 | #endif |
4 | ||
5 | #include "ww.h" | |
6 | ||
27b31336 | 7 | /* |
f2a77fe1 | 8 | * Sufficient but not necessary test for total visibility. |
27b31336 EW |
9 | */ |
10 | wwvisible(w) | |
11 | register struct ww *w; | |
12 | { | |
13 | register i; | |
14 | register nvis = 0; | |
15 | ||
f2a77fe1 | 16 | for (i = w->ww_i.t; i < w->ww_i.b; i++) |
27b31336 | 17 | nvis += w->ww_nvis[i]; |
f2a77fe1 EW |
18 | if (w->ww_hascursor |
19 | && w->ww_cur.r >= w->ww_i.b && w->ww_cur.r < w->ww_i.t | |
20 | && w->ww_cur.c >= w->ww_i.l && w->ww_cur.c < w->ww_i.r | |
21 | && wwsmap[w->ww_cur.r][w->ww_cur.c] == w->ww_index) | |
27b31336 | 22 | nvis++; |
f2a77fe1 | 23 | return nvis == w->ww_i.nr * w->ww_i.nc; |
27b31336 EW |
24 | } |
25 | ||
2ea355ad EW |
26 | char * |
27 | unctrl(c) | |
5cb4df98 | 28 | register c; |
2ea355ad EW |
29 | { |
30 | static char buf[5]; | |
31 | register char *p = buf; | |
32 | ||
5cb4df98 | 33 | c = (unsigned)(unsigned char)c; |
2ea355ad EW |
34 | if (c == DEL) { |
35 | *p++ = '^'; | |
36 | *p++ = '?'; | |
37 | } else if (c < ' ') { | |
38 | *p++ = '^'; | |
39 | *p++ = c + '@'; | |
40 | } else if (c > DEL) { | |
41 | *p++ = '\\'; | |
42 | *p++ = (c >> 6 & 3) + '0'; | |
43 | *p++ = (c >> 3 & 7) + '0'; | |
44 | *p++ = (c & 7) + '0'; | |
45 | } else | |
46 | *p++ = c; | |
47 | *p = 0; | |
48 | return buf; | |
49 | } |