diff options
Diffstat (limited to 'scripts/get_maintainer.pl')
-rwxr-xr-x | scripts/get_maintainer.pl | 70 |
1 files changed, 54 insertions, 16 deletions
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl index 473b6741d55f..cdb44b63342e 100755 --- a/scripts/get_maintainer.pl +++ b/scripts/get_maintainer.pl | |||
@@ -313,22 +313,22 @@ if ($email || $email_list) { | |||
313 | } | 313 | } |
314 | 314 | ||
315 | if ($scm) { | 315 | if ($scm) { |
316 | @scm = sort_and_uniq(@scm); | 316 | @scm = uniq(@scm); |
317 | output(@scm); | 317 | output(@scm); |
318 | } | 318 | } |
319 | 319 | ||
320 | if ($status) { | 320 | if ($status) { |
321 | @status = sort_and_uniq(@status); | 321 | @status = uniq(@status); |
322 | output(@status); | 322 | output(@status); |
323 | } | 323 | } |
324 | 324 | ||
325 | if ($subsystem) { | 325 | if ($subsystem) { |
326 | @subsystem = sort_and_uniq(@subsystem); | 326 | @subsystem = uniq(@subsystem); |
327 | output(@subsystem); | 327 | output(@subsystem); |
328 | } | 328 | } |
329 | 329 | ||
330 | if ($web) { | 330 | if ($web) { |
331 | @web = sort_and_uniq(@web); | 331 | @web = uniq(@web); |
332 | output(@web); | 332 | output(@web); |
333 | } | 333 | } |
334 | 334 | ||
@@ -442,7 +442,7 @@ sub parse_email { | |||
442 | $address = $2; | 442 | $address = $2; |
443 | } elsif ($formatted_email =~ /^\s*<(.+\@\S*)>.*$/) { | 443 | } elsif ($formatted_email =~ /^\s*<(.+\@\S*)>.*$/) { |
444 | $address = $1; | 444 | $address = $1; |
445 | } elsif ($formatted_email =~ /^(.+\@\S*)$/) { | 445 | } elsif ($formatted_email =~ /^(.+\@\S*).*$/) { |
446 | $address = $1; | 446 | $address = $1; |
447 | } | 447 | } |
448 | 448 | ||
@@ -485,12 +485,46 @@ sub format_email { | |||
485 | return $formatted_email; | 485 | return $formatted_email; |
486 | } | 486 | } |
487 | 487 | ||
488 | sub add_categories { | 488 | sub find_starting_index { |
489 | |||
490 | my ($index) = @_; | ||
491 | |||
492 | while ($index > 0) { | ||
493 | my $tv = $typevalue[$index]; | ||
494 | if (!($tv =~ m/^(\C):\s*(.*)/)) { | ||
495 | last; | ||
496 | } | ||
497 | $index--; | ||
498 | } | ||
499 | |||
500 | return $index; | ||
501 | } | ||
502 | |||
503 | sub find_ending_index { | ||
489 | my ($index) = @_; | 504 | my ($index) = @_; |
490 | 505 | ||
491 | $index = $index - 1; | 506 | while ($index < @typevalue) { |
492 | while ($index >= 0) { | ||
493 | my $tv = $typevalue[$index]; | 507 | my $tv = $typevalue[$index]; |
508 | if (!($tv =~ m/^(\C):\s*(.*)/)) { | ||
509 | last; | ||
510 | } | ||
511 | $index++; | ||
512 | } | ||
513 | |||
514 | return $index; | ||
515 | } | ||
516 | |||
517 | sub add_categories { | ||
518 | my ($index) = @_; | ||
519 | |||
520 | my $i; | ||
521 | my $start = find_starting_index($index); | ||
522 | my $end = find_ending_index($index); | ||
523 | |||
524 | push(@subsystem, $typevalue[$start]); | ||
525 | |||
526 | for ($i = $start + 1; $i < $end; $i++) { | ||
527 | my $tv = $typevalue[$i]; | ||
494 | if ($tv =~ m/^(\C):\s*(.*)/) { | 528 | if ($tv =~ m/^(\C):\s*(.*)/) { |
495 | my $ptype = $1; | 529 | my $ptype = $1; |
496 | my $pvalue = $2; | 530 | my $pvalue = $2; |
@@ -513,11 +547,12 @@ sub add_categories { | |||
513 | } elsif ($ptype eq "M") { | 547 | } elsif ($ptype eq "M") { |
514 | my ($name, $address) = parse_email($pvalue); | 548 | my ($name, $address) = parse_email($pvalue); |
515 | if ($name eq "") { | 549 | if ($name eq "") { |
516 | if ($index >= 0) { | 550 | if ($i > 0) { |
517 | my $tv = $typevalue[$index - 1]; | 551 | my $tv = $typevalue[$i - 1]; |
518 | if ($tv =~ m/^(\C):\s*(.*)/) { | 552 | if ($tv =~ m/^(\C):\s*(.*)/) { |
519 | if ($1 eq "P") { | 553 | if ($1 eq "P") { |
520 | $name = $2; | 554 | $name = $2; |
555 | $pvalue = format_email($name, $address); | ||
521 | } | 556 | } |
522 | } | 557 | } |
523 | } | 558 | } |
@@ -532,11 +567,6 @@ sub add_categories { | |||
532 | } elsif ($ptype eq "S") { | 567 | } elsif ($ptype eq "S") { |
533 | push(@status, $pvalue); | 568 | push(@status, $pvalue); |
534 | } | 569 | } |
535 | |||
536 | $index--; | ||
537 | } else { | ||
538 | push(@subsystem,$tv); | ||
539 | $index = -1; | ||
540 | } | 570 | } |
541 | } | 571 | } |
542 | } | 572 | } |
@@ -559,6 +589,10 @@ sub push_email_address { | |||
559 | 589 | ||
560 | my ($name, $address) = parse_email($line); | 590 | my ($name, $address) = parse_email($line); |
561 | 591 | ||
592 | if ($address eq "") { | ||
593 | return 0; | ||
594 | } | ||
595 | |||
562 | if (!$email_remove_duplicates) { | 596 | if (!$email_remove_duplicates) { |
563 | push(@email_to, format_email($name, $address)); | 597 | push(@email_to, format_email($name, $address)); |
564 | } elsif (!email_inuse($name, $address)) { | 598 | } elsif (!email_inuse($name, $address)) { |
@@ -566,6 +600,8 @@ sub push_email_address { | |||
566 | $email_hash_name{$name}++; | 600 | $email_hash_name{$name}++; |
567 | $email_hash_address{$address}++; | 601 | $email_hash_address{$address}++; |
568 | } | 602 | } |
603 | |||
604 | return 1; | ||
569 | } | 605 | } |
570 | 606 | ||
571 | sub push_email_addresses { | 607 | sub push_email_addresses { |
@@ -581,7 +617,9 @@ sub push_email_addresses { | |||
581 | push_email_address($entry); | 617 | push_email_address($entry); |
582 | } | 618 | } |
583 | } else { | 619 | } else { |
584 | warn("Invalid MAINTAINERS address: '" . $address . "'\n"); | 620 | if (!push_email_address($address)) { |
621 | warn("Invalid MAINTAINERS address: '" . $address . "'\n"); | ||
622 | } | ||
585 | } | 623 | } |
586 | } | 624 | } |
587 | 625 | ||