File:  [Research Unix] / researchv10no / cmd / ap / apkeys / tpos.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:35 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv10, HEAD
researchv10 Norman

/* ce is the parameter for "clear to end of line" */
# include "stdio.h"
# include "ctype.h"
char *tgetent(), *tgoto(), *tputs(), *tgetstr(), *getenv();
static char tname[25]="", tcapbuf[1024], *Movcur, strarea[1204], *p_area=strarea;
static char *Home=NULL, *Clr2nd=NULL, *Clear=NULL, *ClrLine=NULL;
static int tset=0;
tgate()
{
	static gate=0; char *envp;
	if (gate==0)
		{
		gate=1;
		if (!isatty(1)) return; /* don't ask pointless questions */
		if (tset==0)
			{
			envp = getenv("TERM");
			if (tname[0]==0 && envp != NULL)
			    strncpy (tname, envp, 25);
			if (! *tname) {
				fputs ("Terminal type? ", stdout);
				fflush(stdout);
				gets(tname);
				}
			}
		if (*tname==0) return;
		switch ( tgetent(tcapbuf, tname))
			{
			case -1: fprintf(stderr, "No termcap file\n");
				    exit(1);
			case 0: /* unknown terminal */
				return;
			default: break;
			}
		if (strcmp(tname, "adm3a")==0)
			{
			extern char *UP;
			UP = "xxx";
			}
		Movcur = tgetstr("cm", &p_area);
		Home = tgetstr("ho", &p_area);
		Clr2nd = tgetstr("cd", &p_area);
		Clear = tgetstr("cl", &p_area);
		ClrLine = tgetstr("ce", &p_area);
		}
}
tpos (line, col)
{
	tgate();
	if (Movcur!=NULL)
		{
		char tmpstr[100];
		strncpy(tmpstr, tgoto(Movcur, col, line), 100);
		if (strcmp(tmpstr, "OOPS")==0) return;
		termwr(tmpstr);
		}
	else
	if (Home!=NULL)
		{
		termwr(Home);
		while (line-- > 0)
			termwr("\n");
		while (col-- > 0)
			termwr(" ");
		}
	return;
}
startsc()
{
tgate();
if (Home != NULL)
	termwr(Home);
else
if (Movcur != NULL)
	tpos(0,0);
if (Clr2nd != NULL)
	termwr(Clr2nd);
else if (Clear !=NULL)
	termwr(Clear);
}
clr2end ()
{
tgate();
if (Clr2nd !=NULL)
	termwr(Clr2nd);
}
clrline()
{
tgate();
if (ClrLine !=NULL)
	termwr(ClrLine);
}
ifclear()
{
return (Clr2nd!=NULL);
}
ifclrline()
{
return(ClrLine!=NULL);
}
stterm(t)
	char *t;
{
strcpy(tname, t);
tset=1;
}
char *
gtterm()
{
return(tname);
}
termwr(s)
	char *s;
{
int delay; char *sr;
for(sr=s; isdigit(*sr); sr++)
	;
fputs(sr, stdout);
if (sr<=s) return;
for (delay=atoi(s)/10; delay>0; delay--)
	putc(000, stdout);
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.