Merge branch 'obsd-master'

pull/2378/head
Thomas Adam 2020-08-24 08:01:17 +01:00
commit aa084bb49e
2 changed files with 11 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) if (tty->flags & TTY_HAVEDA)
return (-1); 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') if (buf[0] != '\033')
return (-1); return (-1);
if (len == 1) if (len == 1)
@ -1201,7 +1204,7 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len,
return (-1); return (-1);
if (len == 2) if (len == 2)
return (1); return (1);
if (buf[2] != '>') if (buf[2] != '>' && buf[2] != '?')
return (-1); return (-1);
if (len == 3) if (len == 3)
return (1); return (1);
@ -1219,6 +1222,10 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len,
tmp[i] = '\0'; tmp[i] = '\0';
*size = 4 + i; *size = 4 + i;
/* Ignore DA response. */
if (buf[2] == '?')
return (0);
/* Convert all arguments to numbers. */ /* Convert all arguments to numbers. */
cp = tmp; cp = tmp;
while ((next = strsep(&cp, ";")) != NULL) { while ((next = strsep(&cp, ";")) != NULL) {

View File

@ -305,6 +305,8 @@ tty_term_strip(const char *s)
ptr++; ptr++;
if (*ptr == '>') if (*ptr == '>')
ptr++; ptr++;
if (*ptr == '\0')
break;
} }
buf[len++] = *ptr; buf[len++] = *ptr;