From mboxrd@z Thu Jan 1 00:00:00 1970 From: smithj4 at bnl.gov (Jason A. Smith) Date: Sat, 25 Feb 2017 11:12:35 -0500 Subject: [PATCH 2/3] Remove angle brackets from {author,committer}_email In-Reply-To: <20170225161236.30039-1-smithj4@bnl.gov> References: <20170225161236.30039-1-smithj4@bnl.gov> Message-ID: <20170225161236.30039-3-smithj4@bnl.gov> From: John Keeping This matches the internal representation in libgit.a, so it will make it much easier to use Git's mailmap code. The change in ui-atom.c isn't strictly necessary since the code copes with email addresses both with and without angle brackets, but it's a nice simplification since we know that the email address will always be provided in the correct form. Signed-off-by: John Keeping Signed-off-by: Jason A. Smith --- filter.c | 10 +++++++++- parsing.c | 6 +----- ui-atom.c | 13 +------------ ui-commit.c | 6 ++++-- ui-tag.c | 3 ++- 5 files changed, 17 insertions(+), 21 deletions(-) diff --git a/filter.c b/filter.c index 88098ba..ba9000a 100644 --- a/filter.c +++ b/filter.c @@ -457,5 +457,13 @@ struct cgit_filter *cgit_new_filter(const char *cmd, filter_type filtertype) void cgit_open_email_filter(const char *email, const char *origin) { - cgit_open_filter(ctx.repo->email_filter, email, origin); + struct strbuf sb = STRBUF_INIT; + + /* Don't bother allocating any memory if we don't have a filter. */ + if (!ctx.repo->email_filter) + return; + + strbuf_addf(&sb, "<%s>", email); + cgit_open_filter(ctx.repo->email_filter, sb.buf, origin); + strbuf_release(&sb); } diff --git a/parsing.c b/parsing.c index 9dacb16..352338d 100644 --- a/parsing.c +++ b/parsing.c @@ -72,14 +72,10 @@ static char *substr(const char *head, const char *tail) static void parse_user(const char *t, char **name, char **email, unsigned long *date, int *tz) { struct ident_split ident; - unsigned email_len; if (!split_ident_line(&ident, t, strchrnul(t, '\n') - t)) { *name = substr(ident.name_begin, ident.name_end); - - email_len = ident.mail_end - ident.mail_begin; - *email = xmalloc(strlen("<") + email_len + strlen(">") + 1); - sprintf(*email, "<%.*s>", email_len, ident.mail_begin); + *email = substr(ident.mail_begin, ident.mail_end); if (ident.date_begin) *date = strtoul(ident.date_begin, NULL, 10); diff --git a/ui-atom.c b/ui-atom.c index 41838d3..7c17d6a 100644 --- a/ui-atom.c +++ b/ui-atom.c @@ -15,7 +15,6 @@ static void add_entry(struct commit *commit, const char *host) { char delim = '&'; char *hex; - char *mail, *t, *t2; struct commitinfo *info; info = cgit_parse_commit(commit); @@ -35,19 +34,9 @@ static void add_entry(struct commit *commit, const char *host) html("\n"); } if (info->author_email && !ctx.cfg.noplainemail) { - mail = xstrdup(info->author_email); - t = strchr(mail, '<'); - if (t) - t++; - else - t = mail; - t2 = strchr(t, '>'); - if (t2) - *t2 = '\0'; html(""); - html_txt(t); + html_txt(info->author_email); html("\n"); - free(mail); } html("\n"); html(""); diff --git a/ui-commit.c b/ui-commit.c index 04f0411..dccb5f3 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -50,8 +50,9 @@ void cgit_print_commit(char *hex, const char *prefix) cgit_open_email_filter(info->author_email, "commit"); html_txt(info->author); if (!ctx.cfg.noplainemail) { - html(" "); + html(" <"); html_txt(info->author_email); + html(">"); } cgit_close_filter(ctx.repo->email_filter); html(""); @@ -62,8 +63,9 @@ void cgit_print_commit(char *hex, const char *prefix) cgit_open_email_filter(info->committer_email, "commit"); html_txt(info->committer); if (!ctx.cfg.noplainemail) { - html(" "); + html(" <"); html_txt(info->committer_email); + html(">"); } cgit_close_filter(ctx.repo->email_filter); html(""); diff --git a/ui-tag.c b/ui-tag.c index d1e5db9..ad7854e 100644 --- a/ui-tag.c +++ b/ui-tag.c @@ -86,8 +86,9 @@ void cgit_print_tag(char *revname) cgit_open_email_filter(info->tagger_email, "tag"); html_txt(info->tagger); if (info->tagger_email && !ctx.cfg.noplainemail) { - html(" "); + html(" <"); html_txt(info->tagger_email); + html(">"); } cgit_close_filter(ctx.repo->email_filter); html("\n"); -- 2.9.3