Annotation of researchv10no/cmd/ap/apnews/tpos.c, revision 1.1

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

unix.superglobalmegacorp.com

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