diff options
author | 2017-06-18 17:49:44 +0000 | |
---|---|---|
committer | 2017-06-18 17:49:44 +0000 | |
commit | d63293c4717d287cde8ccdd51ad5353d83ca5986 (patch) | |
tree | a67f9e8cdc4abe0cd3dcf8b3584bd80091391064 | |
parent | Implement appending to standard man(7) and mdoc(7) macros with .am. (diff) | |
download | wireguard-openbsd-d63293c4717d287cde8ccdd51ad5353d83ca5986.tar.xz wireguard-openbsd-d63293c4717d287cde8ccdd51ad5353d83ca5986.zip |
Don't write input if ICANON is enabled. Also, write one byte at a time.
-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; |