|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.