github.com/jxskiss/gopkg/v2@v2.14.9-0.20240514120614-899f3e7952b4/zlog/internal/terminal/terminal_check_windows.go (about) 1 //go:build !appengine && !js && windows 2 3 package terminal 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 }