diff options
Diffstat (limited to 'src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/mongodb/mongo-tools-common/password/password.go')
-rw-r--r-- | src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/mongodb/mongo-tools-common/password/password.go | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/mongodb/mongo-tools-common/password/password.go b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/mongodb/mongo-tools-common/password/password.go index 290f1849d71..3905cce93e3 100644 --- a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/mongodb/mongo-tools-common/password/password.go +++ b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/mongodb/mongo-tools-common/password/password.go @@ -27,30 +27,34 @@ const ( // Prompt displays a prompt asking for the password and returns the // password the user enters as a string. -func Prompt() string { +func Prompt() (string, error) { var pass string + var err error if IsTerminal() { log.Logv(log.DebugLow, "standard input is a terminal; reading password from terminal") fmt.Fprintf(os.Stderr, "Enter password:") - pass = GetPass() + pass, err = GetPass() } else { log.Logv(log.Always, "reading password from standard input") fmt.Fprintf(os.Stderr, "Enter password:") - pass = readPassFromStdin() + pass, err = readPassFromStdin() + } + if err != nil { + return "", err } fmt.Fprintln(os.Stderr) - return pass + return pass, nil } // readPassFromStdin pipes in a password from stdin if // we aren't using a terminal for standard input -func readPassFromStdin() string { +func readPassFromStdin() (string, error) { pass := []byte{} for { var chBuf [1]byte n, err := os.Stdin.Read(chBuf[:]) if err != nil { - panic(err) + return "", err } if n == 0 { break @@ -66,5 +70,5 @@ func readPassFromStdin() string { pass = append(pass, ch) } } - return string(pass) + return string(pass), nil } |