diff --git a/reader_posix.go b/reader_posix.go index 85a62a63..f026cdb4 100644 --- a/reader_posix.go +++ b/reader_posix.go @@ -37,7 +37,7 @@ func (t *PosixReader) Open() error { // Close should be called after stopping input func (t *PosixReader) Close() error { - if err := term.Restore(); err != nil { + if err := term.RestoreFD(t.fd); err != nil { _ = syscall.Close(t.fd) return err } diff --git a/term/term.go b/term/term.go index 9d3f41ab..2eb9db94 100644 --- a/term/term.go +++ b/term/term.go @@ -37,9 +37,14 @@ func getOriginalTermios(fd int) (*unix.Termios, error) { // Restore terminal's mode. func Restore() error { - o, err := getOriginalTermios(saveTermiosFD) + return RestoreFD(saveTermiosFD) +} + +// RestoreFD restores terminal's mode for the given file descriptor. +func RestoreFD(fd int) error { + o, err := getOriginalTermios(fd) if err != nil { return err } - return termios.Tcsetattr(uintptr(saveTermiosFD), termios.TCSANOW, o) + return termios.Tcsetattr(uintptr(fd), termios.TCSANOW, o) }