mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
28 lines
518 B
Go
28 lines
518 B
Go
// +build windows
|
|
|
|
package main
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
func stdin() io.Reader {
|
|
var stdin io.Reader = os.Stdin
|
|
if isTerminal(int(os.Stdin.Fd())) {
|
|
stdin = strings.NewReader("")
|
|
}
|
|
return stdin
|
|
}
|
|
|
|
func isTerminal(fd int) bool {
|
|
kernel32 := syscall.NewLazyDLL("kernel32.dll")
|
|
procGetConsoleMode := kernel32.NewProc("GetConsoleMode")
|
|
var st uint32
|
|
r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0)
|
|
return r != 0 && e == 0
|
|
}
|