#!/usr/bin/perl -w
use strict;
my ($committer, $patch, $author, $date);
+use utf8;
use Getopt::Long;
use Text::Wrap;
$Text::Wrap::columns = 80;
sub list_authors {
my ($patchers, $authors) = @_;
binmode(STDOUT, ":utf8");
- print "$_\n" for sort { lc $a cmp lc $b }
+ print wrap '', '', join(', ', sort { lc $a cmp lc $b }
map { $authors->{$_} }
- keys %$patchers;
+ keys %$patchers) . ".\n";
}
sub parse_commits_from_stdin {
my (%count, %raw);
foreach my $filename (@authors) {
open FH, "<$filename" or die "Can't open $filename: $!";
- binmode FH, ':encoding(ISO-8859-1)';
+ binmode FH, ':encoding(UTF-8)';
while (<FH>) {
next if /^\#/;
next if /^-- /;
$name =~ s/\s*\z//;
$raw{$email} = $name;
$count{$email}++;
- } elsif (/^([-A-Za-z0-9 .\'À-ÖØöø-ÿ]+)[\t\n]/) {
+ } elsif (/^([-A-Za-z0-9 .\'À-ÖØöø-ÿ]+)[\t\n]/) {
# Name only
$untraced{$1}++;
BQW10602\100nifty.com sadahiro\100cpan.org
chromatic\100wgz.org chromatic\100rmci.net
+claes\100surfar.nu claes\100versed.se
clintp\100geeksalad.org cpierce1\100ford.com
clkao\100clkao.org clkao\100bestpractical.com
corion\100corion.net corion\100cpan.org
david\100kineticode.com david\100wheeler.com
+ david\100wheeler.net
dennis\100booking.com dennis\100camel.ams6.corp.booking.com
++ dennis.kaarsemaker\100booking.com
++ dennis\100kaarsemaker.net
dev-perl\100pimb.org knew-p5p\100pimb.org
+ lists-p5p\100pimb.org
djberg86\100attbi.com djberg96\100attbi.com
hio\100ymir.co.jp hio\100hio.jp
hops\100sco.com hops\100scoot.pdev.sco.com
+ian.goodacre\100xtra.co.nz ian\100debian.lan
ingo_weinhold\100gmx.de bonefish\100cs.tu-berlin.de
james\100mastros.biz theorb\100desert-island.me.uk
joseph\100cscaper.com joseph\1005sigma.com
joshua\100rodd.us jrodd\100pbs.org
jtobey\100john-edwin-tobey.org jtobey\100user1.channel1.com
-jpeacock\100rowman.com john.peacock\100havurah-software.org
+jpeacock\100messagesystems.com john.peacock\100havurah-software.org
+ jpeacock\100havurah-software.org
+ jpeacock\100dsl092-147-156.wdc1.dsl.speakeasy.net
+ jpeacock\100jpeacock-hp.doesntexist.org
++ jpeacock\100cpan.org
++ jpeacock\100rowman.com
jql\100accessone.com jql\100jql.accessone.com
jsm28\100hermes.cam.ac.uk jsm28\100cam.ac.uk
+ kane\100xs4all.nl
+ jos\100dwim.org
+ jib\100ripe.net
+keith.s.thompson\100gmail.com kst\100mib.org
ken\100mathforum.org kenahoo\100gmail.com
+ ken.williams\100thomsonreuters.com
kroepke\100dolphin-services.de kay\100dolphin-services.de
+kst\100mib.org kst\100cts.com
++ kst\100SDSC.EDU
kstar\100wolfetech.com kstar\100cpan.org
+ kurt_starsinic\100ml.com
+ kstar\100www.chapin.edu
joshua.pritikin\100db.com joshua\100paloalto.com
+meyering@asic.sc.ti.com jim\100meyering.net
+
okamoto\100corp.hp.com okamoto\100hpcc123.corp.hp.com
orwant\100oreilly.com orwant\100media.mit.edu
+ tomphoenix\100unknown
rurban\100x-ray.at rurban\100cpan.org
+sartak\100bestpractical.com sartak\100gmail.com
sadinoff\100olf.com danny-cpan\100sadinoff.com
schubiger\100cpan.org steven\100accognoscere.org
+ sts\100accognoscere.org
+ schwab\100ls5.informatik.uni-dortmund.de
sebastien\100aperghis.net maddingue\100free.fr
+ saper\100cpan.org
-shlomif\100vipe.technion.ac.il shlomif\100iglu.org.il
+shigeya\100wide.ad.jp shigeya\100foretune.co.jp
+shlomif\100cpan.org shlomif\100vipe.technion.ac.il
++ shlomif\100iglu.org.il
++ shlomif+processed-by-perl\100gmail.com
++ shlomif\100shlomifish.org
simon\100simon-cozens.org simon\100pembro4.pmb.ox.ac.uk
+ simon\100brecon.co.uk
+ simon\100othersideofthe.earth.li
+ spidb\100cpan.org
+ spider.boardman\100orb.nashua.nh.us
+ root\100peano.zk3.dec.com
+spiros\100lokku.com s.denaxas\100gmail.com
spp\100ds.net spp\100psa.pencom.com
+ spp\100psasolar.colltech.com
+ spp\100spotter.yi.org
+ wolfgang.laun\100thalesgroup.com
+ wolfgang.laun\100gmail.com
yath\100yath.de yath-perlbug\100yath.de
+
+jkeen@verizon.net jkeenan@cpan.org