зеркало из 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,
|
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)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче