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 | |
parent | ui-shared: remove "format" from cgit_print_age() (diff) | |
download | cgit-45c87ca1c32dcd5ffd4a681fadf05627d9ce7770.tar.gz 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>
-rw-r--r-- | cgit.h | 3 | ||||
-rw-r--r-- | parsing.c | 10 |
2 files changed, 9 insertions, 4 deletions
diff --git a/cgit.h b/cgit.h index de5c94a..501cb48 100644 --- a/cgit.h +++ b/cgit.h | |||
@@ -130,9 +130,11 @@ struct commitinfo { | |||
130 | char *author; | 130 | char *author; |
131 | char *author_email; | 131 | char *author_email; |
132 | unsigned long author_date; | 132 | unsigned long author_date; |
133 | int author_tz; | ||
133 | char *committer; | 134 | char *committer; |
134 | char *committer_email; | 135 | char *committer_email; |
135 | unsigned long committer_date; | 136 | unsigned long committer_date; |
137 | int committer_tz; | ||
136 | char *subject; | 138 | char *subject; |
137 | char *msg; | 139 | char *msg; |
138 | char *msg_encoding; | 140 | char *msg_encoding; |
@@ -142,6 +144,7 @@ struct taginfo { | |||
142 | char *tagger; | 144 | char *tagger; |
143 | char *tagger_email; | 145 | char *tagger_email; |
144 | unsigned long tagger_date; | 146 | unsigned long tagger_date; |
147 | int tagger_tz; | ||
145 | char *msg; | 148 | char *msg; |
146 | }; | 149 | }; |
147 | 150 | ||
diff --git a/parsing.c b/parsing.c index 5283e58..9dacb16 100644 --- a/parsing.c +++ b/parsing.c | |||
@@ -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 | ||