зеркало из https://github.com/microsoft/git.git
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:
Родитель
6876618cea
Коммит
ea5517f04b
18
commit.c
18
commit.c
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче