diff options
| author | John Keeping | 2016-01-19 19:33:02 +0000 | 
|---|---|---|
| committer | Jason A. Donenfeld | 2016-02-08 14:20:08 +0100 | 
| commit | 45c87ca1c32dcd5ffd4a681fadf05627d9ce7770 (patch) | |
| tree | 72eed2b70999596c13ba3502caacaf91962e68df /parsing.c | |
| parent | 57ea1aa2a5eab7f6aba702b3366fe4dcc72124f6 (diff) | |
| download | cgit-45c87ca1c32dcd5ffd4a681fadf05627d9ce7770.tar.gz cgit-45c87ca1c32dcd5ffd4a681fadf05627d9ce7770.tar.bz2 cgit-45c87ca1c32dcd5ffd4a681fadf05627d9ce7770.zip  | |
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>
Diffstat (limited to 'parsing.c')
| -rw-r--r-- | parsing.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| @@ -69,7 +69,7 @@ static char *substr(const char *head, const char *tail) | |||
| 69 | return buf; | 69 | return buf; | 
| 70 | } | 70 | } | 
| 71 | 71 | ||
| 72 | static void parse_user(const char *t, char **name, char **email, unsigned long *date) | 72 | static void parse_user(const char *t, char **name, char **email, unsigned long *date, int *tz) | 
| 73 | { | 73 | { | 
| 74 | struct ident_split ident; | 74 | struct ident_split ident; | 
| 75 | unsigned email_len; | 75 | unsigned email_len; | 
| @@ -83,6 +83,8 @@ static void parse_user(const char *t, char **name, char **email, unsigned long * | |||
| 83 | 83 | ||
| 84 | if (ident.date_begin) | 84 | if (ident.date_begin) | 
| 85 | *date = strtoul(ident.date_begin, NULL, 10); | 85 | *date = strtoul(ident.date_begin, NULL, 10); | 
| 86 | if (ident.tz_begin) | ||
| 87 | *tz = atoi(ident.tz_begin); | ||
| 86 | } | 88 | } | 
| 87 | } | 89 | } | 
| 88 | 90 | ||
| @@ -147,13 +149,13 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) | |||
| 147 | 149 | ||
| 148 | if (p && skip_prefix(p, "author ", &p)) { | 150 | if (p && skip_prefix(p, "author ", &p)) { | 
| 149 | parse_user(p, &ret->author, &ret->author_email, | 151 | parse_user(p, &ret->author, &ret->author_email, | 
| 150 | &ret->author_date); | 152 | &ret->author_date, &ret->author_tz); | 
| 151 | p = next_header_line(p); | 153 | p = next_header_line(p); | 
| 152 | } | 154 | } | 
| 153 | 155 | ||
| 154 | if (p && skip_prefix(p, "committer ", &p)) { | 156 | if (p && skip_prefix(p, "committer ", &p)) { | 
| 155 | parse_user(p, &ret->committer, &ret->committer_email, | 157 | parse_user(p, &ret->committer, &ret->committer_email, | 
| 156 | &ret->committer_date); | 158 | &ret->committer_date, &ret->committer_tz); | 
| 157 | p = next_header_line(p); | 159 | p = next_header_line(p); | 
| 158 | } | 160 | } | 
| 159 | 161 | ||
| @@ -208,7 +210,7 @@ struct taginfo *cgit_parse_tag(struct tag *tag) | |||
| 208 | for (p = data; !end_of_header(p); p = next_header_line(p)) { | 210 | for (p = data; !end_of_header(p); p = next_header_line(p)) { | 
| 209 | if (skip_prefix(p, "tagger ", &p)) { | 211 | if (skip_prefix(p, "tagger ", &p)) { | 
| 210 | parse_user(p, &ret->tagger, &ret->tagger_email, | 212 | parse_user(p, &ret->tagger, &ret->tagger_email, | 
| 211 | &ret->tagger_date); | 213 | &ret->tagger_date, &ret->tagger_tz); | 
| 212 | } | 214 | } | 
| 213 | } | 215 | } | 
| 214 | 216 | ||
