From 27b5fd0251276fce156ef066f11086cfba941804 Mon Sep 17 00:00:00 2001 From: psykose Date: Tue, 26 Oct 2021 10:14:17 +0200 Subject: [PATCH] Fix strptime decode for musl libc POSIX does not define a %F for strptime[1], but does define %F for strftime[2]. Afaik most libc's implement %F for both, but musl is very standards-compliant and does not have %F on strptime, leading to unparsed message tag times, which causes all backlog sent from bouncer on startup to have a timestamp of the current time, instead of the actual timestamp sent. [1] https://pubs.opengroup.org/onlinepubs/9699919799/functions/strptime.html [2] https://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html --- handle.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handle.c b/handle.c index 7b9835f..61b645d 100644 --- a/handle.c +++ b/handle.c @@ -91,7 +91,7 @@ static const time_t *tagTime(const struct Message *msg) { static time_t time; struct tm tm; if (!msg->tags[TagTime]) return NULL; - if (!strptime(msg->tags[TagTime], "%FT%T", &tm)) return NULL; + if (!strptime(msg->tags[TagTime], "%Y-%m-%dT%T", &tm)) return NULL; time = timegm(&tm); return &time; }