aboutsummaryrefslogtreecommitdiff
path: root/git-send-email.perl
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2026-03-12 10:56:05 -0700
committerJunio C Hamano <gitster@pobox.com>2026-03-12 10:56:05 -0700
commit99da9348352a4e79246c17fd6cef425af801e309 (patch)
treef764ce347449d69cf6aa6971295d10b04eded16e /git-send-email.perl
parent898549142353fa105ad2c466a52e497620d12bb3 (diff)
parentc52f085a477c8eece87821c5bbc035e5a900eb12 (diff)
downloadgit-99da9348352a4e79246c17fd6cef425af801e309.tar.xz
Merge branch 'sp/send-email-validate-charset'
"git send-email" has learned to be a bit more careful when it accepts charset to use from the end-user, to avoid 'y' (mistaken 'yes' when expecting a charset like 'UTF-8') and other nonsense. * sp/send-email-validate-charset: send-email: validate charset name in 8bit encoding prompt
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-xgit-send-email.perl25
1 files changed, 22 insertions, 3 deletions
diff --git a/git-send-email.perl b/git-send-email.perl
index 1448b44097..bb8ddd1eef 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -23,6 +23,7 @@ use Getopt::Long;
use Git::LoadCPAN::Error qw(:try);
use Git;
use Git::I18N;
+use Encode qw(find_encoding);
Getopt::Long::Configure qw/ pass_through /;
@@ -1051,9 +1052,27 @@ if (!defined $auto_8bit_encoding && scalar %broken_encoding) {
foreach my $f (sort keys %broken_encoding) {
print " $f\n";
}
- $auto_8bit_encoding = ask(__("Which 8bit encoding should I declare [UTF-8]? "),
- valid_re => qr/.{4}/, confirm_only => 1,
- default => "UTF-8");
+ while (1) {
+ my $encoding = ask(
+ __("Declare which 8bit encoding to use [default: UTF-8]? "),
+ valid_re => qr/^\S+$/,
+ default => "UTF-8");
+ next unless defined $encoding;
+ if (find_encoding($encoding)) {
+ $auto_8bit_encoding = $encoding;
+ last;
+ }
+ my $yesno = ask(
+ sprintf(
+ __("'%s' does not appear to be a valid charset name. Use it anyway [y/N]? "),
+ $encoding),
+ valid_re => qr/^(?:y|n)/i,
+ default => "n");
+ if (defined $yesno && $yesno =~ /^y/i) {
+ $auto_8bit_encoding = $encoding;
+ last;
+ }
+ }
}
if (!$force) {