#!/usr/bin/perl # # Extract information on the fetchmail project size from the NEWS file # # Output other than pass-through % lines is tab-separated fields. # Field 1: release ID # Field 2: count of source lines under version control # Field 3: count of fetchmail-friends subscribers # Field 4: count of fetchmail-announce subscribers # Field 5: total subscribers to both lists # Field 6: date of release (days since first datum) # Field 7: date of release (RFC822 date format) # my($release, $date, $jdate); %month_offsets = ( "Jan", 0, "Feb", 31, "Mar", 59, "Apr", 90, "May", 120, "Jun", 151, "Jul", 181, "Aug", 212, "Sep", 243, "Oct", 273, "Nov", 304, "Dec", 334, ); sub day_offset { my($datestring) = @_; my($wday, $month, $day, $time, $zone, $year) = split(' ', $datestring); my($jdate); # We don't deal with leap years here because the baseline day is after # the last leap year (1996) and there's a long time before the next # one (2004). $jdate = ($year - 1996) * 365; $jdate += $month_offsets{$month}; $jdate += ($day - 1); # Baseline day for the size data was Fri Oct 25 23:02:26 EDT 1996 $jdate -= 297; return($jdate); } open(NEWS, "NEWS"); $release = "unknown"; $date = "unknown"; $jdate = "unknown"; while ($_ = ) { my($sum); if (/^%/) { print $_; } elsif (/^fetchmail-([^ ]*) \(([^)]+)\)(, [0-9]* lines)?:/) { $release = $1; $date = $2; $jdate = &day_offset($date); if ($3) { $lines = substr($3, 2, length($3) - 8); } else { $lines = 'na' } } elsif (/There are ([0-9]*) people on fetchmail-friends and ([0-9]*) on fetchmail-announce/) { $sum = $1 + $2; print "${release}\t${lines}\t$1\t$2\t${sum}\t${jdate}\t${date}\n"; $release = "unknown"; $date = "unknown"; } elsif (/There are ([0-9]*) people on the fetchmail-friends list./) { print "$release\t${lines}\t$1\t0\t$1\t$jdate\t$date\n"; $release = "unknown"; $date = "unknown"; } } # end