[net.micro.att] UNIX PC quickie environment, installment 3

adam@npois.UUCP (Adam V. Reed) (05/21/85)

/* wenv.c */
/* This program can be used, via $ eval `wenv`, to update the
environment variables after starting a new window or changing the size
of an old one. It is most useful in connection with aliases such as the
following in in $ENV (= $HOME/.kshrc):
	more='(eval `/u/adam/lib/wenv<$TTY`; /usr/bin/more -n$MLINES)'	\
	vi='eval `/u/adam/lib/wenv`; /usr/bin/vi'			\
	view='eval `/u/adam/lib/wenv`; /usr/bin/view'			\
If you don't have ksh, you can do the equivalent (less efficiently) with
scripts. */

#include <stdio.h>
#include <sys/font.h>
#include <sys/window.h>

char s0[] = "MLINES=";
char s1[] = " LINES=";
char s2[] = " COLS=";
char s3[] = " COLUMNS=";
char s4[] = " TERMCAP=':al=\\E[1L:am:bs:cd=\\E[0J:ce=\\E[0K:cl=\\E[2J\\E[H:cm=\\E[%i%2;%2H:dc=\\E[1P:dl=\\E[1M:do=\\E[B:ei=:ho=\\E[H:ic=\\E[1@:im=:kb=\\\10:kd=\\E[B:kl=\\E[D:kr=\\E[C:ku=\\E[A:k1=\\EOc:k2=\\EOd:k3=\\EOe:k4=\\EOf:k5=\\EOg:k6=\\EOh:k7=\\EOi:k8=\\EOj:nd=\\E[C:se= ^H\\E[m:so=\\E[1;2;7m:ue=\\E[m:up=\\E[A:us=\\E[4m:EE=\\E[m:BO=\\E[0;7m:CV=\\E[=C:CI=\\E[=1C:KM=/usr/lib/ua/kmap.s4:li#";
char s5[] = ":co#";
char s6[] = ":' \n";

main()
	{
	struct uwdata thiswindow;
	extern int errno;
	int cols, lines;

	if (ioctl(0,WIOCGETD,&thiswindow) != -1)
		{
		cols = thiswindow.uw_width / thiswindow.uw_hs ;
		lines = thiswindow.uw_height / thiswindow.uw_vs ;
		(void)printf("%s%d%s%d%s%d%s%d%s%d%s%d%s",s0,lines-2,
			s1,lines,s2,cols,s3,cols,s4,lines,s5,cols,s6);
		}
		else (void)printf("TERMCAP=/etc/termcap \n");

	exit(errno);
	}