// Based on ssh/terminal: | |
// Copyright 2011 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
// +build windows,!appengine | |
package logrus | |
import ( | |
"syscall" | |
"unsafe" | |
) | |
var kernel32 = syscall.NewLazyDLL("kernel32.dll") | |
var ( | |
procGetConsoleMode = kernel32.NewProc("GetConsoleMode") | |
) | |
// IsTerminal returns true if stderr's file descriptor is a terminal. | |
func IsTerminal() bool { | |
fd := syscall.Stderr | |
var st uint32 | |
r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0) | |
return r != 0 && e == 0 | |
} |