Annotation of coherent/d/usr/bin/elvis/tinytcap.c, revision 1.1.1.1

1.1       root        1: /* tinytcap.c */
                      2: 
                      3: /* This file contains functions which simulate the termcap functions, but which
                      4:  * can only describe the capabilities of the ANSI.SYS and NANSI.SYS drivers on
                      5:  * an MS-DOS system or the VT-52 emulator of an Atari-ST.  These functions
                      6:  * do *NOT* access a "termcap" database file.
                      7:  */
                      8: 
                      9: #include "config.h"
                     10: #if MSDOS || TOS || MINIX || COHERENT
                     11: 
                     12: #define CAP(str) CAP2((str)[0], (str)[1])
                     13: #define CAP2(a,b) (((a) << 8) + ((b) & 0xff))
                     14: 
                     15: #if MSDOS
                     16: # define VAL2(v,a)     (a)
                     17: # define VAL3(v,a,n)   (nansi ? (n) : (a))
                     18: static int     nansi;
                     19: #endif
                     20: 
                     21: #if TOS
                     22: # define VAL2(v,a)     (v)
                     23: # define VAL3(v,a,n)   (v)
                     24: #endif
                     25: 
                     26: #if MINIX || COHERENT
                     27: # define VAL2(v,a)     (a)
                     28: # define VAL3(v,a,n)   (n)
                     29: #endif
                     30: 
                     31: 
                     32: /*ARGSUSED*/
                     33: int tgetent(bp, name)
                     34:        char    *bp;    /* buffer for storing the entry -- ignored */
                     35:        char    *name;  /* name of the entry */
                     36: {
                     37: #if MSDOS
                     38:        nansi = strcmp(name, "ansi");
                     39: #endif
                     40:        return 1;
                     41: }
                     42: 
                     43: int tgetnum(id)
                     44:        char    *id;
                     45: {
                     46:        switch (CAP(id))
                     47:        {
                     48:          case CAP2('l','i'):   return 25;
                     49:          case CAP2('c','o'):   return 80;
                     50:          case CAP2('s','g'):   return 0;
                     51:          case CAP2('u','g'):   return 0;
                     52:          default:              return -1;
                     53:        }
                     54: }
                     55: 
                     56: int tgetflag(id)
                     57:        char    *id;
                     58: {
                     59:        switch (CAP(id))
                     60:        {
                     61: #if !MINIX || COHERENT
                     62:          case CAP2('a','m'):   return 1;
                     63: #endif
                     64:          case CAP2('b','s'):   return 1;
                     65:          case CAP2('m','i'):   return 1;
                     66:          default:              return 0;
                     67:        }
                     68: }
                     69: 
                     70: /*ARGSUSED*/
                     71: char *tgetstr(id, bp)
                     72:        char    *id;
                     73:        char    **bp;   /* pointer to pointer to buffer - ignored */
                     74: {
                     75:        switch (CAP(id))
                     76:        {
                     77:          case CAP2('c','e'):   return VAL2("\033K", "\033[K");
                     78:          case CAP2('c','l'):   return VAL2("\033E", "\033[2J");
                     79: 
                     80:          case CAP2('a','l'):   return VAL3("\033L", (char *)0, "\033[L");
                     81:          case CAP2('d','l'):   return VAL3("\033M", (char *)0, "\033[M");
                     82: 
                     83:          case CAP2('c','m'):   return VAL2("\033Y%i%+ %+ ", "\033[%i%d;%dH");
                     84:          case CAP2('d','o'):   return VAL2("\033B", "\033[B");
                     85:          case CAP2('n','d'):   return VAL2("\033C", "\033[C");
                     86:          case CAP2('u','p'):   return VAL2("\033A", "\033[A");
                     87:          case CAP2('t','i'):   return VAL2("\033e", "");
                     88:          case CAP2('t','e'):   return VAL2("", "");
                     89: 
                     90:          case CAP2('s','o'):   return VAL2("\033p", "\033[7m");
                     91:          case CAP2('s','e'):   return VAL2("\033q", "\033[m");
                     92:          case CAP2('u','s'):   return VAL2((char *)0, "\033[4m");
                     93:          case CAP2('u','e'):   return VAL2((char *)0, "\033[m");
                     94:          case CAP2('m','d'):   return VAL2((char *)0, "\033[1m");
                     95:          case CAP2('m','e'):   return VAL2((char *)0, "\033[m");
                     96: 
                     97: #if MINIX || COHERENT
                     98:          case CAP2('k','u'):   return "\033[A";
                     99:          case CAP2('k','d'):   return "\033[B";
                    100:          case CAP2('k','l'):   return "\033[D";
                    101:          case CAP2('k','r'):   return "\033[C";
                    102:          case CAP2('P','U'):   return "\033[V";
                    103:          case CAP2('P','D'):   return "\033[U";
                    104:          case CAP2('H','M'):   return "\033[H";
                    105: # if MINIX
                    106:          case CAP2('E','N'):   return "\033[Y";
                    107: # else /* COHERENT */
                    108:          case CAP2('E','N'):   return "\033[24H";
                    109: # endif
                    110: #else /* MS-DOS or TOS */
                    111:          case CAP2('k','u'):   return "#H";
                    112:          case CAP2('k','d'):   return "#P";
                    113:          case CAP2('k','l'):   return "#K";
                    114:          case CAP2('k','r'):   return "#M";
                    115:          case CAP2('H','M'):   return "#G";
                    116:          case CAP2('E','N'):   return "#O";
                    117:          case CAP2('P','U'):   return "#I";
                    118:          case CAP2('P','D'):   return "#Q";
                    119: #endif
                    120: 
                    121:          default:              return (char *)0;
                    122:        }
                    123: }
                    124: 
                    125: /*ARGSUSED*/
                    126: char *tgoto(cm, destcol, destrow)
                    127:        char    *cm;    /* cursor movement string -- ignored */
                    128:        int     destcol;/* destination column, 0 - 79 */
                    129:        int     destrow;/* destination row, 0 - 24 */
                    130: {
                    131:        static char buf[30];
                    132: 
                    133: #if MSDOS || MINIX || COHERENT
                    134:        sprintf(buf, "\033[%d;%dH", destrow + 1, destcol + 1);
                    135: #endif
                    136: #if TOS
                    137:        sprintf(buf, "\033Y%c%c", ' ' + destrow, ' ' + destcol);
                    138: #endif
                    139:        return buf;
                    140: }
                    141: 
                    142: /*ARGSUSED*/
                    143: void tputs(cp, affcnt, outfn)
                    144:        char    *cp;            /* the string to output */
                    145:        int     affcnt;         /* number of affected lines -- ignored */
                    146:        int     (*outfn)();     /* the output function */
                    147: {
                    148:        while (*cp)
                    149:        {
                    150:                (*outfn)(*cp);
                    151:                cp++;
                    152:        }
                    153: }
                    154: #endif

unix.superglobalmegacorp.com

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