From d63293c4717d287cde8ccdd51ad5353d83ca5986 Mon Sep 17 00:00:00 2001 From: anton Date: Sun, 18 Jun 2017 17:49:44 +0000 Subject: [PATCH] Don't write input if ICANON is enabled. Also, write one byte at a time. --- regress/bin/ksh/edit/edit.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/regress/bin/ksh/edit/edit.c b/regress/bin/ksh/edit/edit.c index 0e707af294c..247e0b0ab2e 100644 --- a/regress/bin/ksh/edit/edit.c +++ b/regress/bin/ksh/edit/edit.c @@ -34,6 +34,7 @@ int main(int argc, char *argv[]) { char in[BUFSIZ], out[BUFSIZ]; + struct termios tio; struct pollfd pfd; struct winsize ws; pid_t pid; @@ -100,7 +101,12 @@ main(int argc, char *argv[]) if (nread == 0) continue; - n = write(ptyfd, &in[nwrite], nin - nwrite); + if (tcgetattr(ptyfd, &tio) == -1) + err(1, "tcgetattr"); + if ((tio.c_lflag & ICANON) == ICANON) + continue; + + n = write(ptyfd, &in[nwrite], 1); if (n == -1) err(1, "write"); nwrite += n; -- 2.20.1