summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.h4
-rw-r--r--parsing.c12
2 files changed, 14 insertions, 2 deletions
diff --git a/cgit.h b/cgit.h
index b6b60c6..f06a941 100644
--- a/cgit.h
+++ b/cgit.h
@@ -15,13 +15,17 @@ struct cacheitem {
int fd;
};
struct commitinfo {
struct commit *commit;
char *author;
+ char *author_email;
+ unsigned long author_date;
char *committer;
+ char *committer_email;
+ unsigned long committer_date;
char *subject;
char *msg;
};
extern const char cgit_version[];
diff --git a/parsing.c b/parsing.c
index be471b5..4d5cc74 100644
--- a/parsing.c
+++ b/parsing.c
@@ -132,20 +132,28 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
p += 48; // "parent " + hex[40] + "\n"
if (!strncmp(p, "author ", 7)) {
p += 7;
t = strchr(p, '<') - 1;
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)) {
p += 9;
t = strchr(p, '<') - 1;
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')
p = strchr(p, '\n') + 1;
t = strchr(p, '\n');