Tweak previous to set and log the feature instead of just setting the
authornicm <nicm@openbsd.org>
Fri, 11 Nov 2022 08:44:11 +0000 (08:44 +0000)
committernicm <nicm@openbsd.org>
Fri, 11 Nov 2022 08:44:11 +0000 (08:44 +0000)
flag.

usr.bin/tmux/tty-features.c
usr.bin/tmux/tty-keys.c
usr.bin/tmux/tty-term.c

index d44f77b..deb43f2 100644 (file)
@@ -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 <nicholas.marriott@gmail.com>
@@ -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. */
index 883f45d..06ac225 100644 (file)
@@ -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 <nicholas.marriott@gmail.com>
@@ -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);
index ad2f101..0b8e3b9 100644 (file)
@@ -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 <nicholas.marriott@gmail.com>
@@ -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))