projects
/
clearscm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed to properly handle backspace when entering passwords
[clearscm.git]
/
lib
/
Utils.pm
diff --git
a/lib/Utils.pm
b/lib/Utils.pm
index
78af171
..
29e020c
100644
(file)
--- a/
lib/Utils.pm
+++ b/
lib/Utils.pm
@@
-156,7
+156,7
@@
Returns:
or error "Can't write to $errorlog ($!)", 1;
# Change the current directory to /
or error "Can't write to $errorlog ($!)", 1;
# Change the current directory to /
- my $ROOT = $ARCH eq "windows" ? "C:\\" : "/";
+ my $ROOT = $ARCH
ITECTURE
eq "windows" ? "C:\\" : "/";
chdir $ROOT
or error "Can't chdir to $ROOT ($!), 1";
chdir $ROOT
or error "Can't chdir to $ROOT ($!), 1";
@@
-232,17
+232,11
@@
STDOUT then do so in the $command passed in.
=cut
=cut
- # Save $SIG{CHLD} so we can set it to 'DEFAULT' and then restore it later.
- # Helps when you are doing process handling.
- my $sigchld = $SIG{CHLD};
-
local $SIG{CHLD} = 'DEFAULT';
my @output = `$cmd`;
my $status = $?;
local $SIG{CHLD} = 'DEFAULT';
my @output = `$cmd`;
my $status = $?;
- local $SIG{CHLD} = $sigchld;
-
chomp @output;
return ($status, @output);
chomp @output;
return ($status, @output);
@@
-347,10
+341,9
@@
Returns:
=cut
=cut
-
$prompt ||= 'Password';
$prompt ||= 'Password';
- my $password;
+ my $password
= ''
;
local $| = 1;
local $| = 1;
@@
-371,9
+364,18
@@
Returns:
last;
} # if
last;
} # if
- print '*';
+ # Handle backspaces
+ if ($key eq chr(127)) {
+ unless ($password eq '') {
+ chop $password;
- $password .= $key;
+ print "\b \b";
+ } # unless
+ } else {
+ print '*';
+
+ $password .= $key;
+ } # if
} # while
ReadMode 'restore'; # Reset tty mode before exiting.
} # while
ReadMode 'restore'; # Reset tty mode before exiting.