imsg closes the fd after sending, so dup() STDIN_FILENO before passing it to

the parent, otherwise TIOCGWINSZ will fail when the window is resized (that
could actually be moved into the server but this is more future-proof and
avoids breaking the protocol).
This commit is contained in:
Nicholas Marriott 2009-08-12 06:04:28 +00:00
parent e0a19abb99
commit 85e8b70625

View File

@ -44,7 +44,7 @@ client_init(char *path, struct client_ctx *cctx, int cmdflags, int flags)
struct msg_identify_data data;
struct winsize ws;
size_t size;
int fd, mode;
int fd, fd2, mode;
char *name, *term;
char rpathbuf[MAXPATHLEN];
@ -119,8 +119,9 @@ server_started:
if (strlcpy(data.tty, name, sizeof data.tty) >= sizeof data.tty)
fatalx("ttyname failed");
fd2 = dup(STDIN_FILENO);
imsg_compose(&cctx->ibuf, MSG_IDENTIFY,
PROTOCOL_VERSION, -1, STDIN_FILENO, &data, sizeof data);
PROTOCOL_VERSION, -1, fd2, &data, sizeof data);
}
return (0);