void-packages/srcpkgs/mpd/patches/dont-use-glibc-extension.patch

37 lines
1.5 KiB
Diff

From 18f6e76a07245b9cc8d87cd9b582d4e7252494d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89rico=20Rolim?= <erico.erc@gmail.com>
Date: Thu, 25 Feb 2021 14:21:36 -0300
Subject: [PATCH] storage/plugins/CurlStorage: don't use glibc extension in
ParseTimePoint.
%Z is a glibc extension to strptime, and is a no-op there, due to the
mapping between timezone names and their definition (especially when the
name comes from a different machine) being ambiguous / impossible. Time
in HTTP headers is guaranteed to be UTC.
Passing an unknown format to strptime() implementations that don't
support it will generally cause them to return NULL, which will lead to
ParseTimePoint throwing an exception and ParseTimeStamp using an
unnecessary fallback.
Since the timezone name goes at the end of the string, we don't need to
use %Z to skip it (could be an issue in a different time stamp format),
so simply removing %Z works best.
---
src/storage/plugins/CurlStorage.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/storage/plugins/CurlStorage.cxx b/src/storage/plugins/CurlStorage.cxx
index d05b90a31..9d862eb32 100644
--- a/src/storage/plugins/CurlStorage.cxx
+++ b/src/storage/plugins/CurlStorage.cxx
@@ -193,7 +193,7 @@ ParseTimeStamp(const char *s)
{
try {
// TODO: make this more robust
- return ParseTimePoint(s, "%a, %d %b %Y %T %Z");
+ return ParseTimePoint(s, "%a, %d %b %Y %T");
} catch (...) {
return std::chrono::system_clock::time_point::min();
}