diff --git a/builtin/blame.c b/builtin/blame.c
index 53f43ab..6e6dddb 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -1599,19 +1599,19 @@ static void get_ac_line(const char *inbuf, const char *what,
return;
}
- namelen = ident.name_end - ident.name_begin;
- namebuf = ident.name_begin;
+ namelen = ident.name.end - ident.name.begin;
+ namebuf = ident.name.begin;
- maillen = ident.mail_end - ident.mail_begin;
- mailbuf = ident.mail_begin;
+ maillen = ident.mail.end - ident.mail.begin;
+ mailbuf = ident.mail.begin;
- if (ident.date_begin && ident.date_end)
- *time = strtoul(ident.date_begin, NULL, 10);
+ if (ident.date.begin && ident.date.end)
+ *time = strtoul(ident.date.begin, NULL, 10);
else
*time = 0;
- if (ident.tz_begin && ident.tz_end)
- strbuf_add(tz, ident.tz_begin, ident.tz_end - ident.tz_begin);
+ if (ident.tz.begin && ident.tz.end)
+ strbuf_add(tz, ident.tz.begin, ident.tz.end - ident.tz.begin);
else
strbuf_addstr(tz, "(unknown)");
diff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c
index 8f4d809..65dcbc6 100644
--- a/builtin/check-mailmap.c
+++ b/builtin/check-mailmap.c
@@ -23,10 +23,10 @@ static void check_mailmap(struct string_list *mailmap, const char *contact)
if (split_ident_line(&ident, contact, strlen(contact)))
die(_("unable to parse contact: %s"), contact);
- name = ident.name_begin;
- namelen = ident.name_end - ident.name_begin;
- mail = ident.mail_begin;
- maillen = ident.mail_end - ident.mail_begin;
+ name = ident.name.begin;
+ namelen = ident.name.end - ident.name.begin;
+ mail = ident.mail.begin;
+ maillen = ident.mail.end - ident.mail.begin;
map_user(mailmap, &mail, &maillen, &name, &namelen);
diff --git a/builtin/commit.c b/builtin/commit.c
index 84cec9a..047cc76 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -514,14 +514,14 @@ static void export_one(const char *var, const char *s, const char *e, int hack)
static int sane_ident_split(struct ident_split *person)
{
- if (!person->name_begin || !person->name_end ||
- person->name_begin == person->name_end)
+ if (!person->name.begin || !person->name.end ||
+ person->name.begin == person->name.end)
return 0; /* no human readable name */
- if (!person->mail_begin || !person->mail_end ||
- person->mail_begin == person->mail_end)
+ if (!person->mail.begin || !person->mail.end ||
+ person->mail.begin == person->mail.end)
return 0; /* no usable mail */
- if (!person->date_begin || !person->date_end ||
- !person->tz_begin || !person->tz_end)
+ if (!person->date.begin || !person->date.end ||
+ !person->tz.begin || !person->tz.end)
return 0;
return 1;
}@@ -602,9 +602,9 @@ static void determine_author_info(struct strbuf *author_ident)
strbuf_addstr(author_ident, fmt_ident(name, email, date, IDENT_STRICT));
if (!split_ident_line(&author, author_ident->buf, author_ident->len) &&
sane_ident_split(&author)) {
- export_one("GIT_AUTHOR_NAME", author.name_begin, author.name_end, 0);
- export_one("GIT_AUTHOR_EMAIL", author.mail_begin, author.mail_end, 0);
- export_one("GIT_AUTHOR_DATE", author.date_begin, author.tz_end, '@');
+ export_one("GIT_AUTHOR_NAME", author.name.begin, author.name.end, 0);
+ export_one("GIT_AUTHOR_EMAIL", author.mail.begin, author.mail.end, 0);
+ export_one("GIT_AUTHOR_DATE", author.date.begin, author.tz.end, '@');
}
}
@@ -861,8 +861,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
_("%s"
"Author: %.*s <%.*s>"),
ident_shown++ ? "" : "\n",
- (int)(ai.name_end - ai.name_begin), ai.name_begin,
- (int)(ai.mail_end - ai.mail_begin), ai.mail_begin);
+ (int)(ai.name.end - ai.name.begin), ai.name.begin,
+ (int)(ai.mail.end - ai.mail.begin), ai.mail.begin);
if (author_date_is_interesting())
status_printf_ln(s, GIT_COLOR_NORMAL,@@ -876,8 +876,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
_("%s"
"Committer: %.*s <%.*s>"),
ident_shown++ ? "" : "\n",
- (int)(ci.name_end - ci.name_begin), ci.name_begin,
- (int)(ci.mail_end - ci.mail_begin), ci.mail_begin);
+ (int)(ci.name.end - ci.name.begin), ci.name.begin,
+ (int)(ci.mail.end - ci.mail.begin), ci.mail.begin);
if (ident_shown)
status_printf_ln(s, GIT_COLOR_NORMAL, "%s", "");diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index 4b7e536..e4ddfea 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -44,10 +44,10 @@ static void insert_one_record(struct shortlog *log,
if (split_ident_line(&ident, author, strlen(author)))
return;
- namebuf = ident.name_begin;
- mailbuf = ident.mail_begin;
- namelen = ident.name_end - ident.name_begin;
- maillen = ident.mail_end - ident.mail_begin;
+ namebuf = ident.name.begin;
+ mailbuf = ident.mail.begin;
+ namelen = ident.name.end - ident.name.begin;
+ maillen = ident.mail.end - ident.mail.begin;
map_user(&log->mailmap, &mailbuf, &maillen, &namebuf, &namelen);
strbuf_add(&namemailbuf, namebuf, namelen);
diff --git a/cache.h b/cache.h
index cbe1935..5255661 100644
--- a/cache.h
+++ b/cache.h
@@ -1045,15 +1045,16 @@ extern const char *git_editor(void);
extern const char *git_pager(int stdout_is_tty);
extern int git_ident_config(const char *, const char *, void *);
+struct pointer_pair {
+ const char *begin;
+ const char *end;
+};
+
struct ident_split {
- const char *name_begin;
- const char *name_end;
- const char *mail_begin;
- const char *mail_end;
- const char *date_begin;
- const char *date_end;
- const char *tz_begin;
- const char *tz_end;
+ struct pointer_pair name;
+ struct pointer_pair mail;
+ struct pointer_pair date;
+ struct pointer_pair tz;
};
/*
* Signals an success with 0, but time part of the result may be NULLdiff --git a/commit.c b/commit.c
index c33431c..dcf8dce 100644
--- a/commit.c
+++ b/commit.c
@@ -617,11 +617,11 @@ static void record_author_date(struct author_date_slab *author_date,
if (!ident_line)
goto fail_exit; /* no author line */
if (split_ident_line(&ident, ident_line, ident_len) ||
- !ident.date_begin || !ident.date_end)
+ !ident.date.begin || !ident.date.end)
goto fail_exit; /* malformed "author" line */
- date = strtoul(ident.date_begin, &date_end, 10);
- if (date_end != ident.date_end)
+ date = strtoul(ident.date.begin, &date_end, 10);
+ if (date_end != ident.date.end)
goto fail_exit; /* malformed date */
*(author_date_slab_at(author_date, commit)) = date;
diff --git a/ident.c b/ident.c
index 1d9b6e7..570fda7 100644
--- a/ident.c
+++ b/ident.c
@@ -206,42 +206,42 @@ int split_ident_line(struct ident_split *split, const char *line, int len)
memset(split, 0, sizeof(*split));
- split->name_begin = line;
+ split->name.begin = line;
for (cp = line; *cp && cp < line + len; cp++)
if (*cp == '<') {
- split->mail_begin = cp + 1;
+ split->mail.begin = cp + 1;
break;
}
- if (!split->mail_begin)
+ if (!split->mail.begin)
return status;
- for (cp = split->mail_begin - 2; line <= cp; cp--)
+ for (cp = split->mail.begin - 2; line <= cp; cp--)
if (!isspace(*cp)) {
- split->name_end = cp + 1;
+ split->name.end = cp + 1;
break;
}
- if (!split->name_end) {
+ if (!split->name.end) {
/* no human readable name */
- split->name_end = split->name_begin;
+ split->name.end = split->name.begin;
}
- for (cp = split->mail_begin; cp < line + len; cp++)
+ for (cp = split->mail.begin; cp < line + len; cp++)
if (*cp == '>') {
- split->mail_end = cp;
+ split->mail.end = cp;
break;
}
- if (!split->mail_end)
+ if (!split->mail.end)
return status;
/*
* Look from the end-of-line to find the trailing ">" of the mail
- * address, even though we should already know it as split->mail_end.
+ * address, even though we should already know it as split->mail.end.
* This can help in cases of broken idents with an extra ">" somewhere
* in the email address. Note that we are assuming the timestamp will
* never have a ">" in it.
*
* Note that we will always find some ">" before going off the front of
- * the string, because will always hit the split->mail_end closing
+ * the string, because will always hit the split->mail.end closing
* bracket.
*/
for (cp = line + len - 1; *cp != '>'; cp--)@@ -251,27 +251,27 @@ int split_ident_line(struct ident_split *split, const char *line, int len)
;
if (line + len <= cp)
goto person_only;
- split->date_begin = cp;
+ split->date.begin = cp;
span = strspn(cp, "0123456789");
if (!span)
goto person_only;
- split->date_end = split->date_begin + span;
- for (cp = split->date_end; cp < line + len && isspace(*cp); cp++)
+ split->date.end = split->date.begin + span;
+ for (cp = split->date.end; cp < line + len && isspace(*cp); cp++)
;
if (line + len <= cp || (*cp != '+' && *cp != '-'))
goto person_only;
- split->tz_begin = cp;
+ split->tz.begin = cp;
span = strspn(cp + 1, "0123456789");
if (!span)
goto person_only;
- split->tz_end = split->tz_begin + 1 + span;
+ split->tz.end = split->tz.begin + 1 + span;
return 0;
person_only:
- split->date_begin = NULL;
- split->date_end = NULL;
- split->tz_begin = NULL;
- split->tz_end = NULL;
+ split->date.begin = NULL;
+ split->date.end = NULL;
+ split->tz.begin = NULL;
+ split->tz.end = NULL;
return 0;
}
@@ -417,15 +417,14 @@ int git_ident_config(const char *var, const char *value, void *data)
return 0;
}
-static int buf_cmp(const char *a_begin, const char *a_end,
- const char *b_begin, const char *b_end)
+static int buf_cmp(const struct pointer_pair *a, const struct pointer_pair *b)
{
- int a_len = a_end - a_begin;
- int b_len = b_end - b_begin;
+ int a_len = a->end - a->begin;
+ int b_len = b->end - b->begin;
int min = a_len < b_len ? a_len : b_len;
int cmp;
- cmp = memcmp(a_begin, b_begin, min);
+ cmp = memcmp(a->begin, b->begin, min);
if (cmp)
return cmp;
@@ -437,11 +436,9 @@ int ident_cmp(const struct ident_split *a,
{
int cmp;
- cmp = buf_cmp(a->mail_begin, a->mail_end,
- b->mail_begin, b->mail_end);
+ cmp = buf_cmp(&a->mail, &b->mail);
if (cmp)
return cmp;
- return buf_cmp(a->name_begin, a->name_end,
- b->name_begin, b->name_end);
+ return buf_cmp(&a->name, &b->name);
}diff --git a/log-tree.c b/log-tree.c
index 4447021..385f07f 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -620,7 +620,7 @@ void show_log(struct rev_info *opt)
ctx.mailmap = opt->mailmap;
ctx.color = opt->diffopt.use_color;
ctx.output_encoding = get_log_output_encoding();
- if (opt->from_ident.mail_begin && opt->from_ident.name_begin)
+ if (opt->from_ident.mail.begin && opt->from_ident.name.begin)
ctx.from_ident = &opt->from_ident;
pretty_print_commit(&ctx, commit, &msgbuf);
diff --git a/pretty.c b/pretty.c
index 6081750..83ef5b7 100644
--- a/pretty.c
+++ b/pretty.c
@@ -399,13 +399,13 @@ const char *show_ident_date(const struct ident_split *ident,
unsigned long date = 0;
long tz = 0;
- if (ident->date_begin && ident->date_end)
- date = strtoul(ident->date_begin, NULL, 10);
+ if (ident->date.begin && ident->date.end)
+ date = strtoul(ident->date.begin, NULL, 10);
if (date_overflows(date))
date = 0;
else {
- if (ident->tz_begin && ident->tz_end)
- tz = strtol(ident->tz_begin, NULL, 10);
+ if (ident->tz.begin && ident->tz.end)
+ tz = strtol(ident->tz.begin, NULL, 10);
if (tz >= INT_MAX || tz <= INT_MIN)
tz = 0;
}@@ -429,10 +429,10 @@ void pp_user_info(struct pretty_print_context *pp,
if (split_ident_line(&ident, line, line_end - line))
return;
- mailbuf = ident.mail_begin;
- maillen = ident.mail_end - ident.mail_begin;
- namebuf = ident.name_begin;
- namelen = ident.name_end - ident.name_begin;
+ mailbuf = ident.mail.begin;
+ maillen = ident.mail.end - ident.mail.begin;
+ namebuf = ident.name.begin;
+ namelen = ident.name.end - ident.name.begin;
if (pp->mailmap)
map_user(pp->mailmap, &mailbuf, &maillen, &namebuf, &namelen);
@@ -449,10 +449,10 @@ void pp_user_info(struct pretty_print_context *pp,
string_list_append(&pp->in_body_headers,
strbuf_detach(&buf, NULL));
- mailbuf = pp->from_ident->mail_begin;
- maillen = pp->from_ident->mail_end - mailbuf;
- namebuf = pp->from_ident->name_begin;
- namelen = pp->from_ident->name_end - namebuf;
+ mailbuf = pp->from_ident->mail.begin;
+ maillen = pp->from_ident->mail.end - mailbuf;
+ namebuf = pp->from_ident->name.begin;
+ namelen = pp->from_ident->name.end - namebuf;
}
strbuf_addstr(sb, "From: ");
@@ -677,10 +677,10 @@ static size_t format_person_part(struct strbuf *sb, char part,
if (split_ident_line(&s, msg, len) < 0)
goto skip;
- name = s.name_begin;
- namelen = s.name_end - s.name_begin;
- mail = s.mail_begin;
- maillen = s.mail_end - s.mail_begin;
+ name = s.name.begin;
+ namelen = s.name.end - s.name.begin;
+ mail = s.mail.begin;
+ maillen = s.mail.end - s.mail.begin;
if (part == 'N' || part == 'E') /* mailmap lookup */
mailmap_name(&mail, &maillen, &name, &namelen);
@@ -693,11 +693,11 @@ static size_t format_person_part(struct strbuf *sb, char part,
return placeholder_len;
}
- if (!s.date_begin)
+ if (!s.date.begin)
goto skip;
if (part == 't') { /* date, UNIX timestamp */
- strbuf_add(sb, s.date_begin, s.date_end - s.date_begin);
+ strbuf_add(sb, s.date.begin, s.date.end - s.date.begin);
return placeholder_len;
}
diff --git a/revision.c b/revision.c
index 9d628c6..c5fbaf8 100644
--- a/revision.c
+++ b/revision.c
@@ -2762,10 +2762,10 @@ static int commit_rewrite_person(struct strbuf *buf, const char *what, struct st
if (split_ident_line(&ident, person, len))
return 0;
- mail = ident.mail_begin;
- maillen = ident.mail_end - ident.mail_begin;
- name = ident.name_begin;
- namelen = ident.name_end - ident.name_begin;
+ mail = ident.mail.begin;
+ maillen = ident.mail.end - ident.mail.begin;
+ name = ident.name.begin;
+ namelen = ident.name.end - ident.name.begin;
if (map_user(mailmap, &mail, &maillen, &name, &namelen)) {
struct strbuf namemail = STRBUF_INIT;@@ -2773,8 +2773,8 @@ static int commit_rewrite_person(struct strbuf *buf, const char *what, struct st
strbuf_addf(&namemail, "%.*s <%.*s>",
(int)namelen, name, (int)maillen, mail);
- strbuf_splice(buf, ident.name_begin - buf->buf,
- ident.mail_end - ident.name_begin + 1,
+ strbuf_splice(buf, ident.name.begin - buf->buf,
+ ident.mail.end - ident.name.begin + 1,
namemail.buf, namemail.len);
strbuf_release(&namemail);
--
2.0.0.566.gfe3e6b2