diff options
-rw-r--r-- | .travis.yml | 4 | ||||
-rw-r--r-- | apt-pkg/contrib/strutl.cc | 5 | ||||
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 4 | ||||
-rw-r--r-- | ftparchive/writer.cc | 27 |
4 files changed, 19 insertions, 21 deletions
diff --git a/.travis.yml b/.travis.yml index 2a648c940..a076d3e4c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,15 +3,13 @@ sudo: required dist: trusty before_install: - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ wily main universe' -y - - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - | sudo sh -c '/bin/echo -e "Package: *\nPin: release n=wily\nPin-Priority: 1" > /etc/apt/preferences.d/wily' - sudo apt-get update -qq install: - sudo ./prepare-release travis-ci - sudo apt-get -qq -y -t wily install gettext liblz4-dev python3-apt - - sudo apt-get -qq -y install gcc-5 g++-5 - - CC=gcc-5 CXX=g++-5 make + - make script: - make test - ./test/integration/run-tests -q diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc index 1d9577125..d0bc938e4 100644 --- a/apt-pkg/contrib/strutl.cc +++ b/apt-pkg/contrib/strutl.cc @@ -757,7 +757,10 @@ string TimeRFC1123(time_t Date) auto const posix = std::locale("C.UTF-8"); std::ostringstream datestr; datestr.imbue(posix); - datestr << std::put_time(&Conv, "%a, %d %b %Y %H:%M:%S GMT"); + APT::StringView const fmt("%a, %d %b %Y %H:%M:%S GMT"); + std::use_facet<std::time_put<char>>(posix).put( + std::ostreambuf_iterator<char>(datestr), + datestr, ' ', &Conv, fmt.data(), fmt.data() + fmt.size()); return datestr.str(); } /*}}}*/ diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index d8e838882..5e27c2686 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -1233,9 +1233,9 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) if (notconfidx != std::numeric_limits<decltype(notconfidx)>::max()) { if (ConfigurePending) - List.erase(std::next(List.cbegin(), notconfidx), std::prev(List.cend())); + List.erase(std::next(List.begin(), notconfidx), std::prev(List.end())); else - List.erase(std::next(List.cbegin(), notconfidx), List.cend()); + List.erase(std::next(List.begin(), notconfidx), List.end()); } d->stdin_is_dev_null = false; diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index 1036ce0b8..dbeaa16a6 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -967,6 +967,15 @@ bool ContentsWriter::ReadFromPkgs(string const &PkgFile,string const &PkgCompres // ReleaseWriter::ReleaseWriter - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ +static std::string formatUTCDateTime(time_t const now) +{ + // TimeRFC1123 uses GMT to satisfy HTTP/1.1 + std::string datetime = TimeRFC1123(now); + auto const lastspace = datetime.rfind(' '); + if (likely(lastspace != std::string::npos)) + datetime.replace(lastspace + 1, 3, "UTC"); + return datetime; +} ReleaseWriter::ReleaseWriter(FileFd * const GivenOutput, string const &/*DB*/) : FTWScanner(GivenOutput) { if (_config->FindB("APT::FTPArchive::Release::Default-Patterns", true) == true) @@ -988,20 +997,7 @@ 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"); - time_t const validuntil = now + _config->FindI("APT::FTPArchive::Release::ValidTime", 0); - std::ostringstream validstr; - if (validuntil != now) - { - datestr.imbue(posix); - validstr << std::put_time(gmtime(&validuntil), "%a, %d %b %Y %H:%M:%S UTC"); - } map<string,string> Fields; Fields["Origin"] = ""; @@ -1009,8 +1005,9 @@ ReleaseWriter::ReleaseWriter(FileFd * const GivenOutput, string const &/*DB*/) : Fields["Suite"] = ""; Fields["Version"] = ""; Fields["Codename"] = ""; - Fields["Date"] = datestr.str(); - Fields["Valid-Until"] = validstr.str(); + Fields["Date"] = formatUTCDateTime(now); + if (validuntil != now) + Fields["Valid-Until"] = formatUTCDateTime(validuntil); Fields["Architectures"] = ""; Fields["Components"] = ""; Fields["Description"] = ""; |