summaryrefslogtreecommitdiff
path: root/pkg/terminal/console_windows.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-07-06 15:55:15 -0400
committerGitHub <noreply@github.com>2020-07-06 15:55:15 -0400
commite3e2b1e65930bfc40c5b60802c4d6ea175169732 (patch)
treede9fbf65281b2d9e69eaa90be2bdee96d3047d5c /pkg/terminal/console_windows.go
parentb8ad7f241aba622b23b2cfab6fb5284cd26125e3 (diff)
parent2fb9bb20df49f665dbc7420a80dc2da57530278f (diff)
downloadpodman-e3e2b1e65930bfc40c5b60802c4d6ea175169732.tar.gz
podman-e3e2b1e65930bfc40c5b60802c4d6ea175169732.tar.bz2
podman-e3e2b1e65930bfc40c5b60802c4d6ea175169732.zip
Merge pull request #6871 from mheon/202_backports
Backports for v2.0.2
Diffstat (limited to 'pkg/terminal/console_windows.go')
-rw-r--r--pkg/terminal/console_windows.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/pkg/terminal/console_windows.go b/pkg/terminal/console_windows.go
new file mode 100644
index 000000000..c7691857c
--- /dev/null
+++ b/pkg/terminal/console_windows.go
@@ -0,0 +1,37 @@
+// +build windows
+
+package terminal
+
+import (
+ "github.com/sirupsen/logrus"
+ "golang.org/x/sys/windows"
+)
+
+// SetConsole switches the windows terminal mode to be able to handle colors, etc
+func SetConsole() error {
+ if err := setConsoleMode(windows.Stdout, windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING); err != nil {
+ return err
+ }
+ if err := setConsoleMode(windows.Stderr, windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING); err != nil {
+ return err
+ }
+ if err := setConsoleMode(windows.Stdin, windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING); err != nil {
+ return err
+ }
+ return nil
+}
+
+func setConsoleMode(handle windows.Handle, flags uint32) error {
+ var mode uint32
+ err := windows.GetConsoleMode(handle, &mode)
+ if err != nil {
+ return err
+ }
+ if err := windows.SetConsoleMode(handle, mode|flags); err != nil {
+ // In similar code, it is not considered an error if we cannot set the
+ // console mode. Following same line of thinking here.
+ logrus.WithError(err).Error("Failed to set console mode for cli")
+ }
+
+ return nil
+}