diff options
-rw-r--r-- | regress/bin/ksh/edit/edit.c | 8 |
1 files changed, 7 insertions, 1 deletions
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; |