Skip to content

Commit 2639772

Browse files
sipragatorvalds
authored andcommitted
get_maintainer: remove stray punctuation when cleaning file emails
When parsing emails from .yaml files in particular, stray punctuation such as a leading '-' can end up in the name. For example, consider a common YAML section such as: maintainers: - devicetree@vger.kernel.org This would previously be processed by get_maintainer.pl as: - <devicetree@vger.kernel.org> Make the logic in clean_file_emails more robust by deleting any sub-names which consist of common single punctuation marks before proceeding to the best-effort name extraction logic. The output is then correct: devicetree@vger.kernel.org Some additional comments are added to the function to make things clearer to future readers. Link: https://lore.kernel.org/all/0173e76a36b3a9b4e7f324dd3a36fd4a9757f302.camel@perches.com/ Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Alvin Šipraga <alsi@bang-olufsen.dk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 9c334eb commit 2639772

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

scripts/get_maintainer.pl

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2462,11 +2462,17 @@ sub clean_file_emails {
24622462
foreach my $email (@file_emails) {
24632463
$email =~ s/[\(\<\{]{0,1}([A-Za-z0-9_\.\+-]+\@[A-Za-z0-9\.-]+)[\)\>\}]{0,1}/\<$1\>/g;
24642464
my ($name, $address) = parse_email($email);
2465-
if ($name eq '"[,\.]"') {
2466-
$name = "";
2467-
}
24682465

2466+
# Strip quotes for easier processing, format_email will add them back
2467+
$name =~ s/^"(.*)"$/$1/;
2468+
2469+
# Split into name-like parts and remove stray punctuation particles
24692470
my @nw = split(/[^\p{L}\'\,\.\+-]/, $name);
2471+
@nw = grep(!/^[\'\,\.\+-]$/, @nw);
2472+
2473+
# Make a best effort to extract the name, and only the name, by taking
2474+
# only the last two names, or in the case of obvious initials, the last
2475+
# three names.
24702476
if (@nw > 2) {
24712477
my $first = $nw[@nw - 3];
24722478
my $middle = $nw[@nw - 2];
@@ -2480,18 +2486,16 @@ sub clean_file_emails {
24802486
} else {
24812487
$name = "$middle $last";
24822488
}
2489+
} else {
2490+
$name = "@nw";
24832491
}
24842492
24852493
if (substr($name, -1) =~ /[,\.]/) {
24862494
$name = substr($name, 0, length($name) - 1);
2487-
} elsif (substr($name, -2) =~ /[,\.]"/) {
2488-
$name = substr($name, 0, length($name) - 2) . '"';
24892495
}
24902496
24912497
if (substr($name, 0, 1) =~ /[,\.]/) {
24922498
$name = substr($name, 1, length($name) - 1);
2493-
} elsif (substr($name, 0, 2) =~ /"[,\.]/) {
2494-
$name = '"' . substr($name, 2, length($name) - 2);
24952499
}
24962500
24972501
my $fmt_email = format_email($name, $address, $email_usename);

0 commit comments

Comments
 (0)