From 8a90bf3fffd416752e41f02f87759339e15cc504 Mon Sep 17 00:00:00 2001 From: dmathieu <42@dmathieu.com> Date: Wed, 26 Jul 2017 10:15:24 +0200 Subject: [PATCH] use x/sys for non-unix files --- .travis.yml | 1 + terminal_bsd.go | 6 +++--- terminal_notwindows.go | 5 +++-- terminal_windows.go | 11 ++++++----- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 28a702a..a23296a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,5 +10,6 @@ install: - go get github.com/stretchr/testify/assert - go get gopkg.in/gemnasium/logrus-airbrake-hook.v2 - go get golang.org/x/sys/unix + - go get golang.org/x/sys/windows script: - go test -race -v ./... diff --git a/terminal_bsd.go b/terminal_bsd.go index 5f6be4d..d7b3893 100644 --- a/terminal_bsd.go +++ b/terminal_bsd.go @@ -3,8 +3,8 @@ package logrus -import "syscall" +import "golang.org/x/sys/unix" -const ioctlReadTermios = syscall.TIOCGETA +const ioctlReadTermios = unix.TIOCGETA -type Termios syscall.Termios +type Termios unix.Termios diff --git a/terminal_notwindows.go b/terminal_notwindows.go index 190297a..198175b 100644 --- a/terminal_notwindows.go +++ b/terminal_notwindows.go @@ -11,8 +11,9 @@ package logrus import ( "io" "os" - "syscall" "unsafe" + + "golang.org/x/sys/unix" ) // IsTerminal returns true if stderr's file descriptor is a terminal. @@ -20,7 +21,7 @@ func IsTerminal(f io.Writer) bool { var termios Termios switch v := f.(type) { case *os.File: - _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(v.Fd()), ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) + _, _, err := unix.Syscall6(unix.SYS_IOCTL, uintptr(v.Fd()), ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) return err == 0 default: return false diff --git a/terminal_windows.go b/terminal_windows.go index 7a33630..db9a8fb 100644 --- a/terminal_windows.go +++ b/terminal_windows.go @@ -15,11 +15,12 @@ import ( "os/exec" "strconv" "strings" - "syscall" "unsafe" + + "golang.org/x/sys/windows" ) -var kernel32 = syscall.NewLazyDLL("kernel32.dll") +var kernel32 = windows.NewLazyDLL("kernel32.dll") var ( procGetConsoleMode = kernel32.NewProc("GetConsoleMode") @@ -41,7 +42,7 @@ func getVersion() (float64, error) { if err != nil { return -1, err } - + // The output should be like "Microsoft Windows [Version XX.X.XXXXXX]" version := strings.Replace(stdout.String(), "\n", "", -1) version = strings.Replace(version, "\r\n", "", -1) @@ -64,7 +65,7 @@ func init() { // Activate Virtual Processing for Windows CMD // Info: https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx if ver >= 10 { - handle := syscall.Handle(os.Stderr.Fd()) + handle := windows.Handle(os.Stderr.Fd()) procSetConsoleMode.Call(uintptr(handle), enableProcessedOutput|enableWrapAtEolOutput|enableVirtualTerminalProcessing) } } @@ -74,7 +75,7 @@ func IsTerminal(f io.Writer) bool { switch v := f.(type) { case *os.File: var st uint32 - r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(v.Fd()), uintptr(unsafe.Pointer(&st)), 0) + r, _, e := windows.Syscall(procGetConsoleMode.Addr(), 2, uintptr(v.Fd()), uintptr(unsafe.Pointer(&st)), 0) return r != 0 && e == 0 default: return false