From a508cfbc834bd8355594a9fcc407782005edc29e Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Sun, 15 Jul 2018 15:51:23 -0300 Subject: [PATCH] Avoiding pointer comparison. --- src/core/raid/softwareraid.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/core/raid/softwareraid.cpp b/src/core/raid/softwareraid.cpp index 5273106..b919479 100644 --- a/src/core/raid/softwareraid.cpp +++ b/src/core/raid/softwareraid.cpp @@ -164,7 +164,7 @@ void SoftwareRAID::setStatus(SoftwareRAID::Status status) void SoftwareRAID::scanSoftwareRAID(QList& devices) { - QList scannedRaid; + QStringList availableInConf; // TODO: Support custom config files. QString config = getRAIDConfiguration(QStringLiteral("/etc/mdadm.conf")); @@ -177,10 +177,7 @@ void SoftwareRAID::scanSoftwareRAID(QList& devices) QRegularExpressionMatch reMatch = i.next(); QString deviceName = reMatch.captured(2).trimmed(); - SoftwareRAID *raidDevice = new SoftwareRAID(deviceName, - SoftwareRAID::Status::Inactive); - - scannedRaid << raidDevice; + availableInConf << deviceName; } } @@ -197,8 +194,18 @@ void SoftwareRAID::scanSoftwareRAID(QList& devices) SoftwareRAID* d = static_cast(CoreBackendManager::self()->backend()->scanDevice(deviceNode)); - if (!scannedRaid.contains(d)) - scannedRaid << d; + bool isInConf = false; + + for (const QString& path : qAsConst(availableInConf)) { + if (getUUID(QStringLiteral("/dev/") + path) == d->uuid()) { + isInConf = true; + availableInConf.removeAll(path); + break; + } + } + + if (isInConf) + devices << d; if (status == QStringLiteral("inactive")) d->setStatus(SoftwareRAID::Status::Inactive); @@ -218,7 +225,10 @@ void SoftwareRAID::scanSoftwareRAID(QList& devices) } } - devices << scannedRaid; + for (const QString& name : qAsConst(availableInConf)) { + SoftwareRAID *raidDevice = new SoftwareRAID(name, SoftwareRAID::Status::Inactive); + devices << raidDevice; + } } qint32 SoftwareRAID::getRaidLevel(const QString &path)