summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qtimezoneprivate_tz.cpp
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2019-05-03 15:46:57 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2019-05-10 14:17:22 +0000
commit0fb30652b54aa0d36b9720becd9f3c3deb7a7806 (patch)
tree25c41229a6fb5d7cfff40b0d9deb1e808eefe16f /src/corelib/tools/qtimezoneprivate_tz.cpp
parentab2655c559f42e382c13e21a3bea65fb21af95eb (diff)
Add support for /etc/TZ as default value for $TZ
This is used by uClibc, at least. [ChangeLog][QtCore][QTimeZone] The TZDB back-end now recognizes the contents of /etc/TZ as a fall-back for $TZ (as used by uClibc). Fixes: QTBUG-75565 Change-Id: I3067e2d023cf30a85633575b5d7dc0ee3ec36927 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools/qtimezoneprivate_tz.cpp')
-rw-r--r--src/corelib/tools/qtimezoneprivate_tz.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/corelib/tools/qtimezoneprivate_tz.cpp b/src/corelib/tools/qtimezoneprivate_tz.cpp
index d9e87212d3..f5440799ab 100644
--- a/src/corelib/tools/qtimezoneprivate_tz.cpp
+++ b/src/corelib/tools/qtimezoneprivate_tz.cpp
@@ -659,7 +659,7 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId)
if (!tzif.open(QIODevice::ReadOnly)) {
tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId));
if (!tzif.open(QIODevice::ReadOnly)) {
- // ianaId may be a POSIX rule, taken from $TZ
+ // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
const QByteArray zoneInfo = ianaId.split(',').at(0);
const char *begin = zoneInfo.constBegin();
if (PosixZone::parse(begin, zoneInfo.constEnd()).hasValidOffset()
@@ -1114,6 +1114,13 @@ QByteArray QTzTimeZonePrivate::systemTimeZoneId() const
}
}
+ // Some systems (e.g. uClibc) have a default value for $TZ in /etc/TZ:
+ if (ianaId.isEmpty()) {
+ QFile zone(QStringLiteral("/etc/TZ"));
+ if (zone.open(QIODevice::ReadOnly))
+ ianaId = zone.readAll().trimmed();
+ }
+
// Give up for now and return UTC
if (ianaId.isEmpty())
ianaId = utcQByteArray();