author | Lars Hjemli <hjemli@gmail.com> | 2006-12-16 13:25:41 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2006-12-16 13:25:41 (UTC) |
commit | 77078ba716ccdfdc954741355dd6a17632db961b (patch) (side-by-side diff) | |
tree | ef66d7a2690c90981ab0f446a19111a04d121c7a | |
parent | 7c849d94ec1cfecdec5a88d49f5af5c98f96ebca (diff) | |
download | cgit-77078ba716ccdfdc954741355dd6a17632db961b.zip cgit-77078ba716ccdfdc954741355dd6a17632db961b.tar.gz cgit-77078ba716ccdfdc954741355dd6a17632db961b.tar.bz2 |
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>
-rw-r--r-- | cgit.h | 4 | ||||
-rw-r--r-- | parsing.c | 12 |
2 files changed, 14 insertions, 2 deletions
@@ -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[]; @@ -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'); |