Code

shortlog: handle email addresses case-insensitively
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Sun, 19 Nov 2006 16:29:14 +0000 (17:29 +0100)
committerJunio C Hamano <junkio@cox.net>
Mon, 20 Nov 2006 06:59:05 +0000 (22:59 -0800)
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-shortlog.c

index afc945663d03ea30691ccc7967d407b3aa173fae..4775c110ffa1de7603300b2ddc6bc18301d05789 100644 (file)
@@ -34,6 +34,7 @@ static int read_mailmap(const char *filename)
        while (fgets(buffer, sizeof(buffer), f) != NULL) {
                char *end_of_name, *left_bracket, *right_bracket;
                char *name, *email;
+               int i;
                if (buffer[0] == '#')
                        continue;
                if ((left_bracket = strchr(buffer, '<')) == NULL)
@@ -50,7 +51,9 @@ static int read_mailmap(const char *filename)
                name = xmalloc(end_of_name - buffer + 1);
                strlcpy(name, buffer, end_of_name - buffer + 1);
                email = xmalloc(right_bracket - left_bracket);
-               strlcpy(email, left_bracket + 1, right_bracket - left_bracket);
+               for (i = 0; i < right_bracket - left_bracket - 1; i++)
+                       email[i] = tolower(left_bracket[i + 1]);
+               email[right_bracket - left_bracket - 1] = '\0';
                path_list_insert(email, &mailmap)->util = name;
        }
        fclose(f);
@@ -68,6 +71,9 @@ static int map_email(char *email, char *name, int maxlen)
                return 0;
 
        *p = '\0';
+       /* downcase the email address */
+       for (p = email; *p; p++)
+               *p = tolower(*p);
        item = path_list_lookup(email, &mailmap);
        if (item != NULL) {
                const char *realname = (const char *)item->util;