Browse code

[pkg/term] temporarily use STD_*_HANDLE from syscall again

Due to the CL https://go-review.googlesource.com/c/39608/ in
x/sys/windows which changed the definitions of STD_INPUT_HANDLE,
STD_OUTPUT_HANDLE and STD_ERROR_HANDLE, we get the following failure
after re-vendoring x/sys/windows:

07:47:01 # github.com/docker/docker/pkg/term
07:47:01 pkg/term/term_windows.go:82: constant 4294967286 overflows int
07:47:01 pkg/term/term_windows.go:88: constant 4294967285 overflows int
07:47:01 pkg/term/term_windows.go:94: constant 4294967284 overflows int
07:47:12 Build step 'Execute shell' marked build as failure

Temporarily switch back pkg/term to use these constants from the syscall
package and add a comment about it.

To really fix this, go-ansiterm should probably be switched to use
x/sys/windows.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>

Tobias Klauser authored on 2017/06/08 15:52:21
Showing 1 changed files
... ...
@@ -6,10 +6,10 @@ import (
6 6
 	"io"
7 7
 	"os"
8 8
 	"os/signal"
9
+	"syscall" // used for STD_INPUT_HANDLE, STD_OUTPUT_HANDLE and STD_ERROR_HANDLE
9 10
 
10 11
 	"github.com/Azure/go-ansiterm/winterm"
11 12
 	"github.com/docker/docker/pkg/term/windows"
12
-	"golang.org/x/sys/windows"
13 13
 )
14 14
 
15 15
 // State holds the console mode for the terminal.
... ...
@@ -78,20 +78,24 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) {
78 78
 		emulateStderr = false
79 79
 	}
80 80
 
81
+	// Temporarily use STD_INPUT_HANDLE, STD_OUTPUT_HANDLE and
82
+	// STD_ERROR_HANDLE from syscall rather than x/sys/windows as long as
83
+	// go-ansiterm hasn't switch to x/sys/windows.
84
+	// TODO: switch back to x/sys/windows once go-ansiterm has switched
81 85
 	if emulateStdin {
82
-		stdIn = windowsconsole.NewAnsiReader(windows.STD_INPUT_HANDLE)
86
+		stdIn = windowsconsole.NewAnsiReader(syscall.STD_INPUT_HANDLE)
83 87
 	} else {
84 88
 		stdIn = os.Stdin
85 89
 	}
86 90
 
87 91
 	if emulateStdout {
88
-		stdOut = windowsconsole.NewAnsiWriter(windows.STD_OUTPUT_HANDLE)
92
+		stdOut = windowsconsole.NewAnsiWriter(syscall.STD_OUTPUT_HANDLE)
89 93
 	} else {
90 94
 		stdOut = os.Stdout
91 95
 	}
92 96
 
93 97
 	if emulateStderr {
94
-		stdErr = windowsconsole.NewAnsiWriter(windows.STD_ERROR_HANDLE)
98
+		stdErr = windowsconsole.NewAnsiWriter(syscall.STD_ERROR_HANDLE)
95 99
 	} else {
96 100
 		stdErr = os.Stderr
97 101
 	}