]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
maint: generate much of the THANKS file
authorJim Meyering <meyering@redhat.com>
Mon, 17 Nov 2008 11:05:27 +0000 (12:05 +0100)
committerJim Meyering <meyering@redhat.com>
Sat, 1 Jan 2011 09:56:49 +0000 (10:56 +0100)
Before this change, we had a tendency to manually list each
contributor's name in THANKS.  Now, each commit "Author" is
included in the generated THANKS file automatically, and most
of the old THANKS file is now a template, THANKS.in.
We'll still have to manually list the names of people who report
problems without a usable patch.

* THANKS.in: New file, derived from THANKS, but removing names of
those who are listed as git log 'Author:'s.
* THANKS: Remove file.
* thanks-gen: New file.
* Makefile.am (THANKS): New rule.
(EXTRA_DIST): Add .mailmap, THANKS.in and thanks-gen.
* .gitignore: Add THANKS and THANKS-to-translators.
* .mailmap: Unify on single address and name-spelling per contributor.

.gitignore
.mailmap
Makefile.am
THANKS.in [moved from THANKS with 92% similarity]
thanks-gen [new file with mode: 0755]

index cd73b9a166b45071c1b21ba5ab5cf9a975545e14..7fead3d49abd44d987dba22e986ec30251a05a80 100644 (file)
@@ -81,3 +81,5 @@ ID
 Makefile
 Makefile.in
 TAGS
+THANKS
+THANKS-to-translators
index d4fcef5c28c7a70cc6464c0ef8f344ce52c442ee..e3d7a2701a967fc0928562e64c838c022e943cf7 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -1,12 +1,31 @@
 # Map git author names and email addresses to canonical/preferred form.
 <jim@meyering.net> <meyering@iou.iou>
+<jim@meyering.net> <meyering@redhat.com>
 <jim@meyering.net> <meyering@rho.meyering.net>
 <jim@meyering.net> <meyering@vm.meyering.net.localdomain>
-Paul R. Eggert <eggert@cs.ucla.edu> <eggert@penguin.cs.ucla.edu>
-Paul R. Eggert <eggert@cs.ucla.edu> <eggert@CS.UCLA.EDU>
+Paul Eggert <eggert@cs.ucla.edu> <eggert@penguin.cs.ucla.edu>
+Paul Eggert <eggert@cs.ucla.edu> <eggert@CS.UCLA.EDU>
+<eggert@cs.ucla.edu> <eggert@twinsun.com>
+
 # Evan's two changes listed my email address.
 Evan Hunt <ethanol@armory.com> Evan Hunt <jim@meyering.net>
+
 <P@draigBrady.com> <P@draigBrady.com  (trivial change)>
-Pádraig Brady <p@draigbrady.com> <p@draigBrady.com>
+Pádraig Brady <p@draigBrady.com> <P@draigBrady.com>
 <chen.guo.0625@gmail.com> <chenguo4@yahoo.com>
 <chen.guo.0625@gmail.com> <chenguo4@ucla.edu>
+<schwab@linux-m68k.org> <schwab@suse.de>
+<aurel32@debian.org> <aurelien@aurel32.net>
+<bob@proulx.com> <rwp@fc.hp.com>
+<bkorb@gnu.org> <bkorb@veritas.com>
+<bruno@clisp.org> <haible@clisp.cons.org>
+<eblake@redhat.com> <ebb9@byu.net>
+<jrv@debian.org> <jrvz@comcast.net>
+<dave.anglin@nrc.ca> <dave@hiauly1.hia.nrc.ca>
+<psfales@alcatel-lucent.com> <psfales@lucent.com>
+
+# Prefer spelled-out middle name and its address.
+Arne Henrik Juul <arnej@imf.unit.no> Arne H. Juul <arnej@solan.unit.no>
+
+# Had email as name.
+Dan Jacobson <jidanni@jidanni.org> jidanni@jidanni.org <jidanni@jidanni.org>
index b61229d24ceea33184e483403147c947b284f566..4fc6e8e216ef4afb911234119abba0fd2f270188 100644 (file)
@@ -68,9 +68,11 @@ syntax_check_exceptions =            \
 EXTRA_DIST =                           \
   $(changelog_etc)                     \
   $(syntax_check_exceptions)           \
+  .mailmap                             \
   .prev-version                                \
   .version                             \
   .vg-suppressions                     \
+  THANKS.in                            \
   THANKS-to-translators                        \
   THANKStt.in                          \
   bootstrap                            \
@@ -79,7 +81,8 @@ EXTRA_DIST =                          \
   cfg.mk                               \
   dist-check.mk                                \
   gl/modules/getloadavg.diff           \
-  maint.mk
+  maint.mk                             \
+  thanks-gen
 
 ALL_RECURSIVE_TARGETS += install-root
 install-root:
@@ -152,3 +155,25 @@ check-ls-dircolors:
          |sed -n '/^  *"/p'|tr , '\n'|sed 's/^  *//'           \
          |sed -n 's/^"\(..\)"/\1/p'|sort -u);                  \
        test "$$dc" = "$$ls"
+
+# Sort in traditional ASCII order, regardless of the current locale;
+# otherwise we may get into trouble with distinct strings that the
+# current locale considers to be equal.
+ASSORT = LC_ALL=C sort
+
+# Extract all lines up to the first one starting with "##".
+prologue = perl -ne '/^\#\#/ and exit; print' $(srcdir)/THANKS.in
+
+THANKS: THANKS.in Makefile.am .mailmap thanks-gen .version
+       $(AM_V_GEN)                                                     \
+       {                                                               \
+         $(prologue); echo;                                            \
+         { perl -ne '/^$$/.../^$$/ and print' $(srcdir)/THANKS.in      \
+             | grep -v '^$$' | perl -pe 's/  +/\0/';                   \
+           git log --pretty=format:'%aN%x00%aE'                        \
+             | $(ASSORT) -u;                                           \
+         } | $(srcdir)/thanks-gen                                      \
+           | LC_ALL=en_US.UTF-8 sort -f;                               \
+         echo;                                                         \
+         printf ';; %s\n' 'Local Variables:' 'coding: utf-8' End:;     \
+       } > $@-t && mv $@-t $@
similarity index 92%
rename from THANKS
rename to THANKS.in
index 311fa5b4e341846b507fd3e0c4a619728c768416..b475eef73aaca2747ec9bf3719a9c334097dbd61 100644 (file)
--- a/THANKS
+++ b/THANKS.in
@@ -1,14 +1,19 @@
 These people have contributed to the GNU coreutils (formerly, the fileutils,
 textutils, and/or sh-utils packages).  Some have reported problems, others
 have contributed improvements to the documentation, actual code, and even
-complete programs.  Those contributions are described in the ChangeLog
-files.  If your name has been left out, if you'd rather not be listed,
-or if you'd prefer a different address be used, please send a note to
-the bug-report mailing list (as seen on last line of e.g., cp --help).
+complete programs.  Those contributions are described in the version control
+logs and ChangeLog files.  If your name has been left out, if you'd rather
+not be listed, or if you'd prefer a different address be used, please send a
+note to the bug-report mailing list (as seen at end of e.g., cp --help).
+##
+## There is no need to list here any name that appears as an Author in
+## "git log" output.  Those are automatically added when this template
+## is used to generate the THANKS file.  Note that numerous people listed
+## here would have been listed as commit authors if we had been using git
+## for version control when they contributed.
 
 ???                                 kytek@cybercomm.net
 A Costa                             agcosta@gis.net
-Aaron Burgemeister                  dajoker@gmail.com
 Aaron Hawley                        ashawley@uvm.edu
 Achim Blumensath                    blume@corona.oche.de
 Adam Jimerson                       vendion@charter.net
@@ -39,12 +44,10 @@ Andreas Frische                     andreasfrische@gmail.com
 Andreas Gruenbacher                 ag@bestbits.at
 Andreas Jaeger                      jaeger@gnu.org
 Andreas Luik                        luik@isa.de
-Andreas Schwab                      schwab@linux-m68k.org
 Andreas Stolcke                     stolcke@ICSI.Berkeley.EDU
 Andrei Gaponenko                    andr@triumf.ca
 Andres Soolo                        andres@soolo.matti.ee
 Andrew Burgess                      aab@cichlid.com
-Andrew Church                       achurch@achurch.org
 Andrew Dalke                        dalke@bioreason.com
 Andrew Fabbro                       andrew@fabbro.org
 Andrew Pham                         andpha@us.ibm.com
@@ -56,15 +59,12 @@ Anthony Thyssen                     anthony@griffith.edu.au
 Antonio Rendas                      ajrendas@yahoo.com
 Ariel Faigon                        ariel@cthulhu.engr.sgi.com
 Arjan Opmeer                        arjan.opmeer@gmail.com
-Arne H. Juul                        arnej@solan.unit.no
 Arne Henrik Juul                    arnej@imf.unit.no
 Arnold Robbins                      arnold@skeeve.com
 Arthur Pool                         pool@commerce.uq.edu.au
 Arun Sharma                         arun.sharma@intel.com
 Arvind Autar                        Autar022@planet.nl
-Assaf Gordon                        assafgordon@gmail.com
 Augey Mikus                         mikus@dqc.org
-Aurelien Jarno                      aurel32@debian.org
 Austin Donnelly                     Austin.Donnelly@cl.cam.ac.uk
 Axel Kittenberger                   Anshil@gmx.net
 Barry Kelly                         http://barrkel.blogspot.com/
@@ -73,7 +73,6 @@ Ben Elliston                        bje@air.net.au
 Ben Harris                          bjh21@netbsd.org
 Bengt Martensson                    bengt@mathematik.uni-Bremen.de
 Benjamin Cutler                     cutlerbc@simla.colostate.edu
-Benno Schulenberg                   bensberg@justemail.net
 Bernard Giroud                      bernard.giroud@creditlyonnais.ch
 Bernd Eckenfels                     ecki@debian.org
 Bernd Leibing                       bernd.leibing@rz.uni-ulm.de
@@ -88,17 +87,13 @@ Bill Brelsford                      wb@k2di.net
 Bill Peters                         peters@gaffel.as.arizona.edu
 Bjorn Helgaas                       helgaas@rsn.hp.com
 Bob McCracken                       kerouac@ravenet.com
-Bob Proulx                          rwp@fc.hp.com
 Branden Robinson                    branden@necrotic.deadbeast.net
 Brendan O'Dea                       bod@compusol.com.au
 Brian Kimball                       bfk@footbag.org
 Brian M. Carlson                    sandals@crustytoothpaste.ath.cx
 Brian Silverman                     bsilverman@conceptxdesign.com
 Brian Youmans                       3diff@gnu.org
-Bruce Korb                          bkorb@veritas.com
 Bruce Robertson                     brucer@theodolite.dyndns.org
-Bruno Haible                        haible@clisp.cons.org
-C de-Avillez                        hggdh2@gmail.com
 Carl Johnson                        carlj@cjlinux.home.org
 Carl Lowenstein                     cdl@mpl.UCSD.EDU
 Carl Roth                           roth@urs.us
@@ -106,7 +101,6 @@ Carlos Canau                        Carlos.Canau@relay.puug.pt
 Charles Karney                      karney@pppl.gov
 Charles Randall                     crandall@matchlogic.com
 Chas. Owens                         chas.owens@gmail.com
-Chen Guo                            chen.guo.0625@gmail.com
 Chip Salzenberg                     chip@valinux.com
 Chris Clayton                       chris2553@googlemail.com
 Chris Faylor                        cgf@cygnus.com
@@ -124,7 +118,6 @@ Christophe LYON                     christophe.lyon@st.com
 Chuck Hedrick                       hedrick@klinzhai.rutgers.edu
 Clark Morgan                        cmorgan@aracnet.com
 Clement Wang                        clem.wang@overture.com
-Cliff Miller                        cbm@whatexit.org
 Colin Plumb                         colin@nyx.net
 Colin Watson                        cjw44@riva.ucam.org
 Collin Rogowski                     collin@rogowski.de
@@ -134,11 +127,8 @@ Cyril Bouthors                      cyril@bouthors.org
 Dale Scheetz                        dwarf@polaris.net
 Dameon G. Rogers                    dgr03@uark.edu
 Dan Hagerty                         hag@gnu.ai.it.edu
-Dan Hipschman                       dsh@linux.ucla.edu
-Dan Jacobson                        jidanni@jidanni.org
 Dan Pascu                           dan@services.iiruc.ro
 Daniel Bergstrom                    noa@melody.se
-Daniel Dunbar                       ddunbar@stanford.edu
 Daniel P. Berrangé                  berrange@redhat.com
 Dániel Varga                        danielv@axelero.hu
 Danny Levinson                      danny.levinson@overture.com
@@ -146,7 +136,6 @@ Darrel Francis                      d.francis@cheerful.com
 Darren Salt                         ds@youmustbejoking.demon.co.uk
 Dave Beckett                        dajobe@dajobe.org
 David Alan Gilbert                  gilbertd@treblig.org
-David Bartley                       dtbartle@csclub.uwaterloo.ca
 David Dyck                          dcd@tc.fluke.COM
 David Eisner                        cradle@umd.edu
 David Flynn                         dav@chess.plus.com
@@ -167,14 +156,12 @@ Dick Streefland                     dick_streefland@tasking.com
 Dirk Lattermann                     dlatt@t-online.de
 Dirk-Jan Faber                      djfaber@snow.nl
 Dmitry Rutsky                       rutsky@school.ioffe.rssi.ru
-Dmitry V. Levin                     ldv@altlinux.org
 Don Parsons                         dparsons@synapse.kent.edu
 Donni Erpel                         donald@appc11.gsi.de
 Doug Coleman                        coleman@iarc1.ece.utexas.edu
 Doug McLaren                        dougmc@comco.com
 Dragos Harabor                      dharabor@us.oracle.com
 Duncan Roe                          duncanr@optimation.com.au
-Ed Avis                             ed@membled.com
 Edward Welbourne                    eddy@opera.com
 Edzer Pebesma                       Edzer.Pebesma@rivm.nl
 Egmont Koblinger                    egmont@uhulinux.hu
@@ -182,18 +169,14 @@ Eirik Fuller                        eirik@hackrat.com
 Eivind                              eivindt@multinet.no
 Elbert Pol                          elbert.pol@gmail.com
 Eli Zaretskii                       eliz@is.elta.co.il
-Elias Pipping                       pipping@gentoo.org
 Emile LeBlanc                       leblanc@math.toronto.edu
 Emmanuel Lacour                     elacour@home-dn.net
-Erik Auerswald                      auerswal@unix-ag.uni-kl.de
 Eric Backus                         ericb@lsid.hp.com
-Eric Blake                          ebb9@byu.net
 Eric G. Miller                      egm2@jps.net
 Eric Pemente                        pemente@northpark.edu
 Eric S. Raymond                     esr@snark.thyrsus.com
 Erik Bennett                        bennett@cvo.oneworld.com
 Erik Corry                          erik@kroete2.freinet.de
-Evan Hunt                           ethanol@armory.com
 Felix Lee                           flee@teleport.com
 Felix Rauch Valenti                 frauch@cse.unsw.edu.au
 Ferdinand                           fw@scenic.mine.nu
@@ -268,10 +251,8 @@ James Antill                        jmanti%essex.ac.uk@seralph21.essex.ac.uk
 James Lemley                        James.Lemley@acxiom.com
 James Hunt                          jamesodhunt@hotmail.com
 James Ralston                       ralston@pobox.com
-James R. Van Zandt                  jrvz@comcast.net
 James Sneeringer                    jvs@ocslink.com
 James Tanis                         jtt@soscorp.com
-James Youngman                      jay@gnu.org
 Jamie Lokier                        jamie@imbolc.ucc.ie
 Jamie McClelland                    jm@mayfirst.org
 Jan Engelhardt                      jengelh@medozas.de
@@ -299,13 +280,11 @@ Jim Dennis                          jimd@starshine.org
 Joakim Rosqvist                     dvljrt@cs.umu.se
 Jochen Hein                         jochen@jochen.org
 Joe Orton                           joe@manyfish.co.uk
-Joel E. Denny                       jdenny@clemson.edu
 Joerg Sonnenberger                  joerg@britannica.bec.de
 Joey Hess                           joeyh@debian.org
 Johan Boule                         bohan@bohan.dyndns.org
 Johan Danielsson                    joda@pdc.kth.se
 John Bley                           jbb6@acpub.duke.edu
-John David Anglin                   dave.anglin@nrc.ca
 John Gatewood Ham                   zappaman@alphabox.compsci.buu.ac.th
 John Gotts                          jgotts@umich.edu
 John Kendall                        kendall@capps.com
@@ -344,7 +323,6 @@ Keith Owens                         kaos@audio.apana.org.au
 Keith Thompson                      kst@cts.com
 Ken Pizzini                         kenp@halcyon.com
 Kevin Mudrick                       kmudrick@healthmarketscience.com
-Kim Hansen                          kim@i9.dk
 Kirk Kelsey                         kirk.kelsey@0x4b.net
 Kristin E Thomas                    kristint@us.ibm.com
 Kjetil Torgrim Homme                kjetilho@ifi.uio.no
@@ -410,7 +388,6 @@ Matthew Clarke                      Matthew_Clarke@mindlink.bc.ca
 Matthew S. Levine                   mslevine@theory.lcs.mit.edu
 Matthew Smith                       matts@bluesguitar.org
 Matthew Swift                       swift@alum.mit.edu
-Matthew Woehlke                     mw_triad@users.sourceforge.net
 Matthias Urlichs                    smurf@noris.de
 Matti Aarnio                        matti.aarnio@zmailer.org
 Mathias Brodala                     info@noctus.net
@@ -429,9 +406,7 @@ Michael J. Croghan                  mcroghan@usatoday.com
 Michael McFarland                   sidlon@yahoo.com
 Michael McLagan                     mmclagan@invlogic.com
 Michael Piefel                      piefel@informatik.hu-berlin.de
-Michael Speer                       knomenet@gmail.com
 Michael Steffens                    michael.steffens@s.netic.de
-Michael Stone                       mstone@debian.org
 Michael Stutz                       stutz@dsl.org
 Michael van Elst                    mlelstv@dev.de.cw.net
 Michael Veksler                     mveksler@techunix.technion.ac.il
@@ -440,11 +415,9 @@ Michal Politowski                   mpol@charybda.icm.edu.pl
 Michal Svec                         msvec@suse.cz
 Michel Robitaille                   robitail@IRO.UMontreal.CA
 Michiel Bacchiani                   bacchian@raven.bu.edu
-Mikael Magnusson                    mikachu@gmail.com
 Mike Castle                         dalgoda@ix.netcom.com
 Mike Coleman                        mkc@mathdogs.com
 Mike Jetzer                         mjetzer@mke.catalystwms.com
-Mike Frysinger                      vapier@gentoo.org
 Mikko Tuumanen                      m@sorvankyla.yok.utu.fi
 Mikulas Patocka                     mikulas@artax.karlin.mff.cuni.cz
 Miles Bader                         miles@gnu.ai.mit.edu
@@ -472,10 +445,8 @@ Olivier Fourdan                     ofourdan@redhat.com
 Ørn E. Hansen                       oehansen@daimi.aau.dk
 Oskar Liljeblad                     osk@hem.passagen.se
 Otavio Salvador                     otavio@ossystems.com.br
-Pádraig Brady                       P@draigBrady.com
 Patrick Mauritz                     oxygene@studentenbude.ath.cx
 Paul D. Smith                       psmith@gnu.org
-Paul Eggert                         eggert@twinsun.com
 Paul Ghaleb                         paul.ghaleb@st.com
 Paul Jarc                           prj@po.cwru.edu
 Paul Nevai                          nevai@ops.mps.ohio-state.edu
@@ -490,17 +461,14 @@ Per Starbäck                        starback@stp.lingfil.uu.se
 Peter Breitenlohner                 peb@mppmu.mpg.de
 Peter Dyballa                       peter_dyballa@web.de
 Peter Eriksson                      peter@ifm.liu.se
-Peter Fales                         psfales@lucent.com
 Peter Horst                         peter@ointment.org
 Peter Moulder                       reiter@netspace.net.au
-Peter O'Gorman                      bug-coreutils@mlists.thewrittenword.com
 Peter Samuelson                     psamuels@sampo.creighton.edu
 Peter Seebach                       seebs@taniemarie.solon.com
 Petr Uzel                           petr.uzel@suse.cz
 Petter Reinholdtsen                 pere@hungry.com
 Phelippe Neveu                      pneveu@pcigeomatics.com
 Phil Richards                       phil.richards@vf.vodafone.co.uk
-Philip Rowlands                     phr@doc.ic.ac.uk
 Philippe De Muyter                  phdm@macqel.be
 Philippe Schnoebelen                Philippe.Schnoebelen@imag.fr
 Phillip Jones                       mouse@datastacks.com
@@ -512,12 +480,9 @@ Prashant TR                         tr@eth.net
 Priit Jõerüüt                       jemm4jemm@yahoo.com
 Rainer Orth                         ro@TechFak.Uni-Bielefeld.DE
 Ralf W. Stephan                     stephan@tmt.de
-Ralf Wildenhues                     Ralf.Wildenhues@gmx.de
 Ralph Loader                        loader@maths.ox.ac.uk
 Raul Miller                         moth@magenta.com
 Raúl Núñez de Arenas Coronado       raul@pleyades.net
-Reuben Thomas                       rrt@sc3d.org
-Yang Ren                            ryang@redhat.com
 Richard A Downing                   richard.downing@bcs.org.uk
 Richard Braakman                    dark@xs4all.nl
 Richard Dawe                        rich@phekda.freeserve.co.uk
@@ -560,7 +525,6 @@ Solar Designer                      solar@owl.openwall.com
 Stanislav Ievlev                    inger@altlinux.ru
 Stavros Passas                      stabat@ics.forth.gr
 Stéphane Chazelas                   Stephane_CHAZELAS@yahoo.fr
-Stéphane Raimbault                  stephane.raimbault@makina-corpus.com
 Stephen Depooter                    sbdep@myrealbox.com
 Stephen Eglen                       eglen@pcg.wustl.edu
 Stephen Gildea                      gildea@stop.mail-abuse.org
@@ -577,13 +541,11 @@ Steven P Watson                     steven@magelico.net
 Stuart Citrin                       ctrn3e8@gmail.com
 Stuart Kemp                         skemp@peter.bmc.com
 Stuart Shelton                      stuart@shelton.me
-Sven Joachim                        svenjoac@gmx.de
 Szakacsits Szabolcs                 szaka@sienet.hu
 Tadayoshi Funaba                    tadf@kt.rim.or.jp
 TAKAI Kousuke                       takai@vlsi.kuee.kyoto-u.ac.jp
 Theodore Ts'o                       tytso@rsts-11.mit.edu
 The Wanderer                        inverseparadox@comcast.net
-Theodoros V. Kalamatianos           nyb@users.sourceforge.net
 Thomas Bushnell                     thomas@gnu.ai.mit.edu
 Thomas Goerlich                     thomas@schnappmatik.de
 Thomas Hood                         jdthood@yahoo.co.uk
@@ -597,8 +559,6 @@ Tim Mooney                          mooney@dogbert.cc.ndsu.NoDak.edu
 Tim Ryan                            Tim_Ryan@bnz.co.nz
 Tim Smithers                        mouse@dmouse.com.au
 Tim Waugh                           twaugh@redhat
-Tobias Quathamer                    toddy@debian.org
-Tobias Stoeckmann                   tobias@bugol.de
 Toby Peterson                       toby@opendarwin.org
 Todd A. Jacobs                      tjacobs@codegnome.org
 Tom Fitzhenry                       tom@tom-fitzhenry.me.uk
@@ -644,10 +604,10 @@ Wis Macomson                        wis.macomson@intel.com
 Wojciech Purczynski                 cliph@isec.pl
 Wolfram Kleff                       kleff@cs.uni-bonn.de
 Won-kyu Park                        wkpark@chem.skku.ac.kr
+Yang Ren                            ryang@redhat.com
 Yanko Kaneti                        yaneti@declera.com
 Yann Dirson                         dirson@debian.org
 Yutaka Amanai                       yasai-itame1942@jade.plala.or.jp
-Zvi Har'El                          rl@math.technion.ac.il
 
 ;; Local Variables:
 ;; coding: utf-8
diff --git a/thanks-gen b/thanks-gen
new file mode 100755 (executable)
index 0000000..f1c11b3
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/perl -nl
+# Use Perl's multi-byte alignment code, via sprintf, while
+# performing a rudimentary check for duplicate names and
+# removing duplicate name,email pairs.
+use Encode;
+
+BEGIN { my (%seen, %name) }
+
+chomp;
+my ($name, $email) = split '\0', decode ('UTF-8', $_);
+
+$seen{$name}++
+  and warn "$0: THANKS.in: duplicate name: $name\n";
+
+print encode ('UTF-8', sprintf ('%-36s', $name)), $email
+  unless $seen{"$name\0$email"}++;