diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-07-06 15:55:15 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-06 15:55:15 -0400 |
commit | e3e2b1e65930bfc40c5b60802c4d6ea175169732 (patch) | |
tree | de9fbf65281b2d9e69eaa90be2bdee96d3047d5c /pkg/terminal/console_windows.go | |
parent | b8ad7f241aba622b23b2cfab6fb5284cd26125e3 (diff) | |
parent | 2fb9bb20df49f665dbc7420a80dc2da57530278f (diff) | |
download | podman-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.go | 37 |
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 +} |