open (A, "gunzip < all.delta.gz|"); while (){ ($fil,$mod,$ver,$vv,$date,$dStamp,$login,$nadd,$ndel,$submitted,$reviewed,$log)=split(/\;/); if ($login eq ""){next;} ($login,$domain)=split(/\@/,$login); if ($domain eq "") { $domain = "netscape.com";} $hrid{$login}=$login; $sid{$login}=$domain; $location{$login}=$domain; } open (A, ">locations"); foreach $login (keys %hrid){ print A "$login\;$login\;$login\;$location{$login}\;$login\@$location{$login}\;NA\;$location{$login}\;$location{$login}\n"; } sub inv { $b <=> $a; } while (){ chop(); ($fil,$mod,$ver,$vv,$date,$dStamp,$login,$nadd,$ndel,$submitted,$reviewed,$log)=split(/\;/); if ($login eq ""){next;} if ($nadd ==0 && $ndel == 0){ next; } ($login,$domain)=split(/\@/,$login); $reviewed=~s/\\$//; @revs=split(/\,/,$reviewed); $ndelta{$login}++; foreach $loginMR (@revs){ $ndelta{$loginMR}++; } $modfil=$fil; $modfil=~s/^mozilla\///; ($v, $v1, $v2, $v3, @trash)=split(/\//, $modfil); if ($v eq "") { $v="/$ARGV[0]"; } else { $v="/$ARGV[0]/$v"; } $pieces{"0"}{"/$ARGV[0]"}++; $e{"0"}{"/$ARGV[0]"}{$login}++;$e1{$login}{"0"}{"/$ARGV[0]"}++; foreach $loginMR (@revs){ $eMR{"0"}{"/$ARGV[0]"}{$loginMR}++;$e1MR{$loginMR}{"0"}{"/$ARGV[0]"}++; } $pieces{"1"}{$v}++; $e{"1"}{$v}{$login}++;$e1{$login}{"1"}{$v}++; foreach $loginMR (@revs){ $eMR{"1"}{$v}{$loginMR}++;$e1MR{$loginMR}{"1"}{$v}++; } if ($v1 ne "") { $v1="$v/$v1"; $e{"2"}{$v1}{$login}++;$e1{$login}{"2"}{$v1}++; foreach $loginMR (@revs){ $eMR{"2"}{$v1}{$loginMR}++;$e1MR{$loginMR}{"2"}{$v1}++; } $pieces{"2"}{$v1}++; }else{ next; } if ($v2 ne ""){ $v2="$v1/$v2"; $e{"3"}{$v2}{$login}++;$e1{$login}{"3"}{$v2}++; foreach $loginMR (@revs){ $eMR{"3"}{$v2}{$loginMR}++;$e1MR{$loginMR}{"3"}{$v2}++; } $pieces{"3"}{$v2}++; }else{ next; } if ($v3 ne ""){ $v3="$v2/$v3"; $e{"4"}{$v3}{$login}++;$e1{$login}{"4"}{$v3}++; foreach $loginMR (@revs){ $eMR{"4"}{$v3}{$loginMR}++;$e1MR{$loginMR}{"4"}{$v3}++; } $pieces{"4"}{$v3}++; }else{ next; } } sub bcnt { $e{$level}{$ii}{$b} <=> $e{$level}{$ii}{$a}; } sub bcntMR { $eMR{$level}{$ii}{$b} <=> $eMR{$level}{$ii}{$a}; } sub inv { $b <=> $a; } $ll=-1; foreach $level ("0","1","2","3"){ #,"4" $ll++; foreach $ii (sort keys %{ $e{$level} }){ @ls=sort bcnt (keys %{ $e{$level}{$ii} }); print "$ll\;$ii\;$pieces{$level}{$ii}"; foreach $ind (0 .. $#ls){ $i=$ls[$ind]; if ($i ne ""){ if ($i eq "" || $location{$i} eq "" || $hrid{$i} eq "" || $e{$level}{$ii}{$i} eq ""){ print STDERR "1:@ls\;$level\;$ii\;$i\;$location{$i}\;$hrid{$i}\n"; } print "\;$i\;$e{$level}{$ii}{$i}\;$location{$i}\;$hrid{$i}"; } } print "\n"; @ls=sort bcntMR (keys %{ $eMR{$level}{$ii} }); if ("@ls" ne ""){ print "$ll:ORG\;$ii\;$pieces{$level}{$ii}"; foreach $ind (0 .. $#ls){ $i=$ls[$ind]; if ($i ne ""){ if ($location{$i} eq "") { $location{$i}="unknown";} if ($hrid{$i} eq "") { $hrid{$i} = "unknown";} if ($eMR{$level}{$ii}{$i} eq ""){ $eMR{$level}{$ii}{$i}=0;} #print STDERR "2:@ls\;$level\;$ii\;$i\;$location{$i}\;$hrid{$i}\n"; print "\;$i\;$eMR{$level}{$ii}{$i}\;$location{$i}\;$hrid{$i}"; } } print "\n"; } } } exit; sub bcnt1 { $e1{$login}{$level}{$b} <=> $e1{$login}{$level}{$a}; } sub bcnt1MR { $e1MR{$login}{$level}{$b} <=> $e1MR{$login}{$level}{$a}; } foreach $login (keys %e1){ foreach $level (keys %{ $e1{$login} }){ print "$login\;$level\;$location{$login}\;$hrid{$login}\;$ndelta{$login}"; @ls=sort bcnt1 (keys %{ $e1{$login}{$level} }); foreach $ind (0 .. $#ls){ $i=$ls[$ind]; print "\;$i\;$e1{$login}{$level}{$i}"; } print "\n"; } } foreach $login (keys %e1MR){ foreach $level (keys %{ $e1MR{$login} }){ print "$login\;$level:MR\;$location{$login}\;$hrid{$login}\;$ndeltaMR{$login}"; @ls=sort bcnt1MR (keys %{ $e1MR{$login}{$level} }); foreach $ind (0 .. $#ls){ $i=$ls[$ind]; print "\;$i\;$e1MR{$login}{$level}{$i}"; } print "\n"; } }