Revert "Close handles to /dev/tty", instead reuse handles

This commit is contained in:
Junegunn Choi 2024-05-15 00:15:29 +09:00
parent 218843b9f1
commit c4cc7891b4
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

View File

@ -14,7 +14,11 @@ import (
"golang.org/x/term" "golang.org/x/term"
) )
var tty string var (
tty string
ttyin *os.File
ttyout *os.File
)
func IsLightRendererSupported() bool { func IsLightRendererSupported() bool {
return true return true
@ -47,8 +51,7 @@ func (r *LightRenderer) initPlatform() error {
} }
func (r *LightRenderer) closePlatform() { func (r *LightRenderer) closePlatform() {
r.ttyin.Close() // NOOP
r.ttyout.Close()
} }
func openTty(mode int) (*os.File, error) { func openTty(mode int) (*os.File, error) {
@ -68,11 +71,25 @@ func openTty(mode int) (*os.File, error) {
} }
func openTtyIn() (*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) { 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() { func (r *LightRenderer) setupTerminal() {