all repos — cgit @ 45c87ca1c32dcd5ffd4a681fadf05627d9ce7770

a hyperfast web frontend for git written in c

parsing: add timezone to ident structures

This will allow us to mimic Git's behaviour of showing times in the
originator's timezone when displaying commits and tags.

Signed-off-by: John Keeping <john@keeping.me.uk>
John Keeping john@keeping.me.uk
Tue, 19 Jan 2016 19:33:02 +0000
commit

45c87ca1c32dcd5ffd4a681fadf05627d9ce7770

parent

57ea1aa2a5eab7f6aba702b3366fe4dcc72124f6

2 files changed, 9 insertions(+), 4 deletions(-)

jump to
M cgit.hcgit.h

@@ -130,9 +130,11 @@ struct commit *commit;

char *author; char *author_email; unsigned long author_date; + int author_tz; char *committer; char *committer_email; unsigned long committer_date; + int committer_tz; char *subject; char *msg; char *msg_encoding;

@@ -142,6 +144,7 @@ struct taginfo {

char *tagger; char *tagger_email; unsigned long tagger_date; + int tagger_tz; char *msg; };
M parsing.cparsing.c

@@ -69,7 +69,7 @@ buf[tail - head] = '\0';

return buf; } -static void parse_user(const char *t, char **name, char **email, unsigned long *date) +static void parse_user(const char *t, char **name, char **email, unsigned long *date, int *tz) { struct ident_split ident; unsigned email_len;

@@ -83,6 +83,8 @@ sprintf(*email, "<%.*s>", email_len, ident.mail_begin);

if (ident.date_begin) *date = strtoul(ident.date_begin, NULL, 10); + if (ident.tz_begin) + *tz = atoi(ident.tz_begin); } }

@@ -147,13 +149,13 @@ p += sha1hex_len + 1;

if (p && skip_prefix(p, "author ", &p)) { parse_user(p, &ret->author, &ret->author_email, - &ret->author_date); + &ret->author_date, &ret->author_tz); p = next_header_line(p); } if (p && skip_prefix(p, "committer ", &p)) { parse_user(p, &ret->committer, &ret->committer_email, - &ret->committer_date); + &ret->committer_date, &ret->committer_tz); p = next_header_line(p); }

@@ -208,7 +210,7 @@

for (p = data; !end_of_header(p); p = next_header_line(p)) { if (skip_prefix(p, "tagger ", &p)) { parse_user(p, &ret->tagger, &ret->tagger_email, - &ret->tagger_date); + &ret->tagger_date, &ret->tagger_tz); } }