aboutsummaryrefslogtreecommitdiff
path: root/local.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-09-20 09:43:33 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-09-20 09:43:33 +0000
commit2cd99f0ebbd234c76754bbeee554834cb8cb62ba (patch)
tree1602b8f87c290276216da6bcef6e3d354f30c2d7 /local.c
parent9c0b51cd5df342aa96048948d42323df6e6d3dc0 (diff)
downloadrtmux-2cd99f0ebbd234c76754bbeee554834cb8cb62ba.tar.gz
rtmux-2cd99f0ebbd234c76754bbeee554834cb8cb62ba.tar.bz2
rtmux-2cd99f0ebbd234c76754bbeee554834cb8cb62ba.zip
Reset ignored signals after forkpty.
Diffstat (limited to 'local.c')
-rw-r--r--local.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/local.c b/local.c
index 3ec2ee51..8ba0c340 100644
--- a/local.c
+++ b/local.c
@@ -1,4 +1,4 @@
-/* $Id: local.c,v 1.5 2007-08-28 09:19:50 nicm Exp $ */
+/* $Id: local.c,v 1.6 2007-09-20 09:43:33 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -22,6 +22,7 @@
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
+#define TTYDEFCHARS
#include <termios.h>
#include <term.h>
#include <unistd.h>
@@ -229,10 +230,14 @@ local_init(struct buffer **in, struct buffer **out)
if (tcgetattr(local_fd, &local_tio) != 0)
fatal("tcgetattr failed");
- memcpy(&tio, &local_tio, sizeof tio);
- tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR);
- tio.c_oflag &= ~(OPOST|ONLCR|OCRNL|ONLRET);
- tio.c_lflag &= ~(IEXTEN|ICANON|ECHO|ECHOE|ECHOKE|ECHOCTL|ISIG);
+ memset(&tio, 0, sizeof tio);
+ tio.c_iflag = TTYDEF_IFLAG & ~(IXON|IXOFF|ICRNL|INLCR);
+ tio.c_oflag = TTYDEF_OFLAG & ~(OPOST|ONLCR|OCRNL|ONLRET);
+ tio.c_lflag =
+ TTYDEF_LFLAG & ~(IEXTEN|ICANON|ECHO|ECHOE|ECHOKE|ECHOCTL|ISIG);
+ tio.c_cflag = TTYDEF_CFLAG;
+ memcpy(&tio.c_cc, ttydefchars, sizeof tio.c_cc);
+ cfsetspeed(&tio, TTYDEF_SPEED);
if (tcsetattr(local_fd, TCSANOW, &tio) != 0)
fatal("tcsetattr failed");