diff --git a/cockatrice/src/client/network/update/client/release_channel.cpp b/cockatrice/src/client/network/update/client/release_channel.cpp index f401dfd00..b760c021c 100644 --- a/cockatrice/src/client/network/update/client/release_channel.cpp +++ b/cockatrice/src/client/network/update/client/release_channel.cpp @@ -27,29 +27,6 @@ #define GIT_SHORT_HASH_LEN 7 -namespace -{ - -#if defined(Q_OS_MACOS) || defined(Q_OS_WIN) -// QSysInfo::productVersion() is not guaranteed to start with a number, e.g. it returns -// "Server 2022" on Windows Server. Use the first numeric token as the major host version. -std::optional getProductVersionMajor() -{ - const QString versionString = QSysInfo::productVersion(); - bool ok = false; - static const QRegularExpression firstNumber(R"((\d+))"); - const auto match = firstNumber.match(versionString); - const int version = match.hasMatch() ? match.captured(1).toInt(&ok) : 0; - if (!ok) { - qCWarning(ReleaseChannelLog) << "Unable to determine OS version from" << versionString; - return std::nullopt; - } - return version; -} -#endif - -} // namespace - ReleaseChannel::ReleaseChannel() : netMan(new QNetworkAccessManager(this)), response(nullptr), lastRelease(nullptr) { } @@ -70,21 +47,18 @@ void ReleaseChannel::checkForUpdates() // Find assets compatible with host platform (Linux is not supported by in-client updater) std::optional ReleaseChannel::getTargetVersionForCurrentOS(const QString &fileName) { -#if defined(Q_OS_WIN) && Q_PROCESSOR_WORDSIZE == 4 - // The published Windows assets are 64-bit only - Q_UNUSED(fileName); - return std::nullopt; -#endif - const QRegularExpression *regex = nullptr; - // Only platforms shipping updater assets (macOS, Windows) need the host version - static const std::optional systemVersion = -#if defined(Q_OS_MACOS) || defined(Q_OS_WIN) - getProductVersionMajor(); -#else - std::nullopt; -#endif + static const std::optional systemVersion = [] { + bool ok = false; + const QString versionString = QSysInfo::productVersion(); + const int version = versionString.split('.').first().toInt(&ok); + if (!ok) { + qCWarning(ReleaseChannelLog) << "Unable to determine OS version from" << versionString; + return std::optional(); + } + return std::optional{version}; + }(); if (!systemVersion) { return std::nullopt;