Create perl script to append existing AUTHORS file with information from git log.

new AUTHORS file can be created with "gen-authors" build parameter

The "original" AUTHORS file has been fixed up to be kind to parsers (so no one gets excluded) and renamed to AUTHORS.src.  This preserves the features authors worked on.  For authors that didn't list features, they may be converted to just getting information from git.

Change-Id: I9a4c4091e229f7f5e1c46d864527a98c1278e451
Petri-Dish: Michael Mann <>
Tested-by: Petri Dish Buildbot <>
Reviewed-by: Michael Mann <>
This commit is contained in:
Michael Mann 2016-02-28 17:32:13 -05:00
parent b70d1d7e14
commit 8435145b1f
5 changed files with 4502 additions and 16 deletions

View File

@ -1,4 +1,4 @@

Original Author
-------- ------
@ -2179,10 +2179,10 @@ metatech <metatechbe[AT]> {
IBM WebSphere MQ protocol support
IBM MQ Programmable Command Formats protocol support
Initial BEA Tuxedo protocol support
Distributed Relational Database Architecture protocol support
Borland StarTeam protocol support
Adobe Real Time Messaging Protocol support
ActiveMQ OpenWire protocol support
Distributed Relational Database Architecture protocol support
Borland StarTeam protocol support
Adobe Real Time Messaging Protocol support
ActiveMQ OpenWire protocol support
Brian Wheeler <Brian.Wheeler[AT]> {
@ -2274,12 +2274,12 @@ Henry Ptasinski <henryp[AT]> {
Roberto Morro <roberto.morro[AT]> {
Support for GMPLS UNI and E-NNI objects/TLVs
in RSVP and OSPF
in RSVP and OSPF
RSVP: Support for PROTECTION obj c-type 2 (RFC4872),
new TLVs for IF_ID (RFC4920), Path Key subobj in ERO (RFC5520),
new ASSOCIATION obj c-type 4 (oif2008.389),
and various changes/improvements
new TLVs for IF_ID (RFC4920), Path Key subobj in ERO (RFC5520),
new ASSOCIATION obj c-type 4 (oif2008.389),
and various changes/improvements
@ -2299,7 +2299,7 @@ Jeff Connelly <shellreef+mp2p[AT]> {
MANOLITO support
Irene Rüngeler <i.ruengeler[AT] {
Irene Rüngeler <i.ruengeler[AT]> {
Graphical SCTP analysis
Support PPID and SCTP port based selection in Decode as
@ -3599,7 +3599,7 @@ Remi Vichery <remi.vichery[AT]> {
Dissector for Stateless Transport Tunneling (STT)
Kevin Cox <kevincox{AT]> {
Kevin Cox <kevincox[AT]> {
Dissector for Ceph
@ -3699,7 +3699,6 @@ Mohammad Hanif <mhanif[AT]>
Reinhard Speyerer <rspmn[AT]>
Patrick Kursawe <phosphan[AT]>
Arsen Chaloyan <achaloyan[AT]>
Arnaud Jacques <webmaster[AT]>
D. Manzella <manzella[AT]>
Jari Mustajarvi <jari.mustajarvi[AT]>
@ -3728,8 +3727,8 @@ Stas Grabois <sagig[AT]>
Ainsley Pereira <APereira[AT]>
Philippe Mazeau <philippe.mazeau[AT]>
Carles Kishimoto <ckishimo[AT]>
Dennis Lim <postadal[AT]>
Dennis Lim <Dennis.Lim[AT]>
Martin van der Werff <martin[AT]>
Marco van den Bovenkamp <marco[AT]>
Ming Zhang <mingz[AT]>
@ -3821,7 +3820,7 @@ Giodi Giorgi <g.giorgi[AT]>
Peter Hertting <Peter.Hertting[AT]>
Jess Balint <jbalint[AT]>
Bahaa Naamneh <b.naamneh[AT]>
Magnus Sörman <magnus.sorman[AT]
Magnus Sörman <magnus.sorman[AT]>
Pascal Quantin <pascal.quantin[AT]>
Roy Marples <roy[AT]>
Ward van Wanrooij <ward[AT]>
@ -3865,7 +3864,7 @@ DeCount <aatrade[AT]>
Andras Veres-Szentkiralyi <vsza[AT]>
Jakob Hirsch <jh.wireshark-bugzilla[AT]>
Роман Донченко <dpb[AT]>
Роман Донченко <billyjeans[AT]>
Evan Huus <eapache[AT]>
Tom Cook <tcook[AT]>
Tom Alexander <talexander[AT]>
@ -3926,6 +3925,323 @@ Robert Long <rlong[AT]>
James Lynch <lynch007[AT]>
Chidambaram Arunachalam <carunach[AT]>
From git log
Ronnie Sahlberg ronniesahlberg[AT]
Martin Kaiser wireshark[AT]
Michael Tüxen tuexen[AT]
Tomas Kukosa tomas.kukosa[AT]
Richard Sharpe realrichardsharpe[AT]
Peter Wu peter[AT]
João Valverde joao.valverde[AT]
Irene Rüngeler ruengeler[AT]
Roland Knall roland.knall[AT]
Anish Bhatt anish[AT]
Tom Haynes loghyr[AT]
Maarten Bezemer maarten.bezemer[AT]
David Ameiss dameiss[AT]
Marian Ďurkovič md[AT]
Juanjo Martin juanjo[AT]
AdrianSimionov daniel.simionov[AT]
Matthieu Texier matthieu[AT]
Luke Mewburn luke[AT]
Mikael Kanstrup mikael.kanstrup[AT]
Petr Gotthard petr.gotthard[AT]
dsrsupport eugene.exarevsky[AT]
Cal Turney cturney[AT]
Diederik de Groot ddegroot[AT]
D. Ulis daulis0[AT]
Jim Young jyoung[AT]
Kevin Bracey kevin.bracey[AT]
Gregor Beck gbeck[AT]
Mikhail Koreshkov drkor[AT]
Tatsuhiro Tsujikawa tatsuhiro.t[AT]
Aditya Jain aditya.jain[AT]
Birol Capa birol.capa[AT]
Cedric Izoard cedric.izoard[AT]
J. Bruce Fields bfields[AT]
Lukas Emersberger lukas.emersberger[AT]
Marko Hrastovec marko.hrastovec[AT]
Matthieu Coudron mattator[AT]
Philip Rosenberg-Watt p.rosenberg-watt[AT]
Sergey Avseyev sergey.avseyev[AT]
Chris Brandson chris.brandson[AT]
Darshan Nevgi[AT]
Jeffrey Smith whydoubt[AT]
Peter Ross peter.ross[AT]
Petr Gotthard petr.gotthard[AT]
Richard Sharpe rsharpe[AT]
Yan Burman yanb[AT]
anilkumar911 anilkumar911[AT]
Alex Badea abadea[AT]
Andreas Gruenbacher andreas.gruenbacher[AT]
Daniël van Eeden wireshark[AT]
Dmitry Bazhenov dima_b[AT]
Hanspeter Portner dev[AT]
Joseph Huffman jhuffman[AT]
Josip Medved jmedved[AT]
Michal Pazdera michal.pazdera[AT]
Rishi Dev Singh[AT]
Sylvain Munaut tnt[AT]
Tim Furlong tim.furlong[AT]
Weston Andros Adamson dros[AT]
Yann Lejeune ylejeune[AT]
Alexander Wetzel alexander.wetzel[AT]
Branislav Makan branislav.makan1994[AT]
Britt McKinley bmckinley[AT]
David Morsberger dave[AT]
DiablosOffens DiablosOffens[AT]
Ebben Aries exa[AT]
Edwin Groothuis edwin[AT]
Eugene Sukhodolin eugene[AT]
Gloria Pozuelo gloria.pozuelo[AT]
John A. Thacker johnthacker[AT]
Julien STAUB atsju2[AT]
Jérôme LAFORGE jerome.laforge[AT]
Nicolas S. Dade nic.dade[AT]
Paul Offord paul.offord[AT]
Simon Barber simon.barber[AT]
Wasim Abu Moch wasim[AT]
YFdyh000 yfdyh000[AT]
Christoph Schlosser christoph.schlosser[AT]
Claudius Zingerli czingerl[AT]
Cody Doucette doucette[AT]
Daniel Mack daniel[AT]
Dave Rigby daver[AT]
Florian Lohoff f[AT]
Mark Weel markweel[AT]
Matt Texier matthieu[AT]
Nathan Cole nath[AT]
Pascal Artho pascalartho[AT]
Pedro Jose Marron pjmarron[AT]
Peter Membrey peter[AT]
Ryan Mullen rmmullen[AT]
Shu Shen shu.shen[AT]
Tigran Mkrtchyan tigran.mkrtchyan[AT]
Vasil Velichckov vvvelichkov[AT]
Alexander Gärtner sphinxs1988[AT]
Alexander Stein alexanders83[AT]
Andreas Schultz aschultz[AT]
Christian Lamparter chunkeey[AT]
Christian Tellefsen chris-git[AT]
Christoph Jähnigen nuabaranda[AT]
Christopher Kilgour techie[AT]
David Ameiss david[AT]
Dhiru Kholia kholia[AT]
Dom Gifford Dominic.Gifford[AT]
Francois Schneider francois.schneider[AT]
Jamil Nimeh jnimeh[AT]
Jason Heimann jheimann[AT]
Jean Thomas jeanthomas[AT]
Jo Rueschel wireshark[AT]
Josef Baumgartner josef.baumgartner[AT]
Kevin Grigorenko kevin.grigorenko[AT]
Lotte Steenbrink lotte[AT]
Luca Melette luca[AT]
Luke Chou luke.chou[AT]
Marcel Essig marcel.essig[AT]
Marius mareko.paliga[AT]
Michael Oed michael.oed[AT]
Michele Baldessari michele[AT]
Mike Gerschefske msgersch2[AT]
Moeller, Thies thies.moeller[AT]
Moraney Jalil moraney.jalil[AT]
Noel Power noel.power[AT]
Owen Williams williams.owen[AT]
Pavel Karneliuk pavel_karneliuk[AT]
Pavlos Antoniou pant[AT]
Ray Gomez rayvincent.gomez[AT]
Richard Kuemmel kuemmel.ric[AT]
Robert Cragie robert.cragie[AT]
Shinjo Park peremen[AT]
Slava Shwartsman slavash[AT]
Sven Eckelmann sven[AT]
Thies Moeller thies.moeller[AT]
Tobias Brunner tobias[AT]
Vikhyat Umrao vumrao[AT]
Vikram Hegde vikram.h[AT]
Vincent Helfre vincent.helfre[AT]
Vincenzo Reale smart2128[AT]
Volker Lendecke vl[AT]
Warren Moxam warrenmptgrey[AT]
anonsvn anonsvn[AT]localhost
Дмитрий Цветцих dmitrycvet[AT]
Adam Goldman adam.goldman[AT]
Adam Pridgen adam.pridgen[AT]
Adrian Simionov daniel.simionov[AT]
Adrian-Ken Rueegsegger ken[AT]
Alan Partis alpartis[AT]
Alex Tessmer dev[AT]
AlexL loginov.alex.valer[AT]
Ambarish Malpani ambarish[AT]
Amine Kherbouche amine.kherbouche[AT]
Andreas Leibold andreas.leibold[AT]
Andreas Stieger andreas.stieger[AT]
Andreas Urke arurke[AT]
Andrei Cipu acipu[AT]
Andrew Chernyh andrew.chernyh[AT]
Andrew Hoag andrew.hoag[AT]
Andy Ling Andy.Ling[AT]
Andy Ling andy.ling[AT]
Anndy Ke anndymaktub[AT]
Anthony Coddington anthony.coddington[AT]
Anton Thomasson anton.thomasson[AT]
Arnd Hannemann arnd[AT]
Artur Nowosielski artnowo[AT]
Basil addremover[AT]
Bastien Bailly babassbailly[AT]
Ben Burwell bburwell[AT]
Ben Fox-Moore ben.foxmoore[AT]
Benjamin Hesmans benjamin.hesmans[AT]
Benjamin Roch benjamin.roch[AT]
Bradford Boyle bradford.d.boyle[AT]
Cathy Yang Y cathy.y.yang[AT]
Cedric Izoard cedric.izoard[AT]
Cenk Gündoğan cnkgndgn[AT]
Charles Nepveu charles.nepveu[AT]
Chris Dunlop chris.dunlop3[AT]
Christian M. Amsüss chrysn[AT]
Christoph Burger-Scheidlin mail[AT]
Christopher Maynard Christopher.Maynard[AT]
Chuan He bupthc[AT]
Chugzilla chugzilla77[AT]
Chun-Yeow Yeoh yeohchunyeow[AT]
Cédric Delmas cedricde[AT]
Daniel Stenberg daniel[AT]
Dave Tapuska dtapuska[AT]
David Arnold d[AT]
David Creswick dcrewi[AT]
David Tapuska dave[AT]
Denis Janssen janssend[AT]
Dhananjay Patki dhpatki[AT]
Didier Arenzana darenzana[AT]
Doug Brown doug[AT]
Edward Dao edmailbox[AT]
Etienne Millon etienne[AT]
Eugene Adell eugene.adell[AT]
Fabian Raetz fabian.raetz[AT]
Fabrizio Demaria fabrizio.demaria[AT]
Ganesh Nawsupe ganesh991[AT]
Garming Sam garming[AT]
Gergely Nagy ngg[AT]
Gregor Jasny gjasny[AT]
Gregor Miernik gregor.miernik[AT]
Guy Davies aguydavies[AT]
Herwin Weststrate herwin[AT]
Hiroaki KAWAI hiroaki.kawai[AT]
Ilya Gavrilov[AT]
Ionut Ceausu ionut.ceausu[AT]
JC Wren jcwren[AT]
James Coleman jamesc[AT]
Jan Kaisrlik j.kaisrlik[AT]
Jan Seda hodor[AT]
Jan-Hendrik Bolte jabolte[AT]
Jeroen Roovers jer[AT]
Jeroen Sack jeroen[AT]
Johan Wahl johan.wahl[AT]
John Miner optommp[AT]
Jonas Falkevik jonas.falkevik[AT]
Jorge Power jpower[AT]
João Valverde j[AT]
Juan Jose Martin Carrascosa juanjo[AT]
Juan Matias jmrepetti[AT]
Jun Wang sdn_app[AT]
JustinKu jiunrong[AT]
Jörg Mayer jmayer[AT]
Krishna Chaitanya chaitanya.mgit[AT]
Lars Sundström lars.x.sundstrom[AT]
Lasse Luttermann Poulsen lasse.luttermann[AT]
Laurenz Kamp laurenz.kamp[AT]
Lev Stipakov lstipakov[AT]
Malcolm Walters malcolm.walters[AT]
Marc Bevand mbevand[AT]
Marc Fournier marc.fournier[AT]
Mark Cunningham launchpad[AT]
MarkPhillips mark.s.phillips[AT]
Martin Kaiser martin.kaiser[AT]
Martin Tibensky martin.tibensky[AT]
Martin Tibenský martin.tibensky[AT]
Matej Košík 5764c029b688c1c0d24a2e97cd764f[AT]
Micha Reiser
Michael Adam obnox[AT]
Michael McConville mmcco[AT]
Michael Pergament mpergament[AT]
Michal Privoznik miso.privoznik[AT]
Michal Privoznik mprivozn[AT]
Mike Frysinger vapier[AT]
Miltos Patsiouras mipatsio[AT]
Moshe Kaplan me[AT]
Nick Bedbury npbedbur[AT]
Nick Carter ncarter100[AT]
Nicolas Cavallari nicolas.cavallari[AT]
Nils Ohlmeier github[AT]
Olaf Bergmann bergmann[AT]
Olga Kornievskaia kolga[AT]
Oren Koler clicker78[AT]
Orgad Shaneh orgads[AT]
Oscar Gonzalez de Dios oscar.gonzalezdedios[AT]
Osman Sakalla osman.sakalla[AT]
Patrice Fournier patrice.fournier[AT]
Patrick MacArthur pmacarth[AT]
Patrick Servello patrick.servello[AT]
Paul Emge paul.emge[AT]
Pavel Moravec mgr.pavel[AT]
Pavel Strnad pavel_strnad[AT]
Peng Li seudut[AT]
Peng Tao tao.peng[AT]
Peter Palúch Peter.Paluch[AT]
Petr Štetiar petr.stetiar[AT]
Philipp Hancke fippo[AT]
Ricardo Cristian Ramirez r.cristian.ramirez[AT]
Rich Coe richcoe2[AT]
Robert Beardsworth rob_beardsworth[AT]
Robert Cragie robert.cragie[AT]
Robert P tehownt[AT]
Roman Leonhartsberger ro.leonhartsberger[AT]
Roman Volkov volkoff_roman[AT]
Russel Howe russel[AT]
Sebastian Kloeppel sk[AT]
Sebastian Schildt sebastian[AT]
Selva Kumar v.selvamuthukumar[AT]
Selvamegala sselvamegala[AT]
Sergio Moreno Mozota sergio.morenomozota[AT]
Shekhar Chandra ranushekhar[AT]
Shoichi Sakane wireshark-shoichi[AT]
Simon Barber sbarber[AT]
Simon Zhong szhong.jnpr[AT]
Soumya Koduri skoduri[AT]
Steev Klimaszewski threeway[AT]
Stefan Doehla stefan.doehla[AT]
Stefan Pöschel github[AT]
Stephan Kappertz[AT]
Stephane Bryant[AT]
Stephen Donnelly stephen.donnelly[AT]
Sunil Mushran sunil.mushran[AT]
Tibensky tibensky233[AT]
Tim (Thanh) Nguyen tnnguyen[AT]
Timo Warns timow+github[AT]DiningPhilosopher.DE
Timothy Geiser slimshady007[AT]
Tobias Stoeckmann tobias[AT]
Trond Myklebust trond.myklebust[AT]
Umberto Corponi umberto.corponi[AT]
Victor Voronkov victor.voronkov[AT]
Vik vkp129+ubuntu[AT]
Vikram Hegde vikram.h[AT]
Ville Skyttä ville.skytta[AT]
Vladimir Kondratiev qca_vkondrat[AT]
Weston Schmidt weston_schmidt[AT]
Xavier Brouckaert xabrouck[AT]
Yasuyuki Tanaka yatch[AT]
cff339 cff339[AT]
glores gloria.pozuelo[AT]
kardam netkardam[AT]
kkoizumi kkoizumi46[AT]
Øyvind Rønningstad ronningstad[AT]
Dan Lasley <dlasley[AT]> gave permission for his
dumpit() hex-dump routine to be used.

AUTHORS.src Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2696,6 +2696,14 @@ add_custom_target(test-sh
-P ${CMAKE_SOURCE_DIR}/cmake/modules/GenerateTestSh.cmake
DEPENDS ${CMAKE_SOURCE_DIR}/cmake/modules/GenerateTestSh.cmake
gen-authors ALL
COMMAND git shortlog -sne | cut -c8- > ${CMAKE_SOURCE_DIR}/AUTHORS.git
set_target_properties(test-sh PROPERTIES FOLDER "Tests")

View File

@ -1682,3 +1682,8 @@ if HAVE_DOXYGEN
rm -f
zip -rq wsar_html
#Generate list of AUTHORS (Name + E-Mail) sort by number of commit
git shortlog -sne | cut -c8- > $(top_srcdir)/AUTHORS.git
$(PERL) $(top_srcdir)/tools/ $(top_srcdir)/AUTHORS.src $(top_srcdir)/AUTHORS.git > $(top_srcdir)/AUTHORS

tools/ Normal file
View File

@ -0,0 +1,197 @@
my $debug = 0;
# 0: off
# 1: specific debug
# 2: full debug
# Generate the AUTHORS file combining existing AUTHORS file with
# git commit log.
# Usage: <original AUTHORS file> <output of git shortlog>
# Copyright 2016 Michael Mann (see AUTHORS file)
# Wireshark - Network traffic analyzer
# By Gerald Combs <>
# Copyright 1998 Gerald Combs
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use warnings;
use strict;
use Getopt::Long;
my $state = "";
my %contributors = ();
my $is_contributing = 0;
my $crlf_find = "\n";
my $crlf_replace = "\r\n";
my $header = "
Original Author
-------- ------
Gerald Combs <gerald[AT]>
my $trailer = "
Dan Lasley <dlasley[AT]> gave permission for his
dumpit() hex-dump routine to be used.
Mattia Cazzola <mattiac[AT]> provided a patch to the
hex dump display routine.
We use the exception module from Kazlib, a C library written by
Kaz Kylheku <kaz[AT]>. Thanks go to him for
his well-written library. The Kazlib home page can be found at
We use Lua BitOp, written by Mike Pall, for bitwise operations
on numbers in Lua. The Lua BitOp home page can be found at
Henrik Brix Andersen <brix[AT]> gave permission for his
webbrowser calling routine to be used.
Christophe Devine <c.devine[AT]> gave permission for his
SHA1 routines to be used.
snax <snax[AT]> gave permission to use his(?) weak key
detection code from Airsnort.
IANA gave permission for their port-numbers file to be used.
We use the natural order string comparison algorithm, written by
Martin Pool <mbp[AT]>.
Emanuel Eichhammer <support[AT]> granted permission
to use QCustomPlot.
my $git_log_text = "
From git log
# Perl trim function to remove whitespace from the start and end of the string
sub trim($)
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
sub parse_author_name {
my $full_name = $_[0];
if ($full_name =~ /^([\w\.\-\'\x80-\xff]+(\s*[\w+\.\-\'\x80-\xff])*)\s+<([^>]*)>/) {
#Make an exception for Gerald because he's part of the header
if ($3 ne "gerald[AT]") {
$contributors{$3} = $1;
print "$full_name\n";
} elsif ($full_name =~ /^([\w\.\-\'\x80-\xff]+(\s*[\w+\.\-\'\x80-\xff])*)\s+\(/) {
$contributors{"<no_email>"} = $1;
print "$full_name\n";
sub parse_git_name {
my $full_name = $_[0];
my $name;
my $find = "\@";
my $replace = "[AT]";
my $email;
if ($full_name =~ /^([^<]*)\s*<([^>]*)>/) {
$name = $1;
#Convert real email address to "spam proof" one
$email = $2;
$email =~ s/$find/$replace/g;
if (!exists($contributors{ $email })) {
#Make an exception for Gerald because he's part of the header
if ($email ne "gerald[AT]") {
print "$name\t\t$email\r\n";
# ---------------------------------------------------------------------
$header =~ s/$crlf_find/$crlf_replace/g;
print $header;
open( my $author_fh, '<', $ARGV[0] ) or die "Can't open $ARGV[0]: $!";
while ( my $line = <$author_fh> ) {
chomp $line;
last if ($line =~ "Acknowledgements");
if ($line =~ "Contributors") {
$is_contributing = 1;
} elsif ($is_contributing == 0) {
if ($line =~ /([^\{]*)\{/) {
$state = "s_in_bracket";
} elsif ($state eq "s_in_bracket") {
if ($line =~ /([^\}]*)\}/) {
print "$line\n";
$state = "";
} else {
print "$line\n";
} elsif ($line =~ /</) {
} elsif ($line =~ "(e-mail address removed at contributor's request)") {
} else {
print "$line\n";
close $author_fh;
$git_log_text =~ s/$crlf_find/$crlf_replace/g;
print $git_log_text;
open( my $git_author_fh, '<', $ARGV[1] ) or die "Can't open $ARGV[1]: $!";
while ( my $git_line = <$git_author_fh> ) {
chomp $git_line;
close $git_author_fh;
$trailer =~ s/$crlf_find/$crlf_replace/g;
print $trailer;