From f4ec6bca958cb72ac9f3c327006a61725af45079 Mon Sep 17 00:00:00 2001 From: nicm Date: Fri, 11 Nov 2022 08:44:11 +0000 Subject: [PATCH] Tweak previous to set and log the feature instead of just setting the flag. --- usr.bin/tmux/tty-features.c | 4 ++-- usr.bin/tmux/tty-keys.c | 31 +++++++++++++++++-------------- usr.bin/tmux/tty-term.c | 5 ++++- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/usr.bin/tmux/tty-features.c b/usr.bin/tmux/tty-features.c index d44f77b3921..deb43f24776 100644 --- a/usr.bin/tmux/tty-features.c +++ b/usr.bin/tmux/tty-features.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tty-features.c,v 1.27 2022/11/11 08:37:55 nicm Exp $ */ +/* $OpenBSD: tty-features.c,v 1.28 2022/11/11 08:44:11 nicm Exp $ */ /* * Copyright (c) 2020 Nicholas Marriott @@ -343,7 +343,7 @@ static const char *const tty_feature_sixel_capabilities[] = { static const struct tty_feature tty_feature_sixel = { "sixel", tty_feature_sixel_capabilities, - 0 + TERM_SIXEL }; /* Available terminal features. */ diff --git a/usr.bin/tmux/tty-keys.c b/usr.bin/tmux/tty-keys.c index 883f45d080d..06ac22570a0 100644 --- a/usr.bin/tmux/tty-keys.c +++ b/usr.bin/tmux/tty-keys.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tty-keys.c,v 1.161 2022/11/11 08:37:55 nicm Exp $ */ +/* $OpenBSD: tty-keys.c,v 1.162 2022/11/11 08:44:11 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -1256,6 +1256,7 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, size_t *size) { struct client *c = tty->client; + int *features = &c->term_features; u_int i, n = 0; char tmp[128], *endptr, p[32] = { 0 }, *cp, *next; @@ -1305,11 +1306,11 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, case 62: /* VT220 */ case 63: /* VT320 */ case 64: /* VT420 */ - for (i = 1; i < n; i++) { - log_debug("%s: DA feature: %d", c->name, p[i]); - if (p[i] == 4) - tty->term->flags |= TERM_SIXEL; - } + for (i = 1; i < n; i++) { + log_debug("%s: DA feature: %d", c->name, p[i]); + if (p[i] == 4) + tty_add_features(features, "sixel", ","); + } break; } log_debug("%s: received primary DA %.*s", c->name, (int)*size, buf); @@ -1329,6 +1330,7 @@ tty_keys_device_attributes2(struct tty *tty, const char *buf, size_t len, size_t *size) { struct client *c = tty->client; + int *features = &c->term_features; u_int i, n = 0; char tmp[128], *endptr, p[32] = { 0 }, *cp, *next; @@ -1376,16 +1378,16 @@ tty_keys_device_attributes2(struct tty *tty, const char *buf, size_t len, /* Add terminal features. */ switch (p[0]) { case 41: /* VT420 */ - tty_add_features(&c->term_features, "margins,rectfill", ","); + tty_add_features(features, "margins,rectfill", ","); break; case 'M': /* mintty */ - tty_default_features(&c->term_features, "mintty", 0); + tty_default_features(features, "mintty", 0); break; case 'T': /* tmux */ - tty_default_features(&c->term_features, "tmux", 0); + tty_default_features(features, "tmux", 0); break; case 'U': /* rxvt-unicode */ - tty_default_features(&c->term_features, "rxvt-unicode", 0); + tty_default_features(features, "rxvt-unicode", 0); break; } log_debug("%s: received secondary DA %.*s", c->name, (int)*size, buf); @@ -1405,6 +1407,7 @@ tty_keys_extended_device_attributes(struct tty *tty, const char *buf, size_t len, size_t *size) { struct client *c = tty->client; + int *features = &c->term_features; u_int i; char tmp[128]; @@ -1445,13 +1448,13 @@ tty_keys_extended_device_attributes(struct tty *tty, const char *buf, /* Add terminal features. */ if (strncmp(tmp, "iTerm2 ", 7) == 0) - tty_default_features(&c->term_features, "iTerm2", 0); + tty_default_features(features, "iTerm2", 0); else if (strncmp(tmp, "tmux ", 5) == 0) - tty_default_features(&c->term_features, "tmux", 0); + tty_default_features(features, "tmux", 0); else if (strncmp(tmp, "XTerm(", 6) == 0) - tty_default_features(&c->term_features, "XTerm", 0); + tty_default_features(features, "XTerm", 0); else if (strncmp(tmp, "mintty ", 7) == 0) - tty_default_features(&c->term_features, "mintty", 0); + tty_default_features(features, "mintty", 0); log_debug("%s: received extended DA %.*s", c->name, (int)*size, buf); free(c->term_type); diff --git a/usr.bin/tmux/tty-term.c b/usr.bin/tmux/tty-term.c index ad2f1019416..0b8e3b99b86 100644 --- a/usr.bin/tmux/tty-term.c +++ b/usr.bin/tmux/tty-term.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tty-term.c,v 1.95 2022/11/11 08:37:55 nicm Exp $ */ +/* $OpenBSD: tty-term.c,v 1.96 2022/11/11 08:44:11 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott @@ -454,6 +454,9 @@ tty_term_apply_overrides(struct tty_term *term) a = options_array_next(a); } + /* Log the SIXEL flag. */ + log_debug("SIXEL flag is %d", !!(term->flags & TERM_SIXEL)); + /* Update the RGB flag if the terminal has RGB colours. */ if (tty_term_has(term, TTYC_SETRGBF) && tty_term_has(term, TTYC_SETRGBB)) -- 2.20.1