Annotation of coherent/g/usr/lib/ncurses/infotail, revision 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.