diff --git a/src/fs/luks.cpp b/src/fs/luks.cpp index 090e0de..e8ce6ba 100644 --- a/src/fs/luks.cpp +++ b/src/fs/luks.cpp @@ -27,12 +27,16 @@ #include "util/helpers.h" #include "util/report.h" +#include + #include #include -#include +#include +#include +#include #include +#include #include -#include #include #include @@ -334,7 +338,7 @@ void luks::loadInnerFileSystem(const QString& mapperNode) setLabel(m_innerFs->readLabel(mapperNode)); setUUID(m_innerFs->readUUID(mapperNode)); if (m_innerFs->supportGetUsed() == FileSystem::cmdSupportFileSystem) - setSectorsUsed(qCeil((m_innerFs->readUsedCapacity(mapperNode) + payloadOffset()) / static_cast(m_logicalSectorSize) )); + setSectorsUsed(std::ceil((m_innerFs->readUsedCapacity(mapperNode) + payloadOffset()) / static_cast(m_logicalSectorSize) )); m_innerFs->scan(mapperNode); } @@ -561,16 +565,25 @@ void luks::getMapperName(const QString& deviceNode) ExternalCommand cmd(QStringLiteral("lsblk"), { QStringLiteral("--list"), QStringLiteral("--noheadings"), + QStringLiteral("--paths"), + QStringLiteral("--json"), QStringLiteral("--output"), QStringLiteral("type,name"), deviceNode }); + m_MapperName = QString(); + if (cmd.run(-1) && cmd.exitCode() == 0) { - QStringList output=cmd.output().split(QStringLiteral("\n")).filter(QRegularExpression(QStringLiteral("^crypt "))); - if (!output.isEmpty() && !output.first().isEmpty()) - m_MapperName = QStringLiteral("/dev/mapper/") + output.first().split(QStringLiteral(" ")).last(); + const QJsonDocument jsonDocument = QJsonDocument::fromJson(cmd.output().toUtf8()); + QJsonObject jsonObject = jsonDocument.object(); + const QJsonArray jsonArray = jsonObject[QLatin1String("blockdevices")].toArray(); + for (const auto &deviceLine : jsonArray) { + QJsonObject deviceObject = deviceLine.toObject(); + if (deviceObject[QLatin1String("type")].toString() == QLatin1String("crypt")) { + m_MapperName = deviceObject[QLatin1String("name")].toString(); + break; + } + } } - else - m_MapperName = QString(); } void luks::getLuksInfo(const QString& deviceNode) diff --git a/src/plugins/libparted/libpartedbackend.cpp b/src/plugins/libparted/libpartedbackend.cpp index 825ec02..8f4b5cd 100644 --- a/src/plugins/libparted/libpartedbackend.cpp +++ b/src/plugins/libparted/libpartedbackend.cpp @@ -48,7 +48,7 @@ #include #include #include -#include +#include #include #include @@ -421,7 +421,6 @@ QList LibPartedBackend::scanDevices(bool excludeReadOnly) ExternalCommand cmd(QStringLiteral("lsblk"), { QStringLiteral("--nodeps"), - QStringLiteral("--noheadings"), QStringLiteral("--paths"), QStringLiteral("--sort"), QStringLiteral("name"), QStringLiteral("--json"),