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>
This commit is contained in:
джерело
57ea1aa2a5
коміт
45c87ca1c3
3
cgit.h
3
cgit.h
@ -130,9 +130,11 @@ struct commitinfo {
|
||||
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;
|
||||
};
|
||||
|
||||
|
10
parsing.c
10
parsing.c
@ -69,7 +69,7 @@ static char *substr(const char *head, const char *tail)
|
||||
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 @@ static void parse_user(const char *t, char **name, char **email, unsigned long *
|
||||
|
||||
if (ident.date_begin)
|
||||
*date = strtoul(ident.date_begin, NULL, 10);
|
||||
if (ident.tz_begin)
|
||||
*tz = atoi(ident.tz_begin);
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,13 +149,13 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
|
||||
|
||||
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 @@ struct taginfo *cgit_parse_tag(struct tag *tag)
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Завантаження…
Посилання в новій задачі
Block a user