summaryrefslogtreecommitdiffstats
path: root/cmd-new-session.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2009-08-19 15:57:54 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2009-08-19 15:57:54 +0000
commit7c9f827bfe01f440e09597319fcf280685500b7f (patch)
treebadb9e506cd75e48e2ecc5470fc52e2d8221301d /cmd-new-session.c
parent2a300c66611259e9bae9ebf75a88de05256f64df (diff)
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...
Diffstat (limited to 'cmd-new-session.c')
-rw-r--r--cmd-new-session.c24
1 files changed, 22 insertions, 2 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 <nicm@users.sourceforge.net>
@@ -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;