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

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

unix.superglobalmegacorp.com

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