mirror of
https://github.com/tmux/tmux.git
synced 2025-09-07 03:48:20 +00:00
Merge branch 'obsd-master'
This commit is contained in:
@@ -294,7 +294,7 @@ server_client_lost(struct client *c)
|
||||
if (c->flags & CLIENT_TERMINAL)
|
||||
tty_free(&c->tty);
|
||||
free(c->ttyname);
|
||||
free(c->term);
|
||||
free(c->term_name);
|
||||
|
||||
status_free(c);
|
||||
|
||||
@@ -1843,6 +1843,7 @@ server_client_dispatch(struct imsg *imsg, void *arg)
|
||||
datalen = imsg->hdr.len - IMSG_HEADER_SIZE;
|
||||
|
||||
switch (imsg->hdr.type) {
|
||||
case MSG_IDENTIFY_FEATURES:
|
||||
case MSG_IDENTIFY_FLAGS:
|
||||
case MSG_IDENTIFY_TERM:
|
||||
case MSG_IDENTIFY_TTYNAME:
|
||||
@@ -2001,7 +2002,7 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg)
|
||||
{
|
||||
const char *data, *home;
|
||||
size_t datalen;
|
||||
int flags;
|
||||
int flags, feat;
|
||||
char *name;
|
||||
|
||||
if (c->flags & CLIENT_IDENTIFIED)
|
||||
@@ -2011,6 +2012,14 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg)
|
||||
datalen = imsg->hdr.len - IMSG_HEADER_SIZE;
|
||||
|
||||
switch (imsg->hdr.type) {
|
||||
case MSG_IDENTIFY_FEATURES:
|
||||
if (datalen != sizeof feat)
|
||||
fatalx("bad MSG_IDENTIFY_FEATURES size");
|
||||
memcpy(&feat, data, sizeof feat);
|
||||
c->term_features |= feat;
|
||||
log_debug("client %p IDENTIFY_FEATURES %s", c,
|
||||
tty_get_features(feat));
|
||||
break;
|
||||
case MSG_IDENTIFY_FLAGS:
|
||||
if (datalen != sizeof flags)
|
||||
fatalx("bad MSG_IDENTIFY_FLAGS size");
|
||||
@@ -2021,7 +2030,10 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg)
|
||||
case MSG_IDENTIFY_TERM:
|
||||
if (datalen == 0 || data[datalen - 1] != '\0')
|
||||
fatalx("bad MSG_IDENTIFY_TERM string");
|
||||
c->term = xstrdup(data);
|
||||
if (*data == '\0')
|
||||
c->term_name = xstrdup("unknown");
|
||||
else
|
||||
c->term_name = xstrdup(data);
|
||||
log_debug("client %p IDENTIFY_TERM %s", c, data);
|
||||
break;
|
||||
case MSG_IDENTIFY_TTYNAME:
|
||||
@@ -2086,14 +2098,10 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg)
|
||||
control_start(c);
|
||||
c->tty.fd = -1;
|
||||
} else if (c->fd != -1) {
|
||||
if (tty_init(&c->tty, c, c->fd, c->term) != 0) {
|
||||
if (tty_init(&c->tty, c, c->fd) != 0) {
|
||||
close(c->fd);
|
||||
c->fd = -1;
|
||||
} else {
|
||||
if (c->flags & CLIENT_UTF8)
|
||||
c->tty.term_flags |= TERM_UTF8;
|
||||
if (c->flags & CLIENT_256COLOURS)
|
||||
c->tty.term_flags |= TERM_256COLOURS;
|
||||
tty_resize(&c->tty);
|
||||
c->flags |= CLIENT_TERMINAL;
|
||||
}
|
||||
|
Reference in New Issue
Block a user