lk-changelog.pl 0.167

From: Matthias Andree (matthias.andree_at_gmx.de)
Date: 08/31/03

  • Next message: Valdis.Kletnieks_at_vt.edu: "Re: 2.6.0-test4-mm3.1 oops with ext3 extended attributes on R/O filesystem"
    To: torvalds@osdl.org, marcelo@conectiva.com.br
    Date:	Sun, 31 Aug 2003 16:17:28 +0200 (CEST)
    
    

    This is a semi-automatic announcement.

    lk-changelog.pl aka. shortlog version 0.167 has been released.

    This script is used by Linus and Marcelo to rearrange and reformat BK
    ChangeSet logs into a more human-readable format, and the official
    repository is bk://kernel.bkbits.net/torvalds/tools/

    As the script has grown large, this mail only contains a diff against
    the last released version.

    You can always download the full script and GPG signatures from
    http://mandree.home.pages.de/linux/kernel/

    My thanks go to Vitezslav Samel who has spent a lot of time on digging
    out the real names for addresses sending in BK ChangeSets.

    Note that your mailer must be MIME-capable to save this mail properly,
    because it is in the "quoted-printable" encoding.

    = <- if you see just an equality sign, but no "3D", your mailer is fine.
    = <- if you see 3D on this line, then upgrade your mailer or pipe this mail
    = <- into metamail.

    -- 
    A sh script on behalf of Matthias Andree
    -------------------------------------------------------------------------
    Changes since last release:
    ----------------------------
    revision 0.167
    date: 2003/08/31 14:08:56;  author: emma;  state: Exp;  lines: +16 -4
    ADD: --selftest now checks for non-obfuscated addresses
    FIX: 1 address (wasn't obfuscated)
    REMOVE: 1 address (didn't contain domain part)
    ----------------------------
    revision 0.166
    date: 2003/08/31 14:05:04;  author: emma;  state: Exp;  lines: +110 -10
    SECURITY: fix obfuscation of unknown addresses in terse/oneline modes
    ADD: Add 9 new addresses.
    ADD: Implement --mode=fixup to postprocess this script's output,
         replacing addresses by names (useful after updates of this script)
    DOC: add empty line before =head1 NAME to fix pod2html output.
    DOC: document --mode options in man page.
    ----------------------------
    revision 0.165
    date: 2003/08/29 11:56:43;  author: vita;  state: Exp;  lines: +5 -1
    1 new address
    ----------------------------
    revision 0.164
    date: 2003/08/27 13:34:29;  author: vita;  state: Exp;  lines: +5 -1
    1 new address
    ----------------------------
    revision 0.163
    date: 2003/08/26 10:09:13;  author: vita;  state: Exp;  lines: +10 -3
    4 new addresses; fix Bryan O'Sullivan's regexp
    ----------------------------
    revision 0.162
    date: 2003/08/26 00:01:23;  author: emma;  state: Exp;  lines: +5 -2
    Fix typo in @addresses_handled_in_regexp, Bryan O'Sullivan's address got hosed.
    ----------------------------
    revision 0.161
    date: 2003/08/25 23:56:43;  author: emma;  state: Exp;  lines: +7 -2
    Bryan O'Sullivan sent a notice about the other addresses he might be using.
    ----------------------------
    revision 0.160
    date: 2003/08/24 10:47:13;  author: emma;  state: Exp;  lines: +5 -1
    Merge one mapping from Linus.
    =============================================================================
    Index: lk-changelog.pl
    ===================================================================
    RCS file: /var/CVS/lk-changelog/lk-changelog.pl,v
    retrieving revision 0.160
    retrieving revision 0.167
    diff -u -r0.160 -r0.167
    --- lk-changelog.pl	24 Aug 2003 10:47:13 -0000	0.160
    +++ lk-changelog.pl	31 Aug 2003 14:08:56 -0000	0.167
    @@ -8,7 +8,7 @@
     #			Tomas Szepe <szepe@pinerecords.com>
     #			Vitezslav Samel <samel@mail.cz>
     #
    -# $Id: lk-changelog.pl,v 0.160 2003/08/24 10:47:13 emma Exp $
    +# $Id: lk-changelog.pl,v 0.167 2003/08/31 14:08:56 emma Exp $
     # ----------------------------------------------------------------------
     # Distribution of this script is permitted under the terms of the
     # GNU General Public License (GNU GPL) v2.
    @@ -59,6 +59,9 @@
     # customize the following line to change the indentation of the change
     # lines, $indent1 is used for the first line of an entry, $indent for
     # all subsequent lines. $indent is auto-generated from $indent1.
    +#
    +# WARNING: $indent1 and $indent MUST NOT contain characters that are
    +# special in a regular expression!
     my $indent1 = "  o ";
     my $indent  = " " x length($indent1);
     # change this to enable some debugging stuff:
    @@ -68,6 +71,7 @@
     # Perl syntax magic here, "=>" is equivalent to ","
     my @addrregexps = (
     [ 'alan@[^.]+\.swansea\.linux\.org\.uk' => 'Alan Cox', ],
    +[ 'bos@([^.]+\.)?serpentine\.com' => 'Bryan O\'Sullivan', ],
     [ 'davem@[^.]+\.ninka\.net' => 'David S. Miller', ],
     [ 'kuznet@[^.]+\.inr\.ac\.ru' => 'Alexey Kuznetsov', ],
     [ 'torvalds@([^.]+\.)?transmeta\.com' => 'Linus Torvalds', ],
    @@ -94,6 +98,8 @@
     my @addresses_handled_in_regexp = (
     'alan:hraefn.swansea.linux.org.uk' => 'Alan Cox',
     'alan:irongate.swansea.linux.org.uk' => 'Alan Cox',
    +'bos:camp4.serpentine.com' => 'Bryan O\'Sullivan',
    +'bos:serpentine.com' => 'Bryan O\'Sullivan',
     'davem:cheetah.ninka.net' => 'David S. Miller',
     'davem:nuts.ninka.net' => 'David S. Miller',
     'davem:pizda.ninka.net' => 'David S. Miller', # guessed
    @@ -178,6 +184,7 @@
     'alfre:ibd.es' => 'Alfredo Sanjuán',
     'ambx1:com.rmk.(none)' => 'Adam Belay',
     'ambx1:neo.rr.com' => 'Adam Belay',
    +'amir.noam:intel.com' => 'Amir Noam',
     'amunoz:vmware.com' => 'Alberto Munoz',
     'andersen:codepoet.org' => 'Erik Andersen',
     'andersg:0x63.nu' => 'Anders Gustafsson',
    @@ -255,7 +262,6 @@
     'bmatheny:purdue.edu' => 'Blake Matheny', # google
     'bombe:informatik.tu-muenchen.de' => 'Andreas Bombe',
     'borisitk:fortunet.com' => 'Boris Itkis', # by Kristian Peters
    -'bos:camp4.serpentine.com' => 'Bryan O\'Sullivan',
     'braam:clusterfs.com' => 'Peter Braam',
     'brett:bad-sports.com' => 'Brett Pemberton',
     'brihall:pcisys.net' => 'Brian Hall', # google
    @@ -324,6 +330,7 @@
     'ctindel:cup.hp.com' => 'Chad N. Tindel',
     'cubic:miee.ru' => 'Ruslan U. Zakirov',
     'cw:f00f.org' => 'Chris Wedgwood',
    +'cw:sgi.com' => 'Chris Wedgwood',
     'cweidema:indiana.edu' => 'Christoph Weidemann',
     'cwf:sgi.com' => 'Charles Fumuso',
     'cyeoh:samba.org' => 'Christopher Yeoh',
    @@ -465,6 +472,7 @@
     'fubar:us.ibm.com' => 'Jay Vosburgh',
     'fw:deneb.enyo.de' => 'Florian Weimer', # lbdb
     'fzago:austin.rr.com' => 'Frank Zago', # google
    +'gaa:ulticom.com' => 'Gary Algier', # google
     'ganadist:nakyup.mizi.com' => 'Cha Young-Ho',
     'gandalf:netfilter.org' => 'Martin Josefsson',
     'gandalf:wlug.westbo.se' => 'Martin Josefsson',
    @@ -547,6 +555,7 @@
     'ianw:gelato.unsw.edu.au' => 'Ian Wienand', # lbdb
     'ica2_ts:csv.ica.uni-stuttgart.de' => 'Thiemo Seufer', # google
     'ilmari:ilmari.org' => 'Dagfinn Ilmari Mannsåker',
    +'inaky.perez-gonzalez:intel.com' => 'Iñaky Pérez-González', # LK 20030829
     'info:usblcd.de' => 'Adams IT Services',
     'ink:jurassic.park.msu.ru' => 'Ivan Kokshaysky',
     'ink:ru.rmk.(none)' => 'Ivan Kokshaysky',
    @@ -593,6 +602,7 @@
     'jbourne:hardrock.org' => 'James Bourne',
     'jcdutton:users.sourceforge.net' => 'James Courtier-Dutton',
     'jdavid:farfalle.com' => 'David Ruggiero',
    +'jdewand:redhat.com' => 'Julie DeWandel',
     'jdike:jdike.wstearns.org' => 'Jeff Dike',
     'jdike:karaya.com' => 'Jeff Dike',
     'jdike:uml.karaya.com' => 'Jeff Dike',
    @@ -781,6 +791,7 @@
     'mac:melware.de' => 'Armin Schindler',
     'macro:ds2.pg.gda.pl' => 'Maciej W. Rozycki',
     'makisara:abies.metla.fi' => 'Kai Makisara',
    +'malte.d:gmx.net' => 'Malte Doersam', # google
     'manand:us.ibm.com' => 'Mala Anand',
     'maneesh:in.ibm.com' => 'Maneesh Soni',
     'manfred:colorfullife.com' => 'Manfred Spraul',
    @@ -809,6 +820,7 @@
     'martin:bruli.net' => 'Martin Brulisauer',
     'martin:mdiehl.de' => 'Martin Diehl',
     'martin:meltin.net' => 'Martin Schwenke',
    +'masanari.iida:hp.com' => 'Masanari Iida', # lbdb
     'mashirle:us.ibm.com' => 'Shirley Ma',
     'mason:suse.com' => 'Chris Mason',
     'mathieu:newview.com' => 'Mathieu Chouquet-Stringer',
    @@ -862,6 +874,7 @@
     'mlang:delysid.org' => 'Mario Lang', # google
     'mlindner:syskonnect.de' => 'Mirko Lindner',
     'mlocke:mvista.com' => 'Montavista Software, Inc.',
    +'mmagallo:debian.org' => 'Marcelo E. Magallon',
     'mmcclell:bigfoot.com' => 'Mark McClelland',
     'mochel:geena.pdx.osdl.net' => 'Patrick Mochel',
     'mochel:osdl.org' => 'Patrick Mochel',
    @@ -872,6 +885,7 @@
     'mostrows:speakeasy.net' => 'Michal Ostrowski',
     'mostrows:watson.ibm.com' => 'Michal Ostrowski',
     'mporter:cox.net' => 'Matt Porter',
    +'mporter:kernel.crashing.org' => 'Matt Porter',
     'mrr:nexthop.com' => 'Mathew Richardson',
     'msdemlei:cl.uni-heidelberg.de' => 'Markus Demleitner',
     'msw:redhat.com' => 'Matt Wilson',
    @@ -903,10 +917,10 @@
     'nmiell:attbi.com' => 'Nicholas Miell',
     'nobita:t-online.de' => 'Andreas Busch',
     'nstraz:sgi.com' => 'Nathan Straz',
    +'ntfs:flatcap.org' => 'Richard Russon', # lbdb
     'okir:suse.de' => 'Olaf Kirch', # lbdb
     'okurth:gmx.net' => 'Oliver Kurth',
     'olaf.dietsche#list.linux-kernel:t-online.de' => 'Olaf Dietsche',
    -'olaf.dietsche' => 'Olaf Dietsche',
     'oleg:tv-sign.ru' => 'Oleg Nesterov',
     'olh:suse.de' => 'Olaf Hering',
     'oliendm:us.ibm.com' => 'Dave Olien',
    @@ -992,7 +1006,7 @@
     'quinlan:transmeta.com' => 'Daniel Quinlan',
     'quintela:mandrakesoft.com' => 'Juan Quintela',
     'r.a.mercer:blueyonder.co.uk' => 'Adam Mercer',
    -'r.e.wolff:bitwizard.nl' => 'Rogier Wolff', # lbdbq
    +'r.e.wolff:bitwizard.nl' => 'Rogier Wolff', # lbdb
     'ralf:dea.linux-mips.net' => 'Ralf Bächle',
     'ralf:linux-mips.org' => 'Ralf Bächle',
     'ralphs:org.rmk.(none)' => 'Ralph Siemsen',
    @@ -1059,6 +1073,7 @@
     'rth:twiddle.net' => 'Richard Henderson',
     'rth:vsop.sfbay.redhat.com' => 'Richard Henderson',
     'rui.sousa:laposte.net' => 'Rui Sousa',
    +'russell_d_cagle:mindspring.com' => 'Russell Cagle', # google
     'rusty:linux.co.intel.com' => 'Rusty Lynch',
     'rusty:rustcorp.com.au' => 'Rusty Russell',
     'rvinson:mvista.com' => 'Randy Vinson',
    @@ -1103,6 +1118,7 @@
     'shmulik.hen:intel.com' => 'Shmulik Hen',
     'silicon:falcon.sch.bme.hu' => 'Szilárd Pásztor', # google
     'simonb:lipsyncpost.co.uk' => 'Simon Burley',
    +'skewer:terra.com.br' => 'Marcelo Abreu',
     'skip.ford:verizon.net' => 'Skip Ford',
     'skyrelighten:yahoo.co.kr' => 'Donggyoo Lee',
     'sl:lineo.com' => 'Stuart Lynne',
    @@ -1140,6 +1156,7 @@
     'steve:chygwyn.com' => 'Steven Whitehouse',
     'steve:gw.chygwyn.com' => 'Steven Whitehouse',
     'steve:kbuxd.necst.nec.co.jp' => 'Steve Baur',
    +'steved:redhat.com' => 'Steve Dickson',
     'stevef:linux.local' => 'Steve French', # guessed
     'stevef:smfhome1.austin.rr.com' => 'Steve French',
     'stevef:stevef95.austin.ibm.com' => 'Steve French',
    @@ -1174,6 +1191,7 @@
     'thockin:sun.com' => 'Tim Hockin',
     'thomas:bender.thinknerd.de' => 'Thomas Walpuski',
     'thomas:osterried.de' => 'Thomas Osterried',
    +'thomas:winischhofer.net' => 'Thomas Winischhofer', # whois
     'thomr9am:ss1000.ms.mff.cuni.cz' => 'Rudo Thomas',
     'thornber:sistina.com' => 'Joe Thornber',
     'thunder:ngforever.de' => 'Thunder From The Hill',
    @@ -1219,6 +1237,7 @@
     'viro:math.psu.edu' => 'Alexander Viro',
     'viro:parcelfarce.linux.theplanet.co.uk' => 'Alexander Viro',
     'viro:www.linux.org.uk' => 'Alexander Viro',
    +'vmlinuz386:yahoo.com.ar' => 'Gerardo Exequiel Pozzi', # lbdb
     'vnourval:tcs.hut.fi' => 'Ville Nuorvala',		# Can't spell his own login?
     'vnuorval:tcs.hut.fi' => 'Ville Nuorvala',
     'vojta:math.berkeley.edu' => 'Paul Vojta',
    @@ -1261,6 +1280,7 @@
     'wstinson:wanadoo.fr' => 'William Stinson',
     'xavier.bru:bull.net' => 'Xavier Bru',
     'xkaspa06:stud.fee.vutbr.cz' => 'Tomas Kasparek',
    +'xose:wanadoo.es' => 'Xose Vazquez Perez', # lbdb
     'ya:slamail.org' => 'Yaacov Akiba Slama',
     'yinah:couragetech.com.cn' => 'Yin Aihua',
     'yokota:netlab.is.tsukuba.ac.jp' => 'Yokota Hiroshi',
    @@ -1278,7 +1298,7 @@
     'zwane:linux.realnet.co.sz' => 'Zwane Mwaikambo',
     'zwane:linuxpower.ca' => 'Zwane Mwaikambo',
     'zwane:mwaikambo.name' => 'Zwane Mwaikambo',
    -'~~~~~~thisentrylastforconvenience~~~~~' => 'Cesar Brutus Anonymous'
    +'~~~~~~thisentrylast:forconvenience~~~~~' => 'Cesar Brutus Anonymous'
     );
     
     sub doprint(\%@ ); # forward declaration
    @@ -1290,6 +1310,7 @@
     # BK_USER,BK_HOST tuple
     sub rmap_address($) {
         my $in = shift;
    +    confess "empty string passed to rmap_address" unless $in;
         my $key = lc $in;
         # try hash lookup first, return result if any
         if (defined $addresses{obfuscate $key}) {
    @@ -1341,13 +1362,20 @@
     my %table =
       (
        'oneline' => { 'index' => \&get_name,
    -		  'print' => \&print_oneline },
    +		  'print' => \&print_oneline,
    +		  'parse' => \&parse_file },
        'terse'   => { 'index' => \&get_name,
    -		  'print' => \&print_terse },
    +		  'print' => \&print_terse,
    +		  'parse' => \&parse_file },
        'grouped' => { 'index' => \&get_author,
    -		  'print' => \&print_grouped },
    +		  'print' => \&print_grouped,
    +		  'parse' => \&parse_file },
        'full'    => { 'index' => \&get_author,
    -		  'print' => \&print_full }
    +		  'print' => \&print_full,
    +		  'parse' => \&parse_file },
    +   'fixup'   => { 'index' => sub { },
    +		  'print' => sub { },
    +		  'parse' => \&fixup_file }
       );
     
     # temp store
    @@ -1576,6 +1604,57 @@
       return join(" ", @a);
     }
     
    +sub fixup_file(\%$$ ) {
    +# arguments: %log hash
    +#            file name
    +#            file handle (IO::Handle or IO::File)
    +  croak unless wantarray;
    +  my $log = shift;
    +  my $fn = shift;
    +  my $fh = shift;
    +  my $nre = '\S+[:@]\S+';
    +
    +  while($_ = $fh -> getline) {
    +    chomp;
    +    # grouped/full mode
    +    if (/^<($nre)>:$/) {
    +      my $a = $1;
    +      if ($a =~ /:/) { $a = unveil($a); }
    +      my $name = rmap_address($a);
    +      if ($name ne $a) { # found name
    +	print "$name:\n";
    +      } else {
    +	print "$_\n";
    +      }
    +      next;
    +    }
    +    # oneline/terse mode, unswapped
    +    if (/\s+\(($nre)\)$/) {
    +      my $a = $1;
    +      if ($a =~ /:/) { $a = unveil($a); }
    +      my $name = rmap_address($a);
    +      if ($name ne $a) { # found name
    +	s/\($nre\)$/$name/;
    +      }
    +      print "$_\n";
    +      next;
    +    }
    +    # oneline/terse mode, swapped
    +    if (/^$indent1($nre): /) {
    +      my $a = $1;
    +      if ($a =~ /:/) { $a = unveil($a); }
    +      my $name = rmap_address($a);
    +      if ($name ne $a) { # found name
    +	s/^$indent1$nre:/$indent1$name:/;
    +      }
    +      print "$_\n";
    +      next;
    +    }
    +    print "$_\n";
    +  }
    +  return ();
    +}
    +
     # Read a file and parse it into the %log hash.
     sub parse_file(\%$$ ) {
     # arguments: %log hash
    @@ -1641,7 +1720,9 @@
     	} else {
     	  $author = $name . ' <' . $address . '>';
     	}
    -      } else {
    +      } else { # $havename
    +	# must obfuscate name since it contains an address still
    +	$name = obfuscate $name;
     	$author = '<' . $address . '>';
           }
           $first = 1;
    @@ -1704,6 +1785,11 @@
     
     sub selftest() {
         my $rc = 0;
    +    foreach my $i (keys %addresses) {
    +	if ($i eq unveil $i) {
    +	    print STDERR "Warning: address '$i' is not obfuscated!\n";
    +	}
    +    }
         foreach my $address (unveil keys %addresses) {
     	foreach my $ar (@addrregexps) {
     	    if ($address =~ m/$ar->[0]/) {
    @@ -1797,7 +1883,8 @@
     sub doprint(\%@ ) {
       my $log = shift;
       print join("\n", @_), "\n" or write_error();
    -  $table{$opt{mode}}->{print}->($log);
    +  my $f_print = $table{$opt{mode}}->{'print'};
    +  if (defined $f_print) { &$f_print($log); }
     }
     
     # --------------------------------------------------------------------
    @@ -1835,7 +1922,7 @@
         my $fh = new IO::File;
         $fh->open($fn, "r")
           or die "cannot open \"$fn\": $!\nAborting";
    -    push @prolog, parse_file(%log, $fn, $fh);
    +    push @prolog, &{$table{$opt{'mode'}}->{'parse'}}(\%log, $fn, $fh);
         if (not $opt{merge}) {
           doprint(%log, @prolog);
           undef %log;
    @@ -1852,7 +1939,7 @@
       my $fh = new IO::Handle;
       $fh->fdopen(fileno(STDIN), "r")
         or die "cannot open stdin: $!\nAborting";
    -  @prolog = parse_file(%log, "stdin", $fh);
    +  @prolog = &{$table{$opt{'mode'}}->{'parse'}}(\%log, "stdin", $fh);
       doprint(%log, @prolog);
     }
     
    @@ -1869,6 +1956,34 @@
     __END__
     # --------------------------------------------------------------------
     # $Log: lk-changelog.pl,v $
    +# Revision 0.167  2003/08/31 14:08:56  emma
    +# ADD: --selftest now checks for non-obfuscated addresses
    +# FIX: 1 address (wasn't obfuscated)
    +# REMOVE: 1 address (didn't contain domain part)
    +#
    +# Revision 0.166  2003/08/31 14:05:04  emma
    +# SECURITY: fix obfuscation of unknown addresses in terse/oneline modes
    +# ADD: Add 9 new addresses.
    +# ADD: Implement --mode=fixup to postprocess this script's output,
    +#      replacing addresses by names (useful after updates of this script)
    +# DOC: add empty line before =head1 NAME to fix pod2html output.
    +# DOC: document --mode options in man page.
    +#
    +# Revision 0.165  2003/08/29 11:56:43  vita
    +# 1 new address
    +#
    +# Revision 0.164  2003/08/27 13:34:29  vita
    +# 1 new address
    +#
    +# Revision 0.163  2003/08/26 10:09:13  vita
    +# 4 new addresses; fix Bryan O'Sullivan's regexp
    +#
    +# Revision 0.162  2003/08/26 00:01:23  emma
    +# Fix typo in @addresses_handled_in_regexp, Bryan O'Sullivan's address got hosed.
    +#
    +# Revision 0.161  2003/08/25 23:56:43  emma
    +# Bryan O'Sullivan sent a notice about the other addresses he might be using.
    +#
     # Revision 0.160  2003/08/24 10:47:13  emma
     # Merge one mapping from Linus.
     #
    @@ -2415,6 +2530,7 @@
     # Only consider e-mail addresses that are left-justified.
     # Suggested by Greg Kroah-Hartman <greg@kroah.com>.
     #
    +
     =head1 NAME
     
     lk-changelog.pl - Reformat BitKeeper ChangeLog for Linux Kernel
    @@ -2461,6 +2577,27 @@
     =head1 DESCRIPTION
     
     Summarizes or reformats BitKeeper ChangeLogs for Linux Kernel 2.X.
    +
    +--mode options are:
    +
    +=over
    +
    +=item oneline - a one-line-per-change format (supports --swap)
    +
    +=item terse - a shortened one-paragraph-per-change format (supports --swap)
    +
    +=item ordered - shortened changes grouped by sorted author
    +
    +=item full - full changes grouped by sorted author
    +
    +=item fixup - a special mode (since 0.166)
    +
    +This mode replaces addresses by names if the addresses are known. Useful
    +to postprocess this script's output after new addresses have been added.
    +Besides addresses that are replaced by names, the output is the verbatim
    +input. No ordering or grouping takes place.
    +
    +=back
     
     =head1 ENVIRONMENT
     
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at  http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at  http://www.tux.org/lkml/
    

  • Next message: Valdis.Kletnieks_at_vt.edu: "Re: 2.6.0-test4-mm3.1 oops with ext3 extended attributes on R/O filesystem"