From 60bdaebcb1a5c510646bf5924c6b33c6c47c7820 Mon Sep 17 00:00:00 2001 From: Roman Lacko <xlacko1@fi.muni.cz> Date: Mon, 8 Nov 2021 14:46:49 +0100 Subject: [PATCH] install: restore "stty echo" upon receiving SIGINT when asking for password --- install.pl | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/install.pl b/install.pl index 1273755..7d497b1 100755 --- a/install.pl +++ b/install.pl @@ -124,16 +124,27 @@ sub prompt_username { return $username; } -sub prompt_password { - print "Enter your faculty password: "; - system("stty -echo"); - chomp(my $password1 = <STDIN>); - system("stty echo"); - print "\nRepeat your faculty password: "; +sub prompt_secret { + my ($prompt) = @_; + print "$prompt: "; + + local $SIG{INT} = sub { + system("stty echo"); + exit 1; + }; + + my $value; system("stty -echo"); - chomp(my $password2 = <STDIN>); + chomp($value = <STDIN>); system("stty echo"); + print "\n"; + return $value; +} + +sub prompt_password { + my $password1 = prompt_secret("Enter your faculty password"); + my $password2 = prompt_secret("Repeat your faculty password"); if ($password1 ne $password2) { die "[ERROR] Passwords do not match!"; -- GitLab