Annotation of coherent/g/usr/lib/ncurses/infotail, revision 1.1.1.1

1.1       root        1: int    tgetname ();    /* get termcap name */
                      2: int    tgetflag ();    /* get termcap boolean value */
                      3: int    tgetnum ();     /* get termcap numeric value */
                      4: int    tgetstr ();     /* get termcap string value */
                      5: 
                      6: /*
                      7:  * print_name:
                      8:  *     print name and aliases of current termcap entry.
                      9:  */
                     10: print_name ()
                     11: {
                     12:     char       name[100];
                     13: 
                     14:     tgetname (name);
                     15:     printf ("%s,\n", name);
                     16: }
                     17: 
                     18: /*
                     19:  * print_bools:
                     20:  *     print all boolean fields of current termcap entry.
                     21:  */
                     22: print_bools ()
                     23: {
                     24:     int                i, val;
                     25:     bool       stuffprinted = FALSE;
                     26: 
                     27:     for (i = 0; i < MAXBOOLS; i++)
                     28:        if (val = tgetflag (boolcaps[i].capname)) {
                     29:            if (val == 1)
                     30:                printf ("\t%s,", boolcaps[i].infoname);
                     31:            else
                     32:                printf ("\t%s@,", boolcaps[i].infoname);
                     33:            stuffprinted = TRUE;
                     34:        }
                     35:     if (stuffprinted)
                     36:        (void) putchar ('\n');
                     37: }
                     38: 
                     39: /*
                     40:  * print_nums:
                     41:  *     print all numeric fields of current termcap entry.
                     42:  */
                     43: print_nums ()
                     44: {
                     45:     int                i, capval;
                     46:     bool       stuffprinted = FALSE;
                     47: 
                     48:     for (i = 0; i < MAXNUMS; i++)
                     49:        if ((capval = tgetnum (numcaps[i].capname)) >= 0) {
                     50:            printf ("\t%s#%d,", numcaps[i].infoname, capval);
                     51:            stuffprinted = TRUE;
                     52:        }
                     53:        else if (capval == -2) {
                     54:            printf ("\t%s@,", numcaps[i].infoname);
                     55:            stuffprinted = TRUE;
                     56:        }
                     57:     if (stuffprinted)
                     58:        (void) putchar ('\n');
                     59: }
                     60: 
                     61: /*
                     62:  * print_strs:
                     63:  *     print all string fields of current termcap entry.
                     64:  */
                     65: print_strs ()
                     66: {
                     67:     int                i, count = 0;
                     68:     char       capval[100];
                     69: 
                     70:     for (i = 0; i < MAXSTRS; i++) {
                     71:        tgetstr (strcaps[i].capname, capval);
                     72:        if (!capval[0]) {
                     73:            if (strcmp (strcaps[i].capname, "le") == 0) {
                     74:                tgetstr ("bc", capval);
                     75:            }
                     76:            else if (strcmp (strcaps[i].capname, "ta") == 0) { 
                     77:                if (tgetflag ("pt")) {
                     78:                    capval[0] = '\t';
                     79:                    capval[1] = '\0';
                     80:                }
                     81:            }
                     82:        }
                     83:        if ((!capval[0]) && (strcaps[i].dflt))
                     84:            (void) strcpy (capval, strcaps[i].dflt);
                     85:        if (capval[0]) {
                     86:            if (strcmp (capval, "@") != 0) {
                     87:                printf ("\t%s=", strcaps[i].infoname);
                     88:                if (strcmp(strcaps[i].infoname,"use") != 0) {
                     89:                    put_str (capval);
                     90:                    printf (",");
                     91:                }
                     92:                else
                     93:                    printf ("%s,", capval);
                     94:            }
                     95:            else
                     96:                printf ("\t%s@,", strcaps[i].infoname);
                     97:            count++;
                     98:            if (!(count %= 3))
                     99:                putchar ('\n');
                    100:        }
                    101:     }
                    102:     if (count)
                    103:        (void) putchar ('\n');
                    104: }
                    105: 
                    106: /*
                    107:  * put_str:
                    108:  *     translate strings to printable format and print them.
                    109:  */
                    110: put_str (s)
                    111: char   *s;
                    112: {
                    113:     bool       rflag = FALSE;  /* % codes */
                    114:     char       *c;
                    115:     int                parm;
                    116: 
                    117:     if ((isdigit (*s)) || (*s == '.')) {       /* handle padding */
                    118:        printf ("$<");
                    119:        while ((isdigit (*s)) || (*s == '.')) {
                    120:            (void) putchar (*s);
                    121:            s++;
                    122:        }
                    123:        if (*s == '*') {
                    124:            (void) putchar (*s);
                    125:            s++;
                    126:        }
                    127:        (void) putchar ('>');
                    128:     }
                    129:     for (c = s; *c; c++) {     /* scan for % codes (needs work) */
                    130:        if (*c == '%') {
                    131:            c++;
                    132:            switch (*c) {
                    133:                case 'r':
                    134:                    rflag = TRUE;
                    135:                    break;
                    136:                default:
                    137:                    break;      /* ignore */
                    138:            }
                    139:        }
                    140:     }
                    141:     parm = 0;
                    142:     while (*s) {               /* print the string */
                    143:        switch (*s) {
                    144:            case '%':
                    145:                s++;
                    146:                switch (*s) {
                    147:                    case '%':
                    148:                        printf ("%%%%");
                    149:                        break;
                    150:                    case 'i':
                    151:                        printf ("%%i");
                    152:                        break;
                    153:                    case 'd':
                    154:                        parm++;
                    155:                        if ((rflag) && (parm <= 2)) {
                    156:                            if (parm == 1)
                    157:                                printf ("%%p2%%d");
                    158:                            else
                    159:                                printf ("%%p1%%d");
                    160:                        }
                    161:                        else
                    162:                            printf ("%%p%d%%d", parm);
                    163:                        break;
                    164:                    case '2':
                    165:                        parm++;
                    166:                        if ((rflag) && (parm <= 2)) {
                    167:                            if (parm == 1)
                    168:                                printf ("%%p2%%02d");
                    169:                            else
                    170:                                printf ("%%p1%%02d");
                    171:                        }
                    172:                        else
                    173:                            printf ("%%p%d%%02d", parm);
                    174:                        break;
                    175:                    case '3':
                    176:                        parm++;
                    177:                        if ((rflag) && (parm <= 2)) {
                    178:                            if (parm == 1)
                    179:                                printf ("%%p2%%03d");
                    180:                            else
                    181:                                printf ("%%p1%%03d");
                    182:                        }
                    183:                        else
                    184:                            printf ("%%p%d%%03d", parm);
                    185:                        break;
                    186:                    case '.':
                    187:                        parm++;
                    188:                        if ((rflag) && (parm <= 2)) {
                    189:                            if (parm == 1)
                    190:                                printf ("%%p2%%c");
                    191:                            else
                    192:                                printf ("%%p1%%c");
                    193:                        }
                    194:                        else
                    195:                            printf ("%%p%d%%c", parm);
                    196:                        break;
                    197:                    case '+':
                    198:                        s++;
                    199:                        parm++;
                    200:                        if ((rflag) && (parm <= 2)) {
                    201:                            if (parm == 1)
                    202:                                printf ("%%p2%%'%c'%%+%%c", *s);
                    203:                            else
                    204:                                printf ("%%p1%%'%c'%%+%%c", *s);
                    205:                        }
                    206:                        else
                    207:                            printf ("%%p%d%%'%c'%%+%%c", parm, *s);
                    208:                        break;
                    209:                    default:
                    210:                        break;  /* ignore */
                    211:                }
                    212:                break;
                    213:            case '\200':
                    214:                printf ("\\0");
                    215:                break;
                    216:            case '\177':
                    217:                printf ("^?");
                    218:                break;
                    219:            case ',':
                    220:                printf ("\\,");
                    221:                break;
                    222:            case '\\':
                    223:                printf ("\\\\");
                    224:                break;
                    225:            case '^':
                    226:                printf ("\\^");
                    227:                break;
                    228:            case ':':
                    229:                printf ("\\:");
                    230:                break;
                    231:            case '\033':
                    232:                printf ("\\E");
                    233:                break;
                    234:            case '\n':
                    235:                printf ("\\n");
                    236:                break;
                    237:            case '\r':
                    238:                printf ("\\r");
                    239:                break;
                    240:            case '\t':
                    241:                printf ("\\t");
                    242:                break;
                    243:            case '\b':
                    244:                printf ("\\b");
                    245:                break;
                    246:            case '\f':
                    247:                printf ("\\f");
                    248:                break;
                    249:            case ' ':
                    250:                printf ("\\s");
                    251:                break;
                    252:            default:
                    253:                if (*s < ' ')
                    254:                    printf ("^%c", *s + 'A' - 1);
                    255:                else
                    256:                    (void) putchar (*s);
                    257:                break;
                    258:        }
                    259:        s++;
                    260:     }
                    261: }

unix.superglobalmegacorp.com

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