| From 7ef2b2dba0e0bee450da3c8450ea782a3e7d6429 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com> |
| Date: Tue, 22 Aug 2017 11:49:01 -0500 |
| Subject: [PATCH 3/3] Revert "avoid changing the global LC_TIME for Release |
| writing" |
| |
| This reverts commit 78e7b683c645e907db12658405a4b201a6243ea8. |
| |
| After we drop debian8 and centos7 that has gcc < 5 (std::put_time not available) |
| versions this patch can be remove. |
| |
| Signed-off-by: Anibal Limon <limon.anibal@gmail.com> |
| |
| Upstream-Status: Inappropriate [embedded specific] |
| --- |
| ftparchive/writer.cc | 29 +++++++++++++++++------------ |
| 1 file changed, 17 insertions(+), 12 deletions(-) |
| |
| diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc |
| index 2596382..e43a643 100644 |
| --- a/ftparchive/writer.cc |
| +++ b/ftparchive/writer.cc |
| @@ -37,7 +37,6 @@ |
| #include <unistd.h> |
| #include <ctime> |
| #include <iostream> |
| -#include <iomanip> |
| #include <sstream> |
| #include <memory> |
| #include <utility> |
| @@ -984,29 +983,35 @@ ReleaseWriter::ReleaseWriter(FileFd * const GivenOutput, string const &/*DB*/) : |
| AddPatterns(_config->FindVector("APT::FTPArchive::Release::Patterns")); |
| |
| time_t const now = time(NULL); |
| - auto const posix = std::locale("C.UTF-8"); |
| |
| - // FIXME: use TimeRFC1123 here? But that uses GMT to satisfy HTTP/1.1 |
| - std::ostringstream datestr; |
| - datestr.imbue(posix); |
| - datestr << std::put_time(gmtime(&now), "%a, %d %b %Y %H:%M:%S UTC"); |
| + setlocale(LC_TIME, "C"); |
| + |
| + char datestr[128]; |
| + if (strftime(datestr, sizeof(datestr), "%a, %d %b %Y %H:%M:%S UTC", |
| + gmtime(&now)) == 0) |
| + { |
| + datestr[0] = '\0'; |
| + } |
| |
| time_t const validuntil = now + _config->FindI("APT::FTPArchive::Release::ValidTime", 0); |
| - std::ostringstream validstr; |
| - if (validuntil != now) |
| + char validstr[128]; |
| + if (now == validuntil || |
| + strftime(validstr, sizeof(validstr), "%a, %d %b %Y %H:%M:%S UTC", |
| + gmtime(&validuntil)) == 0) |
| { |
| - datestr.imbue(posix); |
| - validstr << std::put_time(gmtime(&validuntil), "%a, %d %b %Y %H:%M:%S UTC"); |
| + validstr[0] = '\0'; |
| } |
| |
| + setlocale(LC_TIME, ""); |
| + |
| map<string,string> Fields; |
| Fields["Origin"] = ""; |
| Fields["Label"] = ""; |
| Fields["Suite"] = ""; |
| Fields["Version"] = ""; |
| Fields["Codename"] = ""; |
| - Fields["Date"] = datestr.str(); |
| - Fields["Valid-Until"] = validstr.str(); |
| + Fields["Date"] = datestr; |
| + Fields["Valid-Until"] = validstr; |
| Fields["Architectures"] = ""; |
| Fields["Components"] = ""; |
| Fields["Description"] = ""; |
| -- |
| 2.1.4 |
| |