summaryrefslogtreecommitdiffstats
path: root/src/corelib/time/qtimezoneprivate_tz.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-04-08 01:01:05 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-04-08 01:01:06 +0200
commit34adcabc6c294150ba530374fba5b05b43c1ca49 (patch)
tree6f8f9af5d5e724cffc5d7735c22a1c7a42e49493 /src/corelib/time/qtimezoneprivate_tz.cpp
parent603eaa9fbb250ce1f4ec5a5a9750a115ef08a956 (diff)
parent2a4e6124ac1f0c7beb061365a18146ca1f1e6233 (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
Diffstat (limited to 'src/corelib/time/qtimezoneprivate_tz.cpp')
-rw-r--r--src/corelib/time/qtimezoneprivate_tz.cpp30
1 files changed, 5 insertions, 25 deletions
diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
index 09a04767bf..01f9a6cce0 100644
--- a/src/corelib/time/qtimezoneprivate_tz.cpp
+++ b/src/corelib/time/qtimezoneprivate_tz.cpp
@@ -639,7 +639,7 @@ QTzTimeZonePrivate::QTzTimeZonePrivate()
// Create a named time zone
QTzTimeZonePrivate::QTzTimeZonePrivate(const QByteArray &ianaId)
{
- init(ianaId);
+ init(ianaId.isEmpty() ? systemTimeZoneId() : ianaId);
}
QTzTimeZonePrivate::~QTzTimeZonePrivate()
@@ -852,13 +852,16 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::fetchEntry(const QByteArray &ianaId)
void QTzTimeZonePrivate::init(const QByteArray &ianaId)
{
+ // System ID defaults to UTC, so is never empty; and our callers default to
+ // the system ID if what they're given is empty.
+ Q_ASSERT(!ianaId.isEmpty());
static QTzTimeZoneCache tzCache;
const auto &entry = tzCache.fetchEntry(ianaId);
if (entry.m_tranTimes.isEmpty() && entry.m_posixRule.isEmpty())
return; // Invalid after all !
cached_data = std::move(entry);
- m_id = ianaId.isEmpty() ? systemTimeZoneId() : ianaId;
+ m_id = ianaId;
}
QLocale::Country QTzTimeZonePrivate::country() const
@@ -1150,29 +1153,6 @@ QByteArray QTzTimeZonePrivate::systemTimeZoneId() const
}
}
- // On Debian Etch up to Jessie, /etc/localtime is a copy of the relevant
- // zoneinfo file, whose name is recorded in /etc/timezone:
- if (ianaId.isEmpty()) {
- QFile tzif(QStringLiteral("/etc/timezone"));
- if (tzif.open(QIODevice::ReadOnly))
- ianaId = tzif.readAll().trimmed();
- }
-
- // On some Red Hat distros /etc/localtime is real file with name held in /etc/sysconfig/clock
- // in a line like ZONE="Europe/Oslo" or TIMEZONE="Europe/Oslo"
- if (ianaId.isEmpty()) {
- QFile tzif(QStringLiteral("/etc/sysconfig/clock"));
- if (tzif.open(QIODevice::ReadOnly)) {
- while (ianaId.isEmpty() && !tzif.atEnd()) {
- const QByteArray line(tzif.readLine().trimmed());
- if (line.startsWith("ZONE="))
- ianaId = line.mid(6, line.length() - 7);
- else if (line.startsWith("TIMEZONE="))
- ianaId = line.mid(10, line.length() - 11);
- }
- }
- }
-
// Some systems (e.g. uClibc) have a default value for $TZ in /etc/TZ:
if (ianaId.isEmpty()) {
QFile zone(QStringLiteral("/etc/TZ"));