Use the mailmap information to display the correct username and email address in all log commands. Signed-off-by: Antoine Pelisse <apelisse@xxxxxxxxx> --- pretty.c | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/pretty.c b/pretty.c index 6730add..e232aaa 100644 --- a/pretty.c +++ b/pretty.c @@ -387,6 +387,8 @@ void pp_user_info(const struct pretty_print_context *pp, const char *what, struct strbuf *sb, const char *line, const char *encoding) { + char person_name[1024]; + char person_mail[1024]; struct ident_split ident; int linelen, namelen; char *line_end, *date; @@ -405,41 +407,55 @@ void pp_user_info(const struct pretty_print_context *pp, if (split_ident_line(&ident, line, linelen)) return; - namelen = ident.mail_end - ident.name_begin + 1; + memcpy(person_mail, ident.mail_begin, ident.mail_end - ident.mail_begin); + person_mail[ident.mail_end - ident.mail_begin] = 0; + + memcpy(person_name, ident.name_begin, ident.name_end - ident.name_begin); + person_name[ident.name_end - ident.name_begin] = 0; + + if (pp->mailmap) + map_user(pp->mailmap, person_mail, sizeof(person_mail), + person_name, sizeof(person_name)); + + namelen = strlen(person_name) + strlen(person_mail); time = strtoul(ident.date_begin, &date, 10); tz = strtol(date, NULL, 10); if (pp->fmt == CMIT_FMT_EMAIL) { int display_name_length; - display_name_length = ident.name_end - ident.name_begin; + display_name_length = strlen(person_name); strbuf_addstr(sb, "From: "); - if (needs_rfc2047_encoding(line, display_name_length, RFC2047_ADDRESS)) { - add_rfc2047(sb, line, display_name_length, + if (needs_rfc2047_encoding(person_name, display_name_length, RFC2047_ADDRESS)) { + add_rfc2047(sb, person_name, display_name_length, encoding, RFC2047_ADDRESS); max_length = 76; /* per rfc2047 */ - } else if (needs_rfc822_quoting(line, display_name_length)) { + } else if (needs_rfc822_quoting(person_name, + display_name_length)) { struct strbuf quoted = STRBUF_INIT; - add_rfc822_quoted("ed, line, display_name_length); + add_rfc822_quoted("ed, person_name, + display_name_length); strbuf_add_wrapped_bytes(sb, quoted.buf, quoted.len, -6, 1, max_length); strbuf_release("ed); } else { - strbuf_add_wrapped_bytes(sb, line, display_name_length, - -6, 1, max_length); + strbuf_add_wrapped_bytes(sb, person_name, + display_name_length, + -6, 1, max_length); } - if (namelen - display_name_length + last_line_length(sb) > max_length) { + if (namelen - display_name_length + last_line_length(sb) > max_length) strbuf_addch(sb, '\n'); - if (!isspace(ident.name_end[0])) - strbuf_addch(sb, ' '); - } - strbuf_add(sb, ident.name_end, namelen - display_name_length); + + strbuf_addch(sb, ' '); + strbuf_addch(sb, '<'); + strbuf_add(sb, person_mail, strlen(person_mail)); + strbuf_addch(sb, '>'); strbuf_addch(sb, '\n'); } else { - strbuf_addf(sb, "%s: %.*s%.*s\n", what, + strbuf_addf(sb, "%s: %.*s%s <%s>\n", what, (pp->fmt == CMIT_FMT_FULLER) ? 4 : 0, - " ", namelen, line); + " ", person_name, person_mail); } switch (pp->fmt) { case CMIT_FMT_MEDIUM: -- 1.8.1.rc1.5.g7e0651a -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html