diff --git a/nonblock_bsd.go b/nonblock_bsd.go index ffe5caf..28fd464 100644 --- a/nonblock_bsd.go +++ b/nonblock_bsd.go @@ -26,6 +26,7 @@ import ( // tcSetBufParams is used by the tty driver on UNIX systems to configure the // buffering parameters (minimum character count and minimum wait time in msec.) +// This also waits for output to drain first. func tcSetBufParams(fd int, vMin uint8, vTime uint8) error { _ = syscall.SetNonblock(fd, true) tio, err := unix.IoctlGetTermios(fd, unix.TIOCGETA) @@ -34,7 +35,7 @@ func tcSetBufParams(fd int, vMin uint8, vTime uint8) error { } tio.Cc[unix.VMIN] = vMin tio.Cc[unix.VTIME] = vTime - if err = unix.IoctlSetTermios(fd, unix.TIOCSETA, tio); err != nil { + if err = unix.IoctlSetTermios(fd, unix.TIOCSETAW, tio); err != nil { return err } return nil diff --git a/nonblock_unix.go b/nonblock_unix.go index 768128d..fe31844 100644 --- a/nonblock_unix.go +++ b/nonblock_unix.go @@ -24,6 +24,7 @@ import ( // tcSetBufParams is used by the tty driver on UNIX systems to configure the // buffering parameters (minimum character count and minimum wait time in msec.) +// This also waits for output to drain first. func tcSetBufParams(fd int, vMin uint8, vTime uint8) error { _ = syscall.SetNonblock(fd, true) tio, err := unix.IoctlGetTermios(fd, unix.TCGETS) @@ -32,7 +33,7 @@ func tcSetBufParams(fd int, vMin uint8, vTime uint8) error { } tio.Cc[unix.VMIN] = vMin tio.Cc[unix.VTIME] = vTime - if err = unix.IoctlSetTermios(fd, unix.TCSETS, tio); err != nil { + if err = unix.IoctlSetTermios(fd, unix.TCSETSW, tio); err != nil { return err } return nil