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:
Lars Hjemli 2006-12-16 14:25:41 +01:00
parent 7c849d94ec
commit 77078ba716
2 changed files with 14 additions and 2 deletions

4
cgit.h
View File

@ -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;
}; };

View File

@ -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')