]> granicus.if.org Git - cgit/commitdiff
Teach commit parser about author/committer email + timestamp
authorLars Hjemli <hjemli@gmail.com>
Sat, 16 Dec 2006 13:25:41 +0000 (14:25 +0100)
committerLars Hjemli <hjemli@gmail.com>
Sat, 16 Dec 2006 13:25:41 +0000 (14:25 +0100)
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>
cgit.h
parsing.c

diff --git a/cgit.h b/cgit.h
index b6b60c682494eed0c0db21a227d224a28d079a4d..f06a941d7ac1e01f6252ef29482ab1c5f3b24241 100644 (file)
--- a/cgit.h
+++ b/cgit.h
@@ -18,7 +18,11 @@ struct cacheitem {
 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;
 };
index be471b5fd57ef6451fbab7ff0402df0fad47a844..4d5cc743da1ec9c7143c825330e3bf0bfd4f8d45 100644 (file)
--- a/parsing.c
+++ b/parsing.c
@@ -135,14 +135,22 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
                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')