Teach commit parser about author/committer email + timestamp
We want all four of these when showing a commit, so save them in the commitinfo struct. Btw: There's probably no good reason to save committer timestamp since it's already available in commit->date. But it doesn't hurt us either, and it makes the parser look more complete, so we just do it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
szülő
7c849d94ec
commit
77078ba716
4
cgit.h
4
cgit.h
@ -18,7 +18,11 @@ struct cacheitem {
|
|||||||
struct commitinfo {
|
struct commitinfo {
|
||||||
struct commit *commit;
|
struct commit *commit;
|
||||||
char *author;
|
char *author;
|
||||||
|
char *author_email;
|
||||||
|
unsigned long author_date;
|
||||||
char *committer;
|
char *committer;
|
||||||
|
char *committer_email;
|
||||||
|
unsigned long committer_date;
|
||||||
char *subject;
|
char *subject;
|
||||||
char *msg;
|
char *msg;
|
||||||
};
|
};
|
||||||
|
12
parsing.c
12
parsing.c
@ -135,14 +135,22 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
|
|||||||
p += 7;
|
p += 7;
|
||||||
t = strchr(p, '<') - 1;
|
t = strchr(p, '<') - 1;
|
||||||
ret->author = substr(p, t);
|
ret->author = substr(p, t);
|
||||||
p = strchr(p, '\n') + 1;
|
p = t;
|
||||||
|
t = strchr(t, '>') + 1;
|
||||||
|
ret->author_email = substr(p, t);
|
||||||
|
ret->author_date = atol(++t);
|
||||||
|
p = strchr(t, '\n') + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strncmp(p, "committer ", 9)) {
|
if (!strncmp(p, "committer ", 9)) {
|
||||||
p += 9;
|
p += 9;
|
||||||
t = strchr(p, '<') - 1;
|
t = strchr(p, '<') - 1;
|
||||||
ret->committer = substr(p, t);
|
ret->committer = substr(p, t);
|
||||||
p = strchr(p, '\n') + 1;
|
p = t;
|
||||||
|
t = strchr(t, '>') + 1;
|
||||||
|
ret->committer_email = substr(p, t);
|
||||||
|
ret->committer_date = atol(++t);
|
||||||
|
p = strchr(t, '\n') + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (*p == '\n')
|
while (*p == '\n')
|
||||||
|
Betöltés…
Reference in New Issue
Block a user