From c4cc7891b48067d69510e3356c71cecbe6cd4c5b Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Wed, 15 May 2024 00:15:29 +0900 Subject: [PATCH] Revert "Close handles to /dev/tty", instead reuse handles --- src/tui/light_unix.go | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/tui/light_unix.go b/src/tui/light_unix.go index f153978..e59c72e 100644 --- a/src/tui/light_unix.go +++ b/src/tui/light_unix.go @@ -14,7 +14,11 @@ import ( "golang.org/x/term" ) -var tty string +var ( + tty string + ttyin *os.File + ttyout *os.File +) func IsLightRendererSupported() bool { return true @@ -47,8 +51,7 @@ func (r *LightRenderer) initPlatform() error { } func (r *LightRenderer) closePlatform() { - r.ttyin.Close() - r.ttyout.Close() + // NOOP } func openTty(mode int) (*os.File, error) { @@ -68,11 +71,25 @@ func openTty(mode int) (*os.File, error) { } func openTtyIn() (*os.File, error) { - return openTty(syscall.O_RDONLY) + if ttyin != nil { + return ttyin, nil + } + in, err := openTty(syscall.O_RDONLY) + if err == nil { + ttyin = in + } + return in, err } func openTtyOut() (*os.File, error) { - return openTty(syscall.O_WRONLY) + if ttyout != nil { + return ttyout, nil + } + out, err := openTty(syscall.O_WRONLY) + if err == nil { + ttyout = out + } + return out, err } func (r *LightRenderer) setupTerminal() {