From 02066481751b7f87c7164cfe34e157c41aa039c9 Mon Sep 17 00:00:00 2001 From: Faithfulness Alamu Date: Fri, 25 Sep 2020 11:31:22 +0100 Subject: [PATCH] Avoid interface for collecting file descriptors Avoid using interface{} as a catch-all in IsTerminal and IsCygwinTerminal functions. The use of *os.File allows for static type error checks. --- utils/terminal.go | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/utils/terminal.go b/utils/terminal.go index f79848e8e..eea5c3f61 100644 --- a/utils/terminal.go +++ b/utils/terminal.go @@ -8,23 +8,12 @@ import ( "golang.org/x/crypto/ssh/terminal" ) -// TODO I don't like this use of interface{} but we need to accept both io.Writer and io.Reader -// interfaces. - -var IsTerminal = func(w interface{}) bool { - if f, isFile := w.(*os.File); isFile { - return isatty.IsTerminal(f.Fd()) || IsCygwinTerminal(f) - } - - return false +var IsTerminal = func(f *os.File) bool { + return isatty.IsTerminal(f.Fd()) || IsCygwinTerminal(f) } -func IsCygwinTerminal(w interface{}) bool { - if f, isFile := w.(*os.File); isFile { - return isatty.IsCygwinTerminal(f.Fd()) - } - - return false +func IsCygwinTerminal(f *os.File) bool { + return isatty.IsCygwinTerminal(f.Fd()) } var TerminalSize = func(w interface{}) (int, int, error) {