5 # will show the e-mail addresses of those whose files are changed by this patch
16 $< == 203 && -d "/pro/3gl/CPAN" and chdir "/pro/3gl/CPAN/perl";
17 -d "Porting" or die "You're not in the perl5 root folder\n";
19 use vars qw(%Modules %Maintainers);
20 require "Porting/Maintainers.pl";
23 foreach my $m (keys %Modules) {
24 foreach my $f (split m/\s+/ => $Modules{$m}{FILES}) {
27 find (sub { -f and push @f, $File::Find::name }, $f);
35 Maintainer => $Modules{$m}{MAINTAINER},
41 my ($pfx, $pwd, $pc) = ("", (getcwd) x 2);
42 #$pwd =~ m/CPAN/ and ($pc, $pfx) = ("/pro/3gl/CPAN/perl-current", "perl/");
46 -f or return; # Only files
47 my $f = $File::Find::name;
48 $f =~ s{^$pc/}{$pfx}o;
53 while ($x =~ s{^[^/]+/}{}) {
54 if (exists $fqfn{$x} && !ref $fqfn{$x}) {
55 #warn "$f already in top-level. skipped\n";
58 push @{$fqfn{$x}}, $f;
65 m/^(?:\+\+\+|\*\*\*)\s+(\S+)/ or next;
67 # now check if the file exists
69 $f =~ m/^\d+,\d+$/ and next; # Grr, diff not -u
70 -f "perl/$f" and $f = "perl/$f";
72 unless (exists $fqfn{$f}) {
73 #print STDERR "finding FQFN for $f ...\n";
74 while ($f =~ m{/} && !exists $fqfn{$f}) {
77 $f or die "No match for $f\n";
83 @f == 0 and next; # Hmmm
84 @f > 1 and die "$f matches (@f)\n";
87 push @patched_files, $x;
91 foreach my $f (@patched_files) {
92 exists $Files{$f} or next; # Not dual
93 $mod{$Files{$f}{Module}}++;
94 $mnt{$Files{$f}{Maintainer}}++;
97 if (my @mod = sort { lc $a cmp lc $b } keys %mod) {
99 print "Affected modules: @mod\n";
100 print "Maintainers: @{[map { $Maintainers{$_} } keys %mnt]}\n";