kesavand | 2cde658 | 2020-06-22 04:56:23 -0400 | [diff] [blame] | 1 | // +build !appengine,!js,windows |
2 | |||||
3 | package logrus | ||||
4 | |||||
5 | import ( | ||||
6 | "io" | ||||
7 | "os" | ||||
kesavand | 2cde658 | 2020-06-22 04:56:23 -0400 | [diff] [blame] | 8 | |
kesavand | c71914f | 2022-03-25 11:19:03 +0530 | [diff] [blame^] | 9 | "golang.org/x/sys/windows" |
kesavand | 2cde658 | 2020-06-22 04:56:23 -0400 | [diff] [blame] | 10 | ) |
11 | |||||
kesavand | 2cde658 | 2020-06-22 04:56:23 -0400 | [diff] [blame] | 12 | func checkIfTerminal(w io.Writer) bool { |
kesavand | 2cde658 | 2020-06-22 04:56:23 -0400 | [diff] [blame] | 13 | switch v := w.(type) { |
14 | case *os.File: | ||||
kesavand | c71914f | 2022-03-25 11:19:03 +0530 | [diff] [blame^] | 15 | handle := windows.Handle(v.Fd()) |
kesavand | 2cde658 | 2020-06-22 04:56:23 -0400 | [diff] [blame] | 16 | var mode uint32 |
kesavand | c71914f | 2022-03-25 11:19:03 +0530 | [diff] [blame^] | 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 | ||||
kesavand | 2cde658 | 2020-06-22 04:56:23 -0400 | [diff] [blame] | 25 | } |
kesavand | c71914f | 2022-03-25 11:19:03 +0530 | [diff] [blame^] | 26 | return false |
kesavand | 2cde658 | 2020-06-22 04:56:23 -0400 | [diff] [blame] | 27 | } |