Are you sure ECHOPRT 0x20 is right on Cygwin? Maybe it should be 0 to
leave it out if it isn't supported?
Also some other minor tweaks.
diff --git a/client.c b/client.c
index 691ace3..b9e3b30 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 d397379..b84ff40 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 01616cb..5923eb0 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 5dd86d3..03245b5 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 */
On Sun, Jun 02, 2013 at 04:21:02PM -0500, J Raynor wrote:
> I've attached a new patch that puts the msg_identify_data change in an
> ifdef. Also, in compat.h, I moved the "undef b64_ntop" for cygwin
> into the "ifndef HAVE_B64_NTOP" check so that if cygwin ever gets a
> working b64_ntop tmux will continue to compile.
>
> If I do "tmux new </dev/null" then tmux doesn't start and doesn't
> print out an error. Using -v flags, I see that the server gets a -1
> when trying to open the terminal. This is because
> ttyname(STDIN_FILENO) in client.c doesn't get something valid, so it
> passes something worthless to the server. Should the "ifdef
> __CYGWIN__" check in client.c do isatty before passing the ttyname?
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
tmux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users