aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client.c5
-rw-r--r--compat.h5
-rw-r--r--server-client.c5
-rw-r--r--tmux.h4
4 files changed, 18 insertions, 1 deletions
diff --git a/client.c b/client.c
index 691ace31..b9e3b30a 100644
--- a/client.c
+++ b/client.c
@@ -328,8 +328,13 @@ client_send_identify(int flags)
strlcpy(data.term, term, sizeof data.term) >= sizeof data.term)
*data.term = '\0';
+#ifdef __CYGWIN__
+ snprintf(&data.ttyname, sizeof data.ttyname, "%s",
+ ttyname(STDIN_FILENO));
+#else
if ((fd = dup(STDIN_FILENO)) == -1)
fatal("dup failed");
+#endif
imsg_compose(&client_ibuf,
MSG_IDENTIFY, PROTOCOL_VERSION, -1, fd, &data, sizeof data);
client_update_event();
diff --git a/compat.h b/compat.h
index d3973797..b84ff400 100644
--- a/compat.h
+++ b/compat.h
@@ -30,6 +30,10 @@
#define __packed __attribute__ ((__packed__))
#endif
+#ifndef ECHOPRT
+#define ECHOPRT 0
+#endif
+
#ifndef HAVE_BSD_TYPES
typedef uint8_t u_int8_t;
typedef uint16_t u_int16_t;
@@ -210,6 +214,7 @@ int daemon(int, int);
#ifndef HAVE_B64_NTOP
/* b64_ntop.c */
+#undef b64_ntop /* for Cygwin */
int b64_ntop(const char *, size_t, char *, size_t);
#endif
diff --git a/server-client.c b/server-client.c
index 01616cbf..5923eb0e 100644
--- a/server-client.c
+++ b/server-client.c
@@ -825,9 +825,12 @@ server_client_msg_dispatch(struct client *c)
case MSG_IDENTIFY:
if (datalen != sizeof identifydata)
fatalx("bad MSG_IDENTIFY size");
+ memcpy(&identifydata, imsg.data, sizeof identifydata);
+#ifdef __CYGWIN__
+ imsg.fd = open(identifydata.ttyname, O_RDWR|O_NOCTTY);
+#endif
if (imsg.fd == -1)
fatalx("MSG_IDENTIFY missing fd");
- memcpy(&identifydata, imsg.data, sizeof identifydata);
server_client_msg_identify(c, &identifydata, imsg.fd);
break;
diff --git a/tmux.h b/tmux.h
index eb53d3b4..cc1c79e8 100644
--- a/tmux.h
+++ b/tmux.h
@@ -471,6 +471,10 @@ struct msg_identify_data {
char term[TERMINAL_LENGTH];
+#ifdef __CYGWIN__
+ char ttyname[TTY_NAME_MAX];
+#endif
+
#define IDENTIFY_UTF8 0x1
#define IDENTIFY_256COLOURS 0x2
/* 0x4 unused */