diff options
Diffstat (limited to 'server-client.c')
-rw-r--r-- | server-client.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/server-client.c b/server-client.c index 4da9f08a..73be7a1f 100644 --- a/server-client.c +++ b/server-client.c @@ -23,8 +23,6 @@ #include <errno.h> #include <event.h> #include <fcntl.h> -#include <imsg.h> -#include <paths.h> #include <stdlib.h> #include <string.h> #include <time.h> @@ -1071,6 +1069,9 @@ server_client_resize_force(struct window_pane *wp) ws.ws_col = wp->sx; ws.ws_row = wp->sy - 1; if (wp->fd != -1 && ioctl(wp->fd, TIOCSWINSZ, &ws) == -1) +#ifdef __sun + if (errno != EINVAL && errno != ENXIO) +#endif fatal("ioctl failed"); log_debug("%s: %%%u forcing resize", __func__, wp->id); @@ -1097,6 +1098,15 @@ server_client_resize_event(__unused int fd, __unused short events, void *data) ws.ws_col = wp->sx; ws.ws_row = wp->sy; if (wp->fd != -1 && ioctl(wp->fd, TIOCSWINSZ, &ws) == -1) +#ifdef __sun + /* + * Some versions of Solaris apparently can return an error when + * resizing; don't know why this happens, can't reproduce on + * other platforms and ignoring it doesn't seem to cause any + * issues. + */ + if (errno != EINVAL && errno != ENXIO) +#endif fatal("ioctl failed"); log_debug("%s: %%%u resize to %u,%u", __func__, wp->id, wp->sx, wp->sy); @@ -1677,6 +1687,10 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg) c->name = name; log_debug("client %p name is %s", c, c->name); +#ifdef __CYGWIN__ + c->fd = open(c->ttyname, O_RDWR|O_NOCTTY); +#endif + if (c->flags & CLIENT_CONTROL) { c->stdin_callback = control_callback; |