terminal_check_windows.go (490B)
1 // +build !appengine,!js,windows 2 3 package logrus 4 5 import ( 6 "io" 7 "os" 8 9 "golang.org/x/sys/windows" 10 ) 11 12 func checkIfTerminal(w io.Writer) bool { 13 switch v := w.(type) { 14 case *os.File: 15 handle := windows.Handle(v.Fd()) 16 var mode uint32 17 if err := windows.GetConsoleMode(handle, &mode); err != nil { 18 return false 19 } 20 mode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING 21 if err := windows.SetConsoleMode(handle, mode); err != nil { 22 return false 23 } 24 return true 25 } 26 return false 27 }