record_author_date(): use find_commit_header()

This saves us some manual parsing and makes the code more
readable.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2014-08-27 03:56:55 -04:00 коммит произвёл Junio C Hamano
Родитель 6876618cea
Коммит ea5517f04b
1 изменённых файлов: 8 добавлений и 14 удалений

Просмотреть файл

@ -584,25 +584,19 @@ define_commit_slab(author_date_slab, unsigned long);
static void record_author_date(struct author_date_slab *author_date, static void record_author_date(struct author_date_slab *author_date,
struct commit *commit) struct commit *commit)
{ {
const char *buf, *line_end, *ident_line;
const char *buffer = get_commit_buffer(commit, NULL); const char *buffer = get_commit_buffer(commit, NULL);
struct ident_split ident; struct ident_split ident;
const char *ident_line;
size_t ident_len;
char *date_end; char *date_end;
unsigned long date; unsigned long date;
for (buf = buffer; buf; buf = line_end + 1) { ident_line = find_commit_header(buffer, "author", &ident_len);
line_end = strchrnul(buf, '\n'); if (!ident_line)
if (!skip_prefix(buf, "author ", &ident_line)) { goto fail_exit; /* no author line */
if (!line_end[0] || line_end[1] == '\n') if (split_ident_line(&ident, ident_line, ident_len) ||
goto fail_exit; /* end of header */
continue;
}
if (split_ident_line(&ident,
ident_line, line_end - ident_line) ||
!ident.date_begin || !ident.date_end) !ident.date_begin || !ident.date_end)
goto fail_exit; /* malformed "author" line */ goto fail_exit; /* malformed "author" line */
break;
}
date = strtoul(ident.date_begin, &date_end, 10); date = strtoul(ident.date_begin, &date_end, 10);
if (date_end != ident.date_end) if (date_end != ident.date_end)