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...
This commit is contained in:
Nicholas Marriott
2009-08-19 15:57:54 +00:00
parent 2a300c6661
commit 7c9f827bfe
2 changed files with 28 additions and 3 deletions

View File

@ -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;