Annotation of 3BSD/cmd/tabs.c, revision 1.1

1.1     ! root        1: #include <stdio.h>
        !             2: #include <sgtty.h>
        !             3: 
        !             4: #define SP     ' '
        !             5: #define TB     '\t'
        !             6: #define NL     '\n'
        !             7: 
        !             8: # define ESC 033
        !             9: # define RHM 060
        !            10: # define SI 017
        !            11: # define DEL 0177
        !            12: # define SET '1'
        !            13: # define CLR '2'
        !            14: # define MGN '9'
        !            15: # define CR '\r'
        !            16: # define BS '\b'
        !            17: 
        !            18: struct sysnod {
        !            19:        char    *sysnam;
        !            20:        int     sysval;
        !            21: };
        !            22: 
        !            23: #define        DASI300 1
        !            24: #define        DASI300S 2
        !            25: #define DASI450 3
        !            26: #define TN300 4
        !            27: #define TTY37 5
        !            28: #define HP     6
        !            29: struct sysnod tty[] = {
        !            30:        {"dasi300", DASI300},
        !            31:        {"300", DASI300},
        !            32:        {"dasi300s", DASI300S},
        !            33:        {"300s", DASI300S},
        !            34:        {"dasi450", DASI450},
        !            35:        {"450", DASI450},
        !            36:        {"37", TTY37},
        !            37:        {"tty37", TTY37},
        !            38:        {"tn300", TN300},
        !            39:        {"terminet", TN300},
        !            40:        {"tn", TN300},
        !            41:        {"hp",  HP},
        !            42:        {0, 0},
        !            43: };
        !            44: int    margset = 1;
        !            45: 
        !            46: syslook(w)
        !            47: char *w;
        !            48: {
        !            49:        register struct sysnod *sp;
        !            50: 
        !            51:        for (sp = tty; sp->sysnam!=NULL; sp++)
        !            52:                if (strcmp(sp->sysnam, w)==0)
        !            53:                        return(sp->sysval);
        !            54:        return(0);
        !            55: }
        !            56: 
        !            57: main(argc,argv)
        !            58: int argc; char **argv;
        !            59: {
        !            60:        struct sgttyb tb;
        !            61:        int type;
        !            62:        char *getenv();
        !            63: 
        !            64:        type=0;
        !            65:        if (argc>=2 && strcmp(argv[1],"-n")==0) {
        !            66:                margset--; argc--; argv++;
        !            67:        }
        !            68:        if (argc>=2) {
        !            69:                type=syslook(argv[1]);
        !            70:        } else {
        !            71:                type=syslook(getenv("TERM"));
        !            72:        }
        !            73: 
        !            74:        switch(type) {
        !            75: 
        !            76:                case DASI300:   dasi300(); break;
        !            77: 
        !            78:                case DASI300S:  dasi300(); break;
        !            79: 
        !            80:                case DASI450:   dasi450(); break;
        !            81: 
        !            82:                case TN300:     tn300(); break;
        !            83: 
        !            84:                case TTY37:     tty37(); break;
        !            85: 
        !            86:                case HP:        hp2645(); break;
        !            87: 
        !            88:                default:
        !            89:                                gtty (0, &tb);
        !            90:                                if ( (tb.sg_flags & (LCASE|CRMOD)) == CRMOD) {
        !            91:                                        /* test for CR map on, upper case off, i.e. terminet but not 33 */
        !            92:                                        if ((tb.sg_ispeed) == B300) /* test for 300 baud */
        !            93:                                                misc();
        !            94:                                }
        !            95:                                else if ((tb.sg_flags & (CRMOD|LCASE)) == 0 && (tb.sg_ispeed ) == B150) {
        !            96:                                        /* apparent model 37 */
        !            97:                                        tty37();
        !            98:                                }
        !            99:        }
        !           100: }
        !           101: 
        !           102: clear(n)
        !           103: {
        !           104:        escape(CLR); 
        !           105:        delay(n);
        !           106:        putchar(CR); nl();
        !           107: }
        !           108: 
        !           109: delay(n)
        !           110: {
        !           111:        while (n--) putchar(DEL);
        !           112: }
        !           113: 
        !           114: tabs(n)
        !           115: {
        !           116:        int i,j;
        !           117: 
        !           118:        if(margset) n--;
        !           119: 
        !           120:        for( i=0; i<n; ++i ){
        !           121:                for( j=0; j<8; ++j ) {
        !           122:                        putchar(SP);
        !           123:                }
        !           124:                escape(SET);
        !           125:        }
        !           126: }
        !           127: 
        !           128: margin(n)
        !           129: {
        !           130:        int i;
        !           131: 
        !           132:        if(margset) {
        !           133:                for( i=0; i<n; ++i) putchar(SP);
        !           134:        }
        !           135: }
        !           136: 
        !           137: escape(c)
        !           138: {
        !           139:        putchar(ESC); putchar(c);
        !           140: }
        !           141: 
        !           142: bs(n)
        !           143: {
        !           144:        while (n--) putchar(BS);
        !           145: }
        !           146: 
        !           147: nl()
        !           148: {
        !           149:        putchar(NL);
        !           150: }
        !           151: 
        !           152: 
        !           153: 
        !           154: /* ======== terminal types ======== */
        !           155: 
        !           156: dasi450()
        !           157: {
        !           158:        struct sgttyb t;
        !           159:        gtty(0,&t);
        !           160:        t.sg_flags &= ~ALLDELAY;
        !           161:        stty(0,&t);
        !           162:        clear(8); bs(16); margin(8); escape(MGN); nl(); tabs(16);
        !           163:        escape(RHM); nl();
        !           164: }
        !           165: 
        !           166: tty37()
        !           167: {
        !           168:        putchar(SI); clear(40); bs(8); tabs(9); nl();
        !           169: }
        !           170: 
        !           171: dasi300()
        !           172: {
        !           173:        clear(8); tabs(15); nl();
        !           174: }
        !           175: 
        !           176: tn300()
        !           177: {
        !           178:        struct sgttyb t;
        !           179:        gtty(0,&t);
        !           180:        t.sg_flags &= ~ALLDELAY;
        !           181:        t.sg_flags |= CR1|BS1;
        !           182:        stty(0,&t);
        !           183:        clear(8); margin(8); escape(SET); tabs(14); nl();
        !           184: }
        !           185: 
        !           186: hp2645()
        !           187: {
        !           188:        escape('3'); /*clr*/
        !           189:        putchar(CR);
        !           190:        tabs(10);
        !           191:        nl();
        !           192: }
        !           193: 
        !           194: misc()
        !           195: {
        !           196:        tabs(14); nl();
        !           197: }

unix.superglobalmegacorp.com

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