SCCS-vsn: usr.bin/window/wwinit.c 1.6
SCCS-vsn: usr.bin/window/wwspawn.c 1.6
-static char *sccsid = "@(#)wwinit.c 1.5 83/07/22";
+static char *sccsid = "@(#)wwinit.c 1.6 83/07/26";
0, 0, 0
};
int _wwdtablesize;
0, 0, 0
};
int _wwdtablesize;
+char _wwtermcap[1024];
+char _wwkeys[512];
+static char *kp = _wwkeys;
int wwncol, wwnrow;
wwinit()
{
static char done = 0;
int wwncol, wwnrow;
wwinit()
{
static char done = 0;
return -1;
WSetRealCursor = 1;
Wscreensize(&wwnrow, &wwncol);
return -1;
WSetRealCursor = 1;
Wscreensize(&wwnrow, &wwncol);
+
+ if (tgetent(_wwtermcap, getenv("TERM")) != 1)
+ return -1;
+ addcap("kb");
+ addcap("ku");
+ addcap("kd");
+ addcap("kl");
+ addcap("kr");
+ addcap("kh");
+ if ((kn = tgetnum("kn")) >= 0) {
+ char cap[5];
+ int i;
+
+ sprintf(kp, "kn#%d:", kn);
+ for (; *kp; kp++)
+ ;
+ for (i = 1; i <= kn; i++) {
+ sprintf(cap, "k%d", i);
+ addcap(cap);
+ cap[0] = 'l';
+ addcap(cap);
+ }
+ }
+
+addcap(cap)
+register char *cap;
+{
+ static char tbuf[512];
+ static char *tp = tbuf;
+ register char *str;
+ char *tgetstr();
+
+ if ((str = tgetstr(cap, &tp)) != 0) {
+ while (*kp++ = *cap++)
+ ;
+ kp[-1] = '=';
+ while (*kp++ = *str++)
+ ;
+ kp[-1] = ':';
+ *kp = 0;
+ }
+}
-static char *sccsid = "@(#)wwspawn.c 1.5 83/07/22";
+static char *sccsid = "@(#)wwspawn.c 1.6 83/07/26";
#endif
#include "ww.h"
extern int _wwdtablesize;
#endif
#include "ww.h"
extern int _wwdtablesize;
+extern char _wwtermcap[];
wwfork(wp)
register struct ww *wp;
wwfork(wp)
register struct ww *wp;
:co#%d:dc=\\EN:dl=\\EM:do=\\EB:ei=\\EO:ho=\\EH:li#%d:im=\\E@:mi:\
:nd=\\EC:ta=^I:pt:up=\\EA:"
static char *env[100];
:co#%d:dc=\\EN:dl=\\EM:do=\\EB:ei=\\EO:ho=\\EH:li#%d:im=\\E@:mi:\
:nd=\\EC:ta=^I:pt:up=\\EA:"
static char *env[100];
-static char buf[sizeof TERMCAP + 10];
wwenviron(wp)
register struct ww *wp;
wwenviron(wp)
register struct ww *wp;
termcap = q++;
*q = 0;
*termcap = sprintf(buf, TERMCAP, wp->ww_i.ncol, wp->ww_i.nrow);
termcap = q++;
*q = 0;
*termcap = sprintf(buf, TERMCAP, wp->ww_i.ncol, wp->ww_i.nrow);