terminal_check_windows.go raw

   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  }
  28