From a501edd6dd5173cca449b16047be3400af4b5626 Mon Sep 17 00:00:00 2001 From: Jordan Orelli Date: Wed, 7 Dec 2016 15:25:45 -0800 Subject: [PATCH] support windows --- term.go => term_darwin.go | 0 term_windows.go | 16 ++++++++++++++++ 2 files changed, 16 insertions(+) rename term.go => term_darwin.go (100%) create mode 100644 term_windows.go diff --git a/term.go b/term_darwin.go similarity index 100% rename from term.go rename to term_darwin.go diff --git a/term_windows.go b/term_windows.go new file mode 100644 index 0000000..e5e2767 --- /dev/null +++ b/term_windows.go @@ -0,0 +1,16 @@ +package main + +import ( + "syscall" + "unsafe" +) + +var kernel32 = syscall.NewLazyDLL("kernel32.dll") +var procGetConsoleMode = kernel32.NewProc("GetConsoleMode") + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(fd uintptr) bool { + var st uint32 + r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0) + return r != 0 && e == 0 +}