Re: [PATCH 1/2][Perlers?] git-send-email: ssh/login style password requests
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 2, 2008, 21:31 UTC
- Message-ID
- <7vve5711wa.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1201925161-9864-1-git-send-email-mfwitten@mit.edu>
Michael Witten <mfwitten@MIT.EDU> writes:
> 2 files changed, 53 insertions(+), 9 deletions(-)
Documentation part looks very clear. Thanks.
Show 15 quoted lines
> + if (defined $smtp_authuser) {
> +
> + if (!defined $smtp_authpass) {
> +
> + system "stty -echo";
> +
> + do {
> + $_ = $term->readline("Password: ");
> + } while (!defined $_);
> +
> + system "stty echo";
> +
> + $smtp_authpass = $_ if ($_);
> + }
> +Another example which appears in PerlFAQ #8 uses ReadKey with its ReadLine, like this:
use Term::ReadKey;
ReadMode('noecho');
$password = ReadLine(0);which is different from Term::ReadLine's "ReadLine". An earlier example you cited from perlfunc.pod's crypt() entry does:
system "stty -echo";
print "Password: ";
chomp($word = <STDIN>);
print "\n";
system "stty echo";In either case, I was worried about the interaction between the Term::ReadLine backend implementation and "stty".
Actually, I just tried this myself:
#!/usr/bin/perl -w
use Term::ReadLine;
my $term = new Term::ReadLine 'foobar'; my ($user, $password);
while (!defined $user) {
$user = $term->readline("User: ");
}
system 'stty -echo';
while (!defined $password) {
$password = $term->readline("Password: ");
}
system 'stty echo';
print "You said <$user><$password>\n";
print "ReadLine backend used was ", $term->ReadLine, "\n";In my case, the backend was "Term::ReadLine::Perl". A few problems:
* After typing "junio <Enter>" to "User:", an extra newline is left before "Password:" prompt;
* "Password:" prompt still echoed password "abc". There was no extra newline before "You said <junio><abc>".
* In either case, typing <Enter> returns an empty string from $term->readline() so the "while (!defined)" loop does not buy us anything.