| #!/usr/bin/perl | |
| # Copyright (c) 2006 Eclipse Foundation, made available under EPL v1.0 | |
| # Contributors Ward Cunningham, Bjorn Freeman-Benson | |
| use strict; | |
| print "Content-type: text/plain\n\n"; | |
| my ($year) = `date` =~ /(\d\d\d\d)/; | |
| my $log; | |
| my $site = "www.eclipse.org"; | |
| my $prog_companies = "projects/web-api/commit-companies.php"; | |
| my $prog_people = "projects/web-api/commit-projects-committers.php"; | |
| my %data; | |
| my %companies; | |
| query_companies(); | |
| query_people(); | |
| report(); | |
| sub query_companies { | |
| my $sockaddr = 'S n a4 x8'; | |
| my $AF_INET = 2; | |
| my $SOCK_STREAM = 1; | |
| chop(my $hostname = `hostname`); | |
| my ($name, $aliases, $proto) = getprotobyname('tcp'); | |
| my ($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname); | |
| my ($name, $aliases, $type, $len, $thataddr) = gethostbyname($site); | |
| my $this = pack($sockaddr, $AF_INET, 0, $thisaddr); | |
| my $that = pack($sockaddr, $AF_INET, 80, $thataddr); | |
| socket (S, $AF_INET, $SOCK_STREAM, $proto) || die "socket: $!"; | |
| bind(S, $this) || die "bind: $!"; | |
| connect(S, $that) || die "connect: $!"; | |
| select(S); | |
| $| = 1; | |
| print S "GET /$prog_companies\r\n"; | |
| select(STDOUT); | |
| while (<S>) { | |
| if (/^#/) { | |
| $log .= "$_<br>"; | |
| next; | |
| } | |
| chomp; | |
| my ($person,$name1,$name2) = split /\t/; | |
| $companies{$person} = $name1 . $name2; | |
| } | |
| } | |
| sub query_people { | |
| my $sockaddr = 'S n a4 x8'; | |
| my $AF_INET = 2; | |
| my $SOCK_STREAM = 1; | |
| chop(my $hostname = `hostname`); | |
| my ($name, $aliases, $proto) = getprotobyname('tcp'); | |
| my ($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname); | |
| my ($name, $aliases, $type, $len, $thataddr) = gethostbyname($site); | |
| my $this = pack($sockaddr, $AF_INET, 0, $thisaddr); | |
| my $that = pack($sockaddr, $AF_INET, 80, $thataddr); | |
| socket (S, $AF_INET, $SOCK_STREAM, $proto) || die "socket: $!"; | |
| bind(S, $this) || die "bind: $!"; | |
| connect(S, $that) || die "connect: $!"; | |
| select(S); | |
| $| = 1; | |
| print S "GET /$prog_people\r\n"; | |
| select(STDOUT); | |
| while (<S>) { | |
| if (/^#/) { | |
| $log .= "$_<br>"; | |
| next; | |
| } | |
| chomp; | |
| my ($project,$person) = split /\t/; | |
| my $company = $companies{$person}; | |
| $company = "unknown" unless $company; | |
| $data{$project}{$company}++; | |
| } | |
| } | |
| sub report { | |
| my @projects = keys %data; | |
| foreach my $project ( @projects ) { | |
| my @companies = keys %{$data{$project}}; | |
| foreach my $company ( @companies ) { | |
| print "$company $project $year " . $data{$project}{$company} . "\n"; | |
| } | |
| } | |
| } |