commit 99c75f3c503b7b3d667c251e90170bf7e10037ce
parent 0e25d6094f3afc39eea454adcbcb01827906ba3e
Author: rsc <devnull@localhost>
Date: Tue, 20 Apr 2004 15:16:18 +0000
fix a deadlock.
Diffstat:
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/cmd/9term/bsdpty.c b/src/cmd/9term/bsdpty.c
@@ -106,7 +106,13 @@ setecho(int fd, int newe)
if(old != newe){
ttmode.c_lflag &= ~ECHO;
ttmode.c_lflag |= newe;
- if(tcsetattr(fd, TCSADRAIN, &ttmode) < 0)
+ /*
+ * I tried using TCSADRAIN here, but that causes
+ * hangs if there is any output waiting for us.
+ * I guess TCSADRAIN is intended for use by our
+ * clients, not by us.
+ */
+ if(tcsetattr(fd, 0, &ttmode) < 0)
fprint(2, "tcsetattr: %r\n");
}
return old;