From 19be46414ae68c619b94f2fdebd21192898d65fd Mon Sep 17 00:00:00 2001 From: John Layt Date: Tue, 7 Jan 2014 17:10:19 +0100 Subject: QTimeZone - Change from Olson ID to IANA ID Complete changes from using Olsen/Olson in the code to IANA. Completes a change started in 5.2 release branch on the public occurrences. Change-Id: Ib077fcda2c77eef6f04ec28901d8d2d7210b8c72 Reviewed-by: Thiago Macieira --- src/corelib/tools/qtimezoneprivate_tz.cpp | 44 +++++++++++++++---------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'src/corelib/tools/qtimezoneprivate_tz.cpp') diff --git a/src/corelib/tools/qtimezoneprivate_tz.cpp b/src/corelib/tools/qtimezoneprivate_tz.cpp index a1607f6577..b4ea91e626 100644 --- a/src/corelib/tools/qtimezoneprivate_tz.cpp +++ b/src/corelib/tools/qtimezoneprivate_tz.cpp @@ -523,12 +523,12 @@ QTzTimeZonePrivate::QTzTimeZonePrivate() } // Create a named time zone -QTzTimeZonePrivate::QTzTimeZonePrivate(const QByteArray &olsenId) +QTzTimeZonePrivate::QTzTimeZonePrivate(const QByteArray &ianaId) #ifdef QT_USE_ICU : m_icu(0) #endif // QT_USE_ICU { - init(olsenId); + init(ianaId); } QTzTimeZonePrivate::QTzTimeZonePrivate(const QTzTimeZonePrivate &other) @@ -550,19 +550,19 @@ QTimeZonePrivate *QTzTimeZonePrivate::clone() return new QTzTimeZonePrivate(*this); } -void QTzTimeZonePrivate::init(const QByteArray &olsenId) +void QTzTimeZonePrivate::init(const QByteArray &ianaId) { QFile tzif; - if (olsenId.isEmpty()) { + if (ianaId.isEmpty()) { // Open system tz tzif.setFileName(QStringLiteral("/etc/localtime")); if (!tzif.open(QIODevice::ReadOnly)) return; } else { // Open named tz, try modern path first, if fails try legacy path - tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(olsenId)); + tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); if (!tzif.open(QIODevice::ReadOnly)) { - tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(olsenId)); + tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); if (!tzif.open(QIODevice::ReadOnly)) return; } @@ -667,10 +667,10 @@ void QTzTimeZonePrivate::init(const QByteArray &olsenId) m_tranTimes.append(tran); } - if (olsenId.isEmpty()) + if (ianaId.isEmpty()) m_id = systemTimeZoneId(); else - m_id = olsenId; + m_id = ianaId; } QLocale::Country QTzTimeZonePrivate::country() const @@ -912,55 +912,55 @@ QTimeZonePrivate::Data QTzTimeZonePrivate::previousTransition(qint64 beforeMSecs QByteArray QTzTimeZonePrivate::systemTimeZoneId() const { // Check TZ env var first, if not populated try find it - QByteArray olsenId = qgetenv("TZ"); - if (!olsenId.isEmpty() && olsenId.at(0) == ':') - olsenId = olsenId.mid(1); + QByteArray ianaId = qgetenv("TZ"); + if (!ianaId.isEmpty() && ianaId.at(0) == ':') + ianaId = ianaId.mid(1); // On Debian Etch and later /etc/localtime is real file with name held in /etc/timezone - if (olsenId.isEmpty()) { + if (ianaId.isEmpty()) { QFile tzif(QStringLiteral("/etc/timezone")); if (tzif.open(QIODevice::ReadOnly)) { // TODO QTextStream inefficient, replace later QTextStream ts(&tzif); if (!ts.atEnd()) - olsenId = ts.readLine().toUtf8(); + ianaId = ts.readLine().toUtf8(); } } // On other distros /etc/localtime is symlink to real file so can extract name from the path - if (olsenId.isEmpty()) { + if (ianaId.isEmpty()) { const QString path = QFile::symLinkTarget(QStringLiteral("/etc/localtime")); if (!path.isEmpty()) { // /etc/localtime is a symlink to the current TZ file, so extract from path int index = path.indexOf(QLatin1String("/zoneinfo/")) + 10; - olsenId = path.mid(index).toUtf8(); + ianaId = path.mid(index).toUtf8(); } } // 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 (olsenId.isEmpty()) { + if (ianaId.isEmpty()) { QFile tzif(QStringLiteral("/etc/sysconfig/clock")); if (tzif.open(QIODevice::ReadOnly)) { // TODO QTextStream inefficient, replace later QTextStream ts(&tzif); QString line; - while (olsenId.isEmpty() && !ts.atEnd() && ts.status() == QTextStream::Ok) { + while (ianaId.isEmpty() && !ts.atEnd() && ts.status() == QTextStream::Ok) { line = ts.readLine(); if (line.left(5) == QStringLiteral("ZONE=")) { - olsenId = line.mid(6, line.size() - 7).toUtf8(); + ianaId = line.mid(6, line.size() - 7).toUtf8(); } else if (line.left(9) == QStringLiteral("TIMEZONE=")) { - olsenId = line.mid(10, line.size() - 11).toUtf8(); + ianaId = line.mid(10, line.size() - 11).toUtf8(); } } } } // Give up for now and return UTC - if (olsenId.isEmpty()) - olsenId = QByteArrayLiteral("UTC"); + if (ianaId.isEmpty()) + ianaId = QByteArrayLiteral("UTC"); - return olsenId; + return ianaId; } QSet QTzTimeZonePrivate::availableTimeZoneIds() const -- cgit v1.2.3