From 53b00a950fd4d8426d26a23ab3b378391bbf05c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Thu, 29 Jan 2026 21:24:36 +0100 Subject: [PATCH] MacAddressDatabase: Update default loations for the mac-addresses.db to be more generic. --- .../hardware/network/macaddressdatabase.cpp | 27 ++++++++++++++----- .../hardware/network/macaddressdatabase.h | 2 +- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/libnymea-core/hardware/network/macaddressdatabase.cpp b/libnymea-core/hardware/network/macaddressdatabase.cpp index 7a5aad6f..93fcc4c4 100644 --- a/libnymea-core/hardware/network/macaddressdatabase.cpp +++ b/libnymea-core/hardware/network/macaddressdatabase.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -41,18 +42,30 @@ MacAddressDatabase::MacAddressDatabase(QObject *parent) : QObject(parent) { // Find database in system data locations QString databaseFileName; - foreach (const QString &dataLocation, QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation)) { - QFileInfo databaseFileInfo(dataLocation + QDir::separator() + "mac-addresses.db"); - if (!databaseFileInfo.exists()) { - continue; + const QStringList dataLocations = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); + foreach (const QString &dataLocation, dataLocations) { + const QStringList candidateFiles = { + dataLocation + QDir::separator() + "nymea" + QDir::separator() + "nymead" + QDir::separator() + "mac-addresses.db", + dataLocation + QDir::separator() + "nymea" + QDir::separator() + "mac-addresses.db", + dataLocation + QDir::separator() + "mac-addresses.db" + }; + + foreach (const QString &candidate, candidateFiles) { + QFileInfo databaseFileInfo(candidate); + if (!databaseFileInfo.exists()) + continue; + + databaseFileName = databaseFileInfo.absoluteFilePath(); + break; } - databaseFileName = databaseFileInfo.absoluteFilePath(); - break; + if (!databaseFileName.isEmpty()) + break; + } if (databaseFileName.isEmpty()) { - qCWarning(dcMacAddressDatabase()) << "Could not find the mac address database in any system data location paths" << QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); + qCWarning(dcMacAddressDatabase()) << "Could not find the mac address database in any system data location paths" << dataLocations; qCWarning(dcMacAddressDatabase()) << "The mac address database lookup feature will not be available."; return; } diff --git a/libnymea-core/hardware/network/macaddressdatabase.h b/libnymea-core/hardware/network/macaddressdatabase.h index e10a2bd5..6be60659 100644 --- a/libnymea-core/hardware/network/macaddressdatabase.h +++ b/libnymea-core/hardware/network/macaddressdatabase.h @@ -50,7 +50,7 @@ private: QSqlDatabase m_db; bool m_available = false; QString m_connectionName; - QString m_databaseName = "/usr/share/nymea/mac-addresses.db"; + QString m_databaseName = "/usr/share/nymea/nymead/mac-addresses.db"; MacAddressDatabaseReplyImpl *m_currentReply = nullptr; QFutureWatcher *m_futureWatcher = nullptr;