From 212863d1cef4b9a596df13584f29fcdd645cbab2 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Thu, 9 Apr 2020 20:50:09 -0400 Subject: Render date in HTML envelope --- archive.c | 3 +++ archive.h | 1 + html.c | 9 +++++++++ 3 files changed, 13 insertions(+) diff --git a/archive.c b/archive.c index fd8ef53..ca56c8c 100644 --- a/archive.c +++ b/archive.c @@ -142,6 +142,9 @@ static struct Envelope parseEnvelope(struct List list) { date = strptime(date, "%a, %e %b %Y %H:%M:%S %z", &envelope.date); if (!date) errx(EX_PROTOCOL, "invalid envelope date format"); + envelope.date.tm_isdst = -1; + envelope.utc = mktime(&envelope.date); + if (list.ptr[Subject].type != String) { errx(EX_PROTOCOL, "invalid envelope subject field"); } diff --git a/archive.h b/archive.h index 3d3cfc5..6cc7c5f 100644 --- a/archive.h +++ b/archive.h @@ -30,6 +30,7 @@ struct AddressList { }; struct Envelope { + time_t utc; struct tm date; char *subject; struct Address from, sender, replyTo; diff --git a/html.c b/html.c index 50a8378..3ebf9c3 100644 --- a/html.c +++ b/html.c @@ -35,6 +35,7 @@ static const char *Envelope = TEMPLATE(
[from]
+ ); @@ -66,11 +67,19 @@ int htmlEnvelope(FILE *file, const struct Envelope *envelope) { const char *from = envelope->from.name; if (!from) from = envelope->from.mailbox; + char utc[sizeof("0000-00-00T00:00:00Z")]; + strftime(utc, sizeof(utc), "%FT%TZ", gmtime(&envelope->utc)); + + char date[256]; + strftime(date, sizeof(date), "%c %z", &envelope->date); + struct Variable vars[] = { { "messageID", envelope->messageID }, { "subject", envelope->subject }, { "mailto", mailto }, { "from", from }, + { "utc", utc }, + { "date", date }, {0}, }; error = templateRender(file, Envelope, vars, escapeXML); -- cgit 1.4.1