mirror of
https://github.com/opentffoundation/opentf.git
synced 2026-03-16 01:00:22 -04:00
Nomad was manually updated, so revert that to the version in master, remove it from vendor.json and add it to the ignore list. Update all packages that were in an unknown state to their latest master commits.
42 lines
864 B
Go
42 lines
864 B
Go
// +build windows
|
|
|
|
package speakeasy
|
|
|
|
import (
|
|
"syscall"
|
|
)
|
|
|
|
// SetConsoleMode function can be used to change value of ENABLE_ECHO_INPUT:
|
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx
|
|
const ENABLE_ECHO_INPUT = 0x0004
|
|
|
|
func getPassword() (password string, err error) {
|
|
var oldMode uint32
|
|
|
|
err = syscall.GetConsoleMode(syscall.Stdin, &oldMode)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
var newMode uint32 = (oldMode &^ ENABLE_ECHO_INPUT)
|
|
|
|
err = setConsoleMode(syscall.Stdin, newMode)
|
|
defer setConsoleMode(syscall.Stdin, oldMode)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
return readline()
|
|
}
|
|
|
|
func setConsoleMode(console syscall.Handle, mode uint32) (err error) {
|
|
dll := syscall.MustLoadDLL("kernel32")
|
|
proc := dll.MustFindProc("SetConsoleMode")
|
|
r, _, err := proc.Call(uintptr(console), uintptr(mode))
|
|
|
|
if r == 0 {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|