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