summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/server-msg.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/tmux/server-msg.c')
-rw-r--r--usr.bin/tmux/server-msg.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/usr.bin/tmux/server-msg.c b/usr.bin/tmux/server-msg.c
index 6901c93d3bc..922b733a158 100644
--- a/usr.bin/tmux/server-msg.c
+++ b/usr.bin/tmux/server-msg.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server-msg.c,v 1.17 2009/09/15 07:45:16 nicm Exp $ */
+/* $OpenBSD: server-msg.c,v 1.18 2009/09/23 06:05:02 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -74,6 +74,8 @@ server_msg_dispatch(struct client *c)
case MSG_IDENTIFY:
if (datalen != sizeof identifydata)
fatalx("bad MSG_IDENTIFY size");
+ if (imsg.fd == -1)
+ fatalx("MSG_IDENTIFY missing fd");
memcpy(&identifydata, imsg.data, sizeof identifydata);
server_msg_identify(c, &identifydata, imsg.fd);
@@ -243,21 +245,13 @@ error:
void
server_msg_identify(struct client *c, struct msg_identify_data *data, int fd)
{
- c->tty.sx = data->sx;
- if (c->tty.sx == 0)
- c->tty.sx = 80;
- c->tty.sy = data->sy;
- if (c->tty.sy == 0)
- c->tty.sy = 24;
-
c->cwd = NULL;
data->cwd[(sizeof data->cwd) - 1] = '\0';
if (*data->cwd != '\0')
c->cwd = xstrdup(data->cwd);
- data->tty[(sizeof data->tty) - 1] = '\0';
data->term[(sizeof data->term) - 1] = '\0';
- tty_init(&c->tty, fd, data->tty, data->term);
+ tty_init(&c->tty, fd, data->term);
if (data->flags & IDENTIFY_UTF8)
c->tty.flags |= TTY_UTF8;
if (data->flags & IDENTIFY_256COLOURS)
@@ -267,6 +261,13 @@ server_msg_identify(struct client *c, struct msg_identify_data *data, int fd)
if (data->flags & IDENTIFY_HASDEFAULTS)
c->tty.term_flags |= TERM_HASDEFAULTS;
+ c->tty.sx = data->sx;
+ if (c->tty.sx == 0)
+ c->tty.sx = 80;
+ c->tty.sy = data->sy;
+ if (c->tty.sy == 0)
+ c->tty.sy = 24;
+
c->flags |= CLIENT_TERMINAL;
}