Annotation of 42BSD/usr.bin/tabs.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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