{"thread":{"id":"43702","subject":"[PATCH 2/3] shortlog: read mailmap from ./.mailmap again","startedAt":"2006-11-19T16:28:51Z","lastAt":"2006-11-19T16:28:51Z","messageCount":1,"participants":["Johannes Schindelin"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"296985","messageId":"Pine.LNX.4.63.0611191728340.13772@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"43702","inReplyTo":null,"subject":"[PATCH 2/3] shortlog: read mailmap from ./.mailmap again","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2006-11-19T16:28:51Z","receivedAt":"2006-11-19T16:28:51Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nWhile at it, remove the linux specific mailmap into\ncontrib/mailmap.linux.\n\nSigned-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>\n---\n builtin-shortlog.c    |   81 +++++++++++++++++++++++-------------------------\n contrib/mailmap.linux |   40 ++++++++++++++++++++++++\n 2 files changed, 79 insertions(+), 42 deletions(-)\n\ndiff --git a/builtin-shortlog.c b/builtin-shortlog.c\nindex 26212b0..afc9456 100644\n--- a/builtin-shortlog.c\n+++ b/builtin-shortlog.c\n@@ -22,48 +22,40 @@ static int compare_by_number(const void\n \t\treturn +1;\n }\n \n-static struct path_list_item mailmap_list[] = {\n-\t{ \"R.Marek@sh.cvut.cz\", (void*)\"Rudolf Marek\" },\n-\t{ \"Ralf.Wildenhues@gmx.de\", (void*)\"Ralf Wildenhues\" },\n-\t{ \"aherrman@de.ibm.com\", (void*)\"Andreas Herrmann\" },\n-\t{ \"akpm@osdl.org\", (void*)\"Andrew Morton\" },\n-\t{ \"andrew.vasquez@qlogic.com\", (void*)\"Andrew Vasquez\" },\n-\t{ \"aquynh@gmail.com\", (void*)\"Nguyen Anh Quynh\" },\n-\t{ \"axboe@suse.de\", (void*)\"Jens Axboe\" },\n-\t{ \"blaisorblade@yahoo.it\", (void*)\"Paolo 'Blaisorblade' Giarrusso\" },\n-\t{ \"bunk@stusta.de\", (void*)\"Adrian Bunk\" },\n-\t{ \"domen@coderock.org\", (void*)\"Domen Puncer\" },\n-\t{ \"dougg@torque.net\", (void*)\"Douglas Gilbert\" },\n-\t{ \"dwmw2@shinybook.infradead.org\", (void*)\"David Woodhouse\" },\n-\t{ \"ecashin@coraid.com\", (void*)\"Ed L Cashin\" },\n-\t{ \"felix@derklecks.de\", (void*)\"Felix Moeller\" },\n-\t{ \"fzago@systemfabricworks.com\", (void*)\"Frank Zago\" },\n-\t{ \"gregkh@suse.de\", (void*)\"Greg Kroah-Hartman\" },\n-\t{ \"hch@lst.de\", (void*)\"Christoph Hellwig\" },\n-\t{ \"htejun@gmail.com\", (void*)\"Tejun Heo\" },\n-\t{ \"jejb@mulgrave.(none)\", (void*)\"James Bottomley\" },\n-\t{ \"jejb@titanic.il.steeleye.com\", (void*)\"James Bottomley\" },\n-\t{ \"jgarzik@pretzel.yyz.us\", (void*)\"Jeff Garzik\" },\n-\t{ \"johnpol@2ka.mipt.ru\", (void*)\"Evgeniy Polyakov\" },\n-\t{ \"kay.sievers@vrfy.org\", (void*)\"Kay Sievers\" },\n-\t{ \"minyard@acm.org\", (void*)\"Corey Minyard\" },\n-\t{ \"mshah@teja.com\", (void*)\"Mitesh shah\" },\n-\t{ \"pj@ludd.ltu.se\", (void*)\"Peter A Jonsson\" },\n-\t{ \"rmps@joel.ist.utl.pt\", (void*)\"Rui Saraiva\" },\n-\t{ \"santtu.hyrkko@gmail.com\", (void*)\"Santtu Hyrkk\u001b,Av\u001b(B\" },\n-\t{ \"simon@thekelleys.org.uk\", (void*)\"Simon Kelley\" },\n-\t{ \"ssant@in.ibm.com\", (void*)\"Sachin P Sant\" },\n-\t{ \"terra@gnome.org\", (void*)\"Morten Welinder\" },\n-\t{ \"tony.luck@intel.com\", (void*)\"Tony Luck\" },\n-\t{ \"welinder@anemone.rentec.com\", (void*)\"Morten Welinder\" },\n-\t{ \"welinder@darter.rentec.com\", (void*)\"Morten Welinder\" },\n-\t{ \"welinder@troll.com\", (void*)\"Morten Welinder\" }\n-};\n-\n-static struct path_list mailmap = {\n-\tmailmap_list,\n-\tsizeof(mailmap_list) / sizeof(struct path_list_item), 0, 0\n-};\n+static struct path_list mailmap = {NULL, 0, 0, 0};\n+\n+static int read_mailmap(const char *filename)\n+{\n+\tchar buffer[1024];\n+\tFILE *f = fopen(filename, \"r\");\n+\n+\tif (f == NULL)\n+\t\treturn 1;\n+\twhile (fgets(buffer, sizeof(buffer), f) != NULL) {\n+\t\tchar *end_of_name, *left_bracket, *right_bracket;\n+\t\tchar *name, *email;\n+\t\tif (buffer[0] == '#')\n+\t\t\tcontinue;\n+\t\tif ((left_bracket = strchr(buffer, '<')) == NULL)\n+\t\t\tcontinue;\n+\t\tif ((right_bracket = strchr(left_bracket + 1, '>')) == NULL)\n+\t\t\tcontinue;\n+\t\tif (right_bracket == left_bracket + 1)\n+\t\t\tcontinue;\n+\t\tfor (end_of_name = left_bracket; end_of_name != buffer\n+\t\t\t\t&& isspace(end_of_name[-1]); end_of_name--)\n+\t\t\t/* keep on looking */\n+\t\tif (end_of_name == buffer)\n+\t\t\tcontinue;\n+\t\tname = xmalloc(end_of_name - buffer + 1);\n+\t\tstrlcpy(name, buffer, end_of_name - buffer + 1);\n+\t\temail = xmalloc(right_bracket - left_bracket);\n+\t\tstrlcpy(email, left_bracket + 1, right_bracket - left_bracket);\n+\t\tpath_list_insert(email, &mailmap)->util = name;\n+\t}\n+\tfclose(f);\n+\treturn 0;\n+}\n \n static int map_email(char *email, char *name, int maxlen)\n {\n@@ -269,6 +261,9 @@ int cmd_shortlog(int argc, const char **\n \t\targc--;\n \t}\n \n+\tif (!access(\".mailmap\", R_OK))\n+\t\tread_mailmap(\".mailmap\");\n+\n \tif (rev.pending.nr == 1)\n \t\tdie (\"Need a range!\");\n \telse if (rev.pending.nr == 0)\n@@ -298,6 +293,8 @@ int cmd_shortlog(int argc, const char **\n \n \tlist.strdup_paths = 1;\n \tpath_list_clear(&list, 1);\n+\tmailmap.strdup_paths = 1;\n+\tpath_list_clear(&mailmap, 1);\n \n \treturn 0;\n }\ndiff --git a/contrib/mailmap.linux b/contrib/mailmap.linux\nnew file mode 100644\nindex 0000000..83927c9\n--- /dev/null\n+++ b/contrib/mailmap.linux\n@@ -0,0 +1,40 @@\n+#\n+# Even with git, we don't always have name translations.\n+# So have an email->real name table to translate the\n+# (hopefully few) missing names\n+#\n+Adrian Bunk <bunk@stusta.de>\n+Andreas Herrmann <aherrman@de.ibm.com>\n+Andrew Morton <akpm@osdl.org>\n+Andrew Vasquez <andrew.vasquez@qlogic.com>\n+Christoph Hellwig <hch@lst.de>\n+Corey Minyard <minyard@acm.org>\n+David Woodhouse <dwmw2@shinybook.infradead.org>\n+Domen Puncer <domen@coderock.org>\n+Douglas Gilbert <dougg@torque.net>\n+Ed L Cashin <ecashin@coraid.com>\n+Evgeniy Polyakov <johnpol@2ka.mipt.ru>\n+Felix Moeller <felix@derklecks.de>\n+Frank Zago <fzago@systemfabricworks.com>\n+Greg Kroah-Hartman <gregkh@suse.de>\n+James Bottomley <jejb@mulgrave.(none)>\n+James Bottomley <jejb@titanic.il.steeleye.com>\n+Jeff Garzik <jgarzik@pretzel.yyz.us>\n+Jens Axboe <axboe@suse.de>\n+Kay Sievers <kay.sievers@vrfy.org>\n+Mitesh shah <mshah@teja.com>\n+Morten Welinder <terra@gnome.org>\n+Morten Welinder <welinder@anemone.rentec.com>\n+Morten Welinder <welinder@darter.rentec.com>\n+Morten Welinder <welinder@troll.com>\n+Nguyen Anh Quynh <aquynh@gmail.com>\n+Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>\n+Peter A Jonsson <pj@ludd.ltu.se>\n+Ralf Wildenhues <Ralf.Wildenhues@gmx.de>\n+Rudolf Marek <R.Marek@sh.cvut.cz>\n+Rui Saraiva <rmps@joel.ist.utl.pt>\n+Sachin P Sant <ssant@in.ibm.com>\n+Santtu Hyrkk\u001b,Av\u001b(B <santtu.hyrkko@gmail.com>\n+Simon Kelley <simon@thekelleys.org.uk>\n+Tejun Heo <htejun@gmail.com>\n+Tony Luck <tony.luck@intel.com>\n-- \n1.4.4.GIT\n"}]}