diff options
Diffstat (limited to 'mailmap.c')
| -rw-r--r-- | mailmap.c | 72 |
1 files changed, 39 insertions, 33 deletions
@@ -129,44 +129,50 @@ static char *parse_name_and_email(char *buffer, char **name, return (*right == '\0' ? NULL : right); } -static int read_single_mailmap(struct string_list *map, const char *filename, char **repo_abbrev) +static void read_mailmap_line(struct string_list *map, char *buffer, + char **repo_abbrev) { - char buffer[1024]; - FILE *f = (filename == NULL ? NULL : fopen(filename, "r")); - - if (f == NULL) - return 1; - while (fgets(buffer, sizeof(buffer), f) != NULL) { - char *name1 = NULL, *email1 = NULL, *name2 = NULL, *email2 = NULL; - if (buffer[0] == '#') { - static const char abbrev[] = "# repo-abbrev:"; - int abblen = sizeof(abbrev) - 1; - int len = strlen(buffer); + char *name1 = NULL, *email1 = NULL, *name2 = NULL, *email2 = NULL; + if (buffer[0] == '#') { + static const char abbrev[] = "# repo-abbrev:"; + int abblen = sizeof(abbrev) - 1; + int len = strlen(buffer); - if (!repo_abbrev) - continue; + if (!repo_abbrev) + return; - if (len && buffer[len - 1] == '\n') - buffer[--len] = 0; - if (!strncmp(buffer, abbrev, abblen)) { - char *cp; + if (len && buffer[len - 1] == '\n') + buffer[--len] = 0; + if (!strncmp(buffer, abbrev, abblen)) { + char *cp; - if (repo_abbrev) - free(*repo_abbrev); - *repo_abbrev = xmalloc(len); + if (repo_abbrev) + free(*repo_abbrev); + *repo_abbrev = xmalloc(len); - for (cp = buffer + abblen; isspace(*cp); cp++) - ; /* nothing */ - strcpy(*repo_abbrev, cp); - } - continue; + for (cp = buffer + abblen; isspace(*cp); cp++) + ; /* nothing */ + strcpy(*repo_abbrev, cp); } - if ((name2 = parse_name_and_email(buffer, &name1, &email1, 0)) != NULL) - parse_name_and_email(name2, &name2, &email2, 1); - - if (email1) - add_mapping(map, name1, email1, name2, email2); + return; } + if ((name2 = parse_name_and_email(buffer, &name1, &email1, 0)) != NULL) + parse_name_and_email(name2, &name2, &email2, 1); + + if (email1) + add_mapping(map, name1, email1, name2, email2); +} + +static int read_mailmap_file(struct string_list *map, const char *filename, + char **repo_abbrev) +{ + char buffer[1024]; + FILE *f = (filename == NULL ? NULL : fopen(filename, "r")); + + if (f == NULL) + return 1; + while (fgets(buffer, sizeof(buffer), f) != NULL) + read_mailmap_line(map, buffer, repo_abbrev); fclose(f); return 0; } @@ -175,8 +181,8 @@ int read_mailmap(struct string_list *map, char **repo_abbrev) { map->strdup_strings = 1; /* each failure returns 1, so >1 means both calls failed */ - return read_single_mailmap(map, ".mailmap", repo_abbrev) + - read_single_mailmap(map, git_mailmap_file, repo_abbrev) > 1; + return read_mailmap_file(map, ".mailmap", repo_abbrev) + + read_mailmap_file(map, git_mailmap_file, repo_abbrev) > 1; } void clear_mailmap(struct string_list *map) |
