Lines Matching defs:term

1 /* $OpenBSD: tty-term.c,v 1.102 2024/08/26 13:02:15 nicm Exp $ */
25 #include <term.h>
359 tty_term_apply(struct tty_term *term, const char *capabilities, int quiet)
365 const char *errstr, *name = term->name;
401 code = &term->codes[i];
435 tty_term_apply_overrides(struct tty_term *term)
453 if (first != NULL && fnmatch(first, term->name, 0) == 0)
454 tty_term_apply(term, s + offset, 0);
459 log_debug("SIXEL flag is %d", !!(term->flags & TERM_SIXEL));
462 if (tty_term_has(term, TTYC_SETRGBF) &&
463 tty_term_has(term, TTYC_SETRGBB))
464 term->flags |= TERM_RGBCOLOURS;
466 term->flags &= ~TERM_RGBCOLOURS;
467 log_debug("RGBCOLOURS flag is %d", !!(term->flags & TERM_RGBCOLOURS));
473 if (tty_term_has(term, TTYC_CMG) && tty_term_has(term, TTYC_CLMG))
474 term->flags |= TERM_DECSLRM;
476 term->flags &= ~TERM_DECSLRM;
477 log_debug("DECSLRM flag is %d", !!(term->flags & TERM_DECSLRM));
483 if (tty_term_has(term, TTYC_RECT))
484 term->flags |= TERM_DECFRA;
486 term->flags &= ~TERM_DECFRA;
487 log_debug("DECFRA flag is %d", !!(term->flags & TERM_DECFRA));
504 if (!tty_term_flag(term, TTYC_AM))
505 term->flags |= TERM_NOAM;
507 term->flags &= ~TERM_NOAM;
508 log_debug("NOAM flag is %d", !!(term->flags & TERM_NOAM));
511 memset(term->acs, 0, sizeof term->acs);
512 if (tty_term_has(term, TTYC_ACSC))
513 acs = tty_term_string(term, TTYC_ACSC);
517 term->acs[(u_char) acs[0]][0] = acs[1];
524 struct tty_term *term;
536 log_debug("adding term %s", name);
538 term = xcalloc(1, sizeof *term);
539 term->tty = tty;
540 term->name = xstrdup(name);
541 term->codes = xcalloc(tty_term_ncodes(), sizeof *term->codes);
542 LIST_INSERT_HEAD(&tty_terms, term, entry);
558 code = &term->codes[j];
593 if (first != NULL && fnmatch(first, term->name, 0) == 0)
599 tty_term_apply_overrides(term);
602 if (!tty_term_has(term, TTYC_CLEAR)) {
606 if (!tty_term_has(term, TTYC_CUP)) {
623 s = tty_term_string(term, TTYC_CLEAR);
624 if (tty_term_flag(term, TTYC_XT) || strncmp(s, "\033[", 2) == 0) {
625 term->flags |= TERM_VT100LIKE;
630 if ((tty_term_flag(term, TTYC_TC) || tty_term_has(term, TTYC_RGB)) &&
631 (!tty_term_has(term, TTYC_SETRGBF) ||
632 !tty_term_has(term, TTYC_SETRGBB)))
636 if (tty_apply_features(term, *feat))
637 tty_term_apply_overrides(term);
641 log_debug("%s%s", name, tty_term_describe(term, i));
643 return (term);
646 tty_term_free(term);
651 tty_term_free(struct tty_term *term)
655 log_debug("removing term %s", term->name);
658 if (term->codes[i].type == TTYCODE_STRING)
659 free(term->codes[i].value.string);
661 free(term->codes);
663 LIST_REMOVE(term, entry);
664 free(term->name);
665 free(term);
750 tty_term_has(struct tty_term *term, enum tty_code_code code)
752 return (term->codes[code].type != TTYCODE_NONE);
756 tty_term_string(struct tty_term *term, enum tty_code_code code)
758 if (!tty_term_has(term, code))
760 if (term->codes[code].type != TTYCODE_STRING)
762 return (term->codes[code].value.string);
766 tty_term_string_i(struct tty_term *term, enum tty_code_code code, int a)
768 const char *x = tty_term_string(term, code), *s;
779 tty_term_string_ii(struct tty_term *term, enum tty_code_code code, int a, int b)
781 const char *x = tty_term_string(term, code), *s;
792 tty_term_string_iii(struct tty_term *term, enum tty_code_code code, int a,
795 const char *x = tty_term_string(term, code), *s;
806 tty_term_string_s(struct tty_term *term, enum tty_code_code code, const char *a)
808 const char *x = tty_term_string(term, code), *s;
819 tty_term_string_ss(struct tty_term *term, enum tty_code_code code,
822 const char *x = tty_term_string(term, code), *s;
833 tty_term_number(struct tty_term *term, enum tty_code_code code)
835 if (!tty_term_has(term, code))
837 if (term->codes[code].type != TTYCODE_NUMBER)
839 return (term->codes[code].value.number);
843 tty_term_flag(struct tty_term *term, enum tty_code_code code)
845 if (!tty_term_has(term, code))
847 if (term->codes[code].type != TTYCODE_FLAG)
849 return (term->codes[code].value.flag);
853 tty_term_describe(struct tty_term *term, enum tty_code_code code)
858 switch (term->codes[code].type) {
864 strnvis(out, term->codes[code].value.string, sizeof out,
873 term->codes[code].value.number);
878 term->codes[code].value.flag ? "true" : "false");