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,
struct commit *commit)
{
const char *buf, *line_end, *ident_line;
const char *buffer = get_commit_buffer(commit, NULL);
struct ident_split ident;
const char *ident_line;
size_t ident_len;
char *date_end;
unsigned long date;
for (buf = buffer; buf; buf = line_end + 1) {
line_end = strchrnul(buf, '\n');
if (!skip_prefix(buf, "author ", &ident_line)) {
if (!line_end[0] || line_end[1] == '\n')
goto fail_exit; /* end of header */
continue;
}
if (split_ident_line(&ident,
ident_line, line_end - ident_line) ||
ident_line = find_commit_header(buffer, "author", &ident_len);
if (!ident_line)
goto fail_exit; /* no author line */
if (split_ident_line(&ident, ident_line, ident_len) ||
!ident.date_begin || !ident.date_end)
goto fail_exit; /* malformed "author" line */
break;
}
date = strtoul(ident.date_begin, &date_end, 10);
if (date_end != ident.date_end)