check / check (push) Waiting to run
term.ReadPassword reads the terminal with a raw read that returns 0 bytes at the end of input and takes that as nothing yet, so Ctrl-D at the prompt did nothing. On the Unix systems the prompt now sets the terminal as ReadPassword does and reads the line from standard input, which reports the end of input; elsewhere, such as Windows, it still uses ReadPassword. Ctrl-D with nothing typed gives an empty mnemonic, refused with status 1, and the terminal settings are put back. A test types Ctrl-D at the prompt on a pseudo-terminal. Unverified: the prompt was run only on Linux; other systems were built. Deviation: a Ctrl-H byte is no longer a backspace at the prompt. Model: opus-5-5 Co-authored-by: clawbot <sneak+clawbot@sneak.cloud>
19 lines
479 B
Go
19 lines
479 B
Go
//go:build !aix && !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd && !solaris && !zos
|
|
|
|
package mnemonic
|
|
|
|
import (
|
|
"os"
|
|
|
|
"golang.org/x/term"
|
|
)
|
|
|
|
// readWithoutEcho reads one line from the terminal on standard input
|
|
// with echo turned off, through term.ReadPassword, on the systems
|
|
// prompt_unix.go is not built for, such as Windows.
|
|
func readWithoutEcho() (string, error) {
|
|
typed, err := term.ReadPassword(int(os.Stdin.Fd()))
|
|
|
|
return string(typed), err
|
|
}
|