about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-04-13 12:43:56 -0400
committerJune McEnroe <june@causal.agency>2020-04-13 12:43:56 -0400
commitd031cf5f00de4bf6b33396f1a448833a6de33c5f (patch)
treeaa80e5cda92bfc2d3338f7020a8ab75ca1369cf5
parentRework path functions again (diff)
downloadbubger-d031cf5f00de4bf6b33396f1a448833a6de33c5f.tar.gz
bubger-d031cf5f00de4bf6b33396f1a448833a6de33c5f.zip
Use UTC date everywhere
I thought I could preserve the original time zone but it turns out that
libc is just too shit to do that.
Diffstat (limited to '')
-rw-r--r--archive.h3
-rw-r--r--atom.c2
-rw-r--r--html.c9
-rw-r--r--parse.c13
4 files changed, 11 insertions, 16 deletions
diff --git a/archive.h b/archive.h
index 6342236..0dac623 100644
--- a/archive.h
+++ b/archive.h
@@ -40,8 +40,7 @@ struct AddressList {
 };
 
 struct Envelope {
-	time_t utc;
-	struct tm date;
+	time_t date;
 	char *subject;
 	struct Address from, sender, replyTo;
 	struct AddressList to, cc, bcc;
diff --git a/atom.c b/atom.c
index 83a4457..aa98406 100644
--- a/atom.c
+++ b/atom.c
@@ -33,7 +33,7 @@ static char *atomID(const char *messageID) {
 int atomEntryOpen(FILE *file, const struct Envelope *envelope) {
 	char *id = atomID(envelope->messageID);
 	char date[sizeof("0000-00-00T00:00:00Z")];
-	strftime(date, sizeof(date), "%FT%TZ", gmtime(&envelope->utc));
+	strftime(date, sizeof(date), "%FT%TZ", gmtime(&envelope->date));
 	struct Variable vars[] = {
 		{ "subject", envelope->subject },
 		{ "from.name", addressName(envelope->from) },
diff --git a/html.c b/html.c
index e92ab0a..808e799 100644
--- a/html.c
+++ b/html.c
@@ -89,10 +89,8 @@ int htmlMessageHead(FILE *file, const struct Envelope *envelope) {
 	);
 	char *mbox = templateURL("../message/[pathID].mbox", urlVars);
 
-	char date[256];
-	char utc[sizeof("0000-00-00T00:00:00Z")];
-	strftime(date, sizeof(date), "%c %z", &envelope->date);
-	strftime(utc, sizeof(utc), "%FT%TZ", gmtime(&envelope->utc));
+	char date[sizeof("0000-00-00T00:00:00Z")];
+	strftime(date, sizeof(date), "%FT%TZ", gmtime(&envelope->date));
 	struct Variable vars[] = {
 		{ "messageID", envelope->messageID },
 		{ "fragment", fragment },
@@ -100,7 +98,6 @@ int htmlMessageHead(FILE *file, const struct Envelope *envelope) {
 		{ "mailto", mailto },
 		{ "from", addressName(envelope->from) },
 		{ "date", date },
-		{ "utc", utc },
 		{ "mbox", mbox },
 		{0},
 	};
@@ -109,7 +106,7 @@ int htmlMessageHead(FILE *file, const struct Envelope *envelope) {
 		<summary>
 			<a class="subject" href="[fragment]">[subject]</a>
 			<address class="from"><a href="[mailto]">[from]</a></address>
-			<time datetime="[utc]">[date]</time>
+			<time datetime="[date]">[date]</time>
 			<a class="mbox" href="[mbox]">mbox</a>
 		</summary>
 	);
diff --git a/parse.c b/parse.c
index 6f1a56b..8d3205d 100644
--- a/parse.c
+++ b/parse.c
@@ -66,21 +66,20 @@ void parseEnvelope(struct Envelope *envelope, struct List list) {
 		errx(EX_PROTOCOL, "missing envelope structure fields");
 	}
 
+	struct tm tm;
 	const char *date = dataCheck(list.ptr[Date], String).string;
 	if (isalpha(date[0])) {
-		date = strptime(date, "%a, %e %b %Y %H:%M:%S ", &envelope->date);
+		date = strptime(date, "%a, %e %b %Y %H:%M:%S ", &tm);
 	} else {
-		date = strptime(date, "%e %b %Y %H:%M:%S ", &envelope->date);
+		date = strptime(date, "%e %b %Y %H:%M:%S ", &tm);
 	}
 	if (date && (date[0] == '+' || date[0] == '-')) {
-		date = strptime(date, "%z", &envelope->date);
+		date = strptime(date, "%z", &tm);
 	} else if (date) {
-		date = strptime(date, "%Z", &envelope->date);
+		date = strptime(date, "%Z", &tm);
 	}
 	if (!date) errx(EX_PROTOCOL, "invalid envelope date format");
-
-	envelope->date.tm_isdst = -1;
-	envelope->utc = mktime(&envelope->date);
+	envelope->date = mktime(&tm);
 
 	// TODO: Decode UTF-8 in subject.
 	envelope->subject = strdup(dataCheck(list.ptr[Subject], String).string);
aafc&follow=1'>Reorganize UI code for the umpteenth timeJune McEnroe It's actually in a good state now, I think. 2019-02-21Replace "view" with "window"June McEnroe I think originally I didn't want to use the same word as curses WINDOW but it's really much clearer for the user if they're just called windows. UI code probably needs yet another rewrite though. Still feels messy. 2019-02-21Remove ROT13June McEnroe It's just not convenient when it can only do the whole line... 2019-02-21Clean up man pageJune McEnroe 2019-01-26Draw UI before connectingJune McEnroe Otherwise the "Traveling" message isn't visible while connecting. 2019-01-25Avoid unused variable warnings with getyxJune McEnroe 2019-01-25Add GNU/Linux build instructionsJune McEnroe