#include char termbuf[128]; char *termp = termbuf; char expandbuf[128]; char *tgetstr(), *getenv(); /* expand string `s' in buffer `d' */ void expand(d, s) register char *d, *s; { register char *t; register int c; while (c = *s++) { if ((c &= 0377) <= 040) { /* special escapes */ for (t = "\bb\nn\rr\33E\tt\ff s"; *t && (*t++ != c); t++) ; if (*t) *d++ = '\\', *d++ = *t; else *d++ = '^', *d++ = c + '@'; } else if (c >= 0177) { sprintf(d, "\\%03o", c); d += 4; } else switch (c) { case ':': case '^': case ',': case '\\': *d++ = '\\'; default: *d++ = c; } } *d = '\0'; } main(argc, argv) int argc; char *argv[]; { char buf[2048]; register char *t; register char id[2]; register int n; if (tgetent(buf, argc > 1 ? argv[1] : getenv("TERM")) != 1) { fprintf(stderr, "tgetent failed\n"); exit(1); } /* brute force */ for (id[0] = 041; id[0] < 0177; id[0]++) for (id[1] = 041; id[1] < 0177; id[1]++) { if (t = tgetstr(id, &termp)) { termp = termbuf; expand(expandbuf, t); printf("%.2s=%s\n", id, expandbuf); } else if (tgetflag(id)) printf("%.2s\n", id); else if ((n = tgetnum(id)) >= 0) printf("%.2s#%d\n", id, n); } return 0; }