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
master
psykose 2021-10-26 10:14:17 +02:00 committed by C. McEnroe
parent fca48fd05d
commit 27b5fd0251
1 changed files with 1 additions and 1 deletions

View File

@ -91,7 +91,7 @@ static const time_t *tagTime(const struct Message *msg) {
static time_t time; static time_t time;
struct tm tm; struct tm tm;
if (!msg->tags[TagTime]) return NULL; 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); time = timegm(&tm);
return &time; return &time;
} }