char * tigetstr(const char *id) { _DIAGASSERT(id != NULL); if (cur_term != NULL) return __UNCONST(ti_getstr(cur_term, id)); return (char *)CANCELLED_STRING; }
static void term_init(int fd, const char *sa[5]) { TERMINAL *ti; int error; const char *bold, *sgr0, *smso, *rmso, *smul, *rmul; if (ti_setupterm(&ti, NULL, fd, &error) == -1) { bold = sgr0 = NULL; smso = rmso = smul = rmul = ""; ti = NULL; } else { bold = ti_getstr(ti, "bold"); sgr0 = ti_getstr(ti, "sgr0"); if (bold == NULL || sgr0 == NULL) { smso = ti_getstr(ti, "smso"); if (smso == NULL || (rmso = ti_getstr(ti, "rmso")) == NULL) smso = rmso = ""; bold = sgr0 = NULL; } else smso = rmso = ""; smul = ti_getstr(ti, "smul"); if (smul == NULL || (rmul = ti_getstr(ti, "rmul")) == NULL) smul = rmul = ""; } sa[0] = term_fix_seq(ti, bold ? bold : smso); sa[1] = term_fix_seq(ti, sgr0 ? sgr0 : rmso); sa[2] = estrdup("..."); sa[3] = term_fix_seq(ti, smul); sa[4] = term_fix_seq(ti, rmul); if (ti) del_curterm(ti); }