Annotation of researchv10no/cmd/ap/apkeys/tpos.c, revision 1.1.1.1

1.1       root        1: /* ce is the parameter for "clear to end of line" */
                      2: # include "stdio.h"
                      3: # include "ctype.h"
                      4: char *tgetent(), *tgoto(), *tputs(), *tgetstr(), *getenv();
                      5: static char tname[25]="", tcapbuf[1024], *Movcur, strarea[1204], *p_area=strarea;
                      6: static char *Home=NULL, *Clr2nd=NULL, *Clear=NULL, *ClrLine=NULL;
                      7: static int tset=0;
                      8: tgate()
                      9: {
                     10:        static gate=0; char *envp;
                     11:        if (gate==0)
                     12:                {
                     13:                gate=1;
                     14:                if (!isatty(1)) return; /* don't ask pointless questions */
                     15:                if (tset==0)
                     16:                        {
                     17:                        envp = getenv("TERM");
                     18:                        if (tname[0]==0 && envp != NULL)
                     19:                            strncpy (tname, envp, 25);
                     20:                        if (! *tname) {
                     21:                                fputs ("Terminal type? ", stdout);
                     22:                                fflush(stdout);
                     23:                                gets(tname);
                     24:                                }
                     25:                        }
                     26:                if (*tname==0) return;
                     27:                switch ( tgetent(tcapbuf, tname))
                     28:                        {
                     29:                        case -1: fprintf(stderr, "No termcap file\n");
                     30:                                    exit(1);
                     31:                        case 0: /* unknown terminal */
                     32:                                return;
                     33:                        default: break;
                     34:                        }
                     35:                if (strcmp(tname, "adm3a")==0)
                     36:                        {
                     37:                        extern char *UP;
                     38:                        UP = "xxx";
                     39:                        }
                     40:                Movcur = tgetstr("cm", &p_area);
                     41:                Home = tgetstr("ho", &p_area);
                     42:                Clr2nd = tgetstr("cd", &p_area);
                     43:                Clear = tgetstr("cl", &p_area);
                     44:                ClrLine = tgetstr("ce", &p_area);
                     45:                }
                     46: }
                     47: tpos (line, col)
                     48: {
                     49:        tgate();
                     50:        if (Movcur!=NULL)
                     51:                {
                     52:                char tmpstr[100];
                     53:                strncpy(tmpstr, tgoto(Movcur, col, line), 100);
                     54:                if (strcmp(tmpstr, "OOPS")==0) return;
                     55:                termwr(tmpstr);
                     56:                }
                     57:        else
                     58:        if (Home!=NULL)
                     59:                {
                     60:                termwr(Home);
                     61:                while (line-- > 0)
                     62:                        termwr("\n");
                     63:                while (col-- > 0)
                     64:                        termwr(" ");
                     65:                }
                     66:        return;
                     67: }
                     68: startsc()
                     69: {
                     70: tgate();
                     71: if (Home != NULL)
                     72:        termwr(Home);
                     73: else
                     74: if (Movcur != NULL)
                     75:        tpos(0,0);
                     76: if (Clr2nd != NULL)
                     77:        termwr(Clr2nd);
                     78: else if (Clear !=NULL)
                     79:        termwr(Clear);
                     80: }
                     81: clr2end ()
                     82: {
                     83: tgate();
                     84: if (Clr2nd !=NULL)
                     85:        termwr(Clr2nd);
                     86: }
                     87: clrline()
                     88: {
                     89: tgate();
                     90: if (ClrLine !=NULL)
                     91:        termwr(ClrLine);
                     92: }
                     93: ifclear()
                     94: {
                     95: return (Clr2nd!=NULL);
                     96: }
                     97: ifclrline()
                     98: {
                     99: return(ClrLine!=NULL);
                    100: }
                    101: stterm(t)
                    102:        char *t;
                    103: {
                    104: strcpy(tname, t);
                    105: tset=1;
                    106: }
                    107: char *
                    108: gtterm()
                    109: {
                    110: return(tname);
                    111: }
                    112: termwr(s)
                    113:        char *s;
                    114: {
                    115: int delay; char *sr;
                    116: for(sr=s; isdigit(*sr); sr++)
                    117:        ;
                    118: fputs(sr, stdout);
                    119: if (sr<=s) return;
                    120: for (delay=atoi(s)/10; delay>0; delay--)
                    121:        putc(000, stdout);
                    122: }

unix.superglobalmegacorp.com

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