Author: Lars Hjemli <hjemli@gmail.com>
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>
cgit.h | 4 ++++ parsing.c | 12 ++++++++++--
diff --git a/cgit.h b/cgit.h index b6b60c682494eed0c0db21a227d224a28d079a4d..f06a941d7ac1e01f6252ef29482ab1c5f3b24241 100644 --- a/cgit.h +++ b/cgit.h @@ -18,7 +18,11 @@ 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; }; diff --git a/parsing.c b/parsing.c index be471b5fd57ef6451fbab7ff0402df0fad47a844..4d5cc743da1ec9c7143c825330e3bf0bfd4f8d45 100644 --- a/parsing.c +++ b/parsing.c @@ -135,14 +135,22 @@ 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')