From: Junio C Hamano Date: Mon, 3 Sep 2012 22:53:54 +0000 (-0700) Subject: Merge branch 'jc/send-email-reconfirm' X-Git-Tag: v1.8.0-rc0~112 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/200282f1c7eca23ad34b1c5f81bf4b9de334a7d1?ds=inline;hp=-c Merge branch 'jc/send-email-reconfirm' Validate interactive input to "git send-email" to avoid common mistakes such as saying "y" to sender mail address whose prompt is given with a correctly guessed default. * jc/send-email-reconfirm: send-email: validate & reconfirm interactive responses --- 200282f1c7eca23ad34b1c5f81bf4b9de334a7d1 diff --combined git-send-email.perl index 664713709c,e89729bf43..607137b9aa --- a/git-send-email.perl +++ b/git-send-email.perl @@@ -681,6 -681,7 +681,7 @@@ sub ask my ($prompt, %arg) = @_; my $valid_re = $arg{valid_re}; my $default = $arg{default}; + my $confirm_only = $arg{confirm_only}; my $resp; my $i = 0; return defined $default ? $default : undef @@@ -698,6 -699,12 +699,12 @@@ if (!defined $valid_re or $resp =~ /$valid_re/) { return $resp; } + if ($confirm_only) { + my $yesno = $term->readline("Are you sure you want to use <$resp> [y/N]? "); + if (defined $yesno && $yesno =~ /y/i) { + return $resp; + } + } } return undef; } @@@ -745,13 -752,15 +752,15 @@@ my $prompting = 0 if (!defined $sender) { $sender = $repoauthor || $repocommitter || ''; $sender = ask("Who should the emails appear to be from? [$sender] ", - default => $sender); + default => $sender, + valid_re => qr/\@.*\./, confirm_only => 1); print "Emails will be sent from: ", $sender, "\n"; $prompting++; } if (!@initial_to && !defined $to_cmd) { - my $to = ask("Who should the emails be sent to? "); + my $to = ask("Who should the emails be sent to? ", + valid_re => qr/\@.*\./, confirm_only => 1); push @initial_to, parse_address_line($to) if defined $to; # sanitized/validated later $prompting++; } @@@ -777,7 -786,8 +786,8 @@@ sub expand_one_alias if ($thread && !defined $initial_reply_to && $prompting) { $initial_reply_to = ask( - "Message-ID to be used as In-Reply-To for the first email? "); + "Message-ID to be used as In-Reply-To for the first email? ", + valid_re => qr/\@.*\./, confirm_only => 1); } if (defined $initial_reply_to) { $initial_reply_to =~ s/^\s*