ui-atom: avoid DATE_STRFTIME

Git's DATE_STRFTIME ignores the timezone argument and just uses the
local timezone regardless of whether the "local" flag is set.

Since Atom accepts ISO8601 dates [1], we can use Git's
DATE_ISO8601_STRICT instead, which does get this right.  Additionally,
we never use the local timezone here so we can use the
date_mode_from_type() wrapper to simplify the code a bit.

[1] https://tools.ietf.org/html/rfc4287#section-3.3

Signed-off-by: John Keeping <john@keeping.me.uk>
This commit is contained in:
John Keeping 2016-02-08 15:06:27 +00:00 committed by Jason A. Donenfeld
parent 9c15f3c695
commit 75298209bf
2 changed files with 4 additions and 12 deletions

5
cgit.h
View File

@ -29,11 +29,6 @@
#undef isgraph
#define isgraph(x) (isprint((x)) && !isspace((x)))
/*
* Dateformats used on misc. pages
*/
#define FMT_ATOMDATE "%Y-%m-%dT%H:%M:%SZ"
/*
* Limits used for relative dates

View File

@ -17,11 +17,6 @@ static void add_entry(struct commit *commit, const char *host)
char *hex;
char *mail, *t, *t2;
struct commitinfo *info;
struct date_mode mode = {
.type = DATE_STRFTIME,
.strftime_fmt = FMT_ATOMDATE,
.local = 0,
};
info = cgit_parse_commit(commit);
hex = oid_to_hex(&commit->object.oid);
@ -30,7 +25,8 @@ static void add_entry(struct commit *commit, const char *host)
html_txt(info->subject);
html("</title>\n");
html("<updated>");
html_txt(show_date(info->committer_date, 0, &mode));
html_txt(show_date(info->committer_date, 0,
date_mode_from_type(DATE_ISO8601_STRICT)));
html("</updated>\n");
html("<author>\n");
if (info->author) {
@ -55,7 +51,8 @@ static void add_entry(struct commit *commit, const char *host)
}
html("</author>\n");
html("<published>");
html_txt(show_date(info->author_date, 0, &mode));
html_txt(show_date(info->author_date, 0,
date_mode_from_type(DATE_ISO8601_STRICT)));
html("</published>\n");
if (host) {
char *pageurl;