Old Terminal.app versions do not respond correctly to secondary DA,

instead responding with the primary DA response. Ignore it. Reported by
Dave Vandervies.
pull/2378/head
nicm 2020-08-24 05:23:30 +00:00
parent 43e3e53908
commit e4a4fcfc90
1 changed files with 9 additions and 2 deletions

View File

@ -1192,7 +1192,10 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len,
if (tty->flags & TTY_HAVEDA)
return (-1);
/* First three bytes are always \033[?. */
/*
* First three bytes are always \033[>. Some older Terminal.app
* versions respond as for DA (\033[?) so accept and ignore that.
*/
if (buf[0] != '\033')
return (-1);
if (len == 1)
@ -1201,7 +1204,7 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len,
return (-1);
if (len == 2)
return (1);
if (buf[2] != '>')
if (buf[2] != '>' && buf[2] != '?')
return (-1);
if (len == 3)
return (1);
@ -1219,6 +1222,10 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len,
tmp[i] = '\0';
*size = 4 + i;
/* Ignore DA response. */
if (buf[2] == '?')
return (0);
/* Convert all arguments to numbers. */
cp = tmp;
while ((next = strsep(&cp, ";")) != NULL) {