From 7c9f827bfe01f440e09597319fcf280685500b7f Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 19 Aug 2009 15:57:54 +0000 Subject: [PATCH] In yet another triumph of stupidity over common sense, the glibc sys/ttydefaults.h is just a copy of the file from *BSD, taking no account of the fact that their OWN termios.h uses entirely different indexes into the array. I know ttydefaults.h is not meant to be portable, but you'd think it would be obvious to anyone that no file is better than a broken one... --- cmd-new-session.c | 24 ++++++++++++++++++++++-- configure | 7 ++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/cmd-new-session.c b/cmd-new-session.c index 857163cb..3f46d0af 100644 --- a/cmd-new-session.c +++ b/cmd-new-session.c @@ -1,4 +1,4 @@ -/* $Id: cmd-new-session.c,v 1.56 2009-08-19 14:32:49 nicm Exp $ */ +/* $Id: cmd-new-session.c,v 1.57 2009-08-19 15:57:54 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -207,8 +207,28 @@ cmd_new_session_exec(struct cmd *self, struct cmd_ctx *ctx) if (ctx->cmdclient != NULL && ctx->cmdclient->tty.fd != -1) { if (tcgetattr(ctx->cmdclient->tty.fd, &tio) != 0) fatal("tcgetattr failed"); - } else + } else { +#ifdef HAVE_TTYDEFCHARS memcpy(tio.c_cc, ttydefchars, sizeof tio.c_cc); +#else + memset(tio.c_cc, _POSIX_VDISABLE, sizeof tio.c_cc); + tio.c_cc[VINTR] = CINTR; + tio.c_cc[VQUIT] = CQUIT; + tio.c_cc[VERASE] = CERASE; + tio.c_cc[VKILL] = CKILL; + tio.c_cc[VEOF] = CEOF; + tio.c_cc[VTIME] = CTIME; + tio.c_cc[VMIN] = CMIN; + tio.c_cc[VSTART] = CSTART; + tio.c_cc[VSTOP] = CSTOP; + tio.c_cc[VSUSP] = CSUSP; + tio.c_cc[VEOL] = CEOL; + tio.c_cc[VREPRINT] = CREPRINT; + tio.c_cc[VDISCARD] = CDISCARD; + tio.c_cc[VWERASE] = CWERASE; + tio.c_cc[VLNEXT] = CLNEXT; +#endif + } tio.c_iflag = TTYDEF_IFLAG; tio.c_oflag = TTYDEF_OFLAG; tio.c_lflag = TTYDEF_LFLAG; diff --git a/configure b/configure index ff1efe7c..b5ddd276 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #!/bin/sh -# $Id: configure,v 1.25 2009-08-16 19:48:17 tcunha Exp $ +# $Id: configure,v 1.26 2009-08-19 15:57:54 nicm Exp $ TMUX_PLATFORM=${TMUX_PLATFORM:-`uname -s`} @@ -32,6 +32,7 @@ cat <>$CONFIG_H #undef HAVE_STRSEP #undef HAVE_STRTONUM #undef HAVE_TREE_H +#undef HAVE_TTYDEFCHARS #undef HAVE_UTIL_H #undef HAVE_VIS EOF @@ -57,6 +58,7 @@ case $TMUX_PLATFORM in #define HAVE_STRSEP #define HAVE_STRTONUM #define HAVE_TREE_H +#define HAVE_TTYDEFCHARS #define HAVE_UTIL_H #define HAVE_VIS EOF @@ -165,6 +167,7 @@ EOF #define HAVE_STRLCAT #define HAVE_STRLCPY #define HAVE_STRSEP +#define HAVE_TTYDEFCHARS #define HAVE_UTIL_H EOF cat <>$CONFIG_MK @@ -196,6 +199,7 @@ EOF #define HAVE_STRLCPY #define HAVE_STRTONUM #define HAVE_STRSEP +#define HAVE_TTYDEFCHARS EOF cat <>$CONFIG_MK LIBS+= -lcurses -lcrypt -lutil @@ -222,6 +226,7 @@ EOF #define HAVE_STRLCAT #define HAVE_STRLCPY #define HAVE_STRSEP +#define HAVE_TTYDEFCHARS #define HAVE_UTIL_H EOF cat <>$CONFIG_MK