From 4080eef0bab6a9334fb6d36f2f337fc43a64797e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Sat, 1 Sep 2018 21:27:05 +0100 Subject: [PATCH] Set FlagBoot = FlagEsp and deprecate it. --- src/core/partitiontable.cpp | 3 -- src/core/partitiontable.h | 2 +- src/plugins/sfdisk/sfdiskbackend.cpp | 5 +-- src/plugins/sfdisk/sfdiskpartitiontable.cpp | 34 +++++++++++---------- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/core/partitiontable.cpp b/src/core/partitiontable.cpp index 72c0693..dd0b4be 100644 --- a/src/core/partitiontable.cpp +++ b/src/core/partitiontable.cpp @@ -216,8 +216,6 @@ QString PartitionTable::flagName(Flag f) return xi18nc("@item partition flag", "msft-data"); case PartitionTable::FlagIrst: return xi18nc("@item partition flag", "irst"); - case PartitionTable::FlagEsp: - return xi18nc("@item partition flag", "esp"); default: break; } @@ -247,7 +245,6 @@ const QList PartitionTable::flagList() rval.append(PartitionTable::FlagLegacyBoot); rval.append(PartitionTable::FlagMsftData); rval.append(PartitionTable::FlagIrst); - rval.append(PartitionTable::FlagEsp); return rval; } diff --git a/src/core/partitiontable.h b/src/core/partitiontable.h index d0ba741..de5f3ef 100644 --- a/src/core/partitiontable.h +++ b/src/core/partitiontable.h @@ -88,7 +88,7 @@ public: FlagLegacyBoot = 16384, FlagMsftData = 32768, FlagIrst = 65536, - FlagEsp = 131072 + FlagEsp [[deprecated]] = FlagBoot }; Q_DECLARE_FLAGS(Flags, Flag) diff --git a/src/plugins/sfdisk/sfdiskbackend.cpp b/src/plugins/sfdisk/sfdiskbackend.cpp index 1e464f0..a563250 100644 --- a/src/plugins/sfdisk/sfdiskbackend.cpp +++ b/src/plugins/sfdisk/sfdiskbackend.cpp @@ -227,10 +227,8 @@ void SfdiskBackend::scanDevicePartitions(Device& d, const QJsonArray& jsonPartit const QString partitionType = partitionObject[QLatin1String("type")].toString(); PartitionTable::Flags activeFlags = partitionObject[QLatin1String("bootable")].toBool() ? PartitionTable::FlagBoot : PartitionTable::FlagNone; - if (partitionType == QStringLiteral("C12A7328-F81F-11D2-BA4B-00A0C93EC93B")) { + if (partitionType == QStringLiteral("C12A7328-F81F-11D2-BA4B-00A0C93EC93B")) activeFlags |= PartitionTable::FlagBoot; - activeFlags |= PartitionTable::FlagEsp; - } else if (partitionType == QStringLiteral("21686148-6449-6E6F-744E-656564454649")) activeFlags |= PartitionTable::FlagBiosGrub; @@ -479,7 +477,6 @@ PartitionTable::Flags SfdiskBackend::availableFlags(PartitionTable::TableType ty // These are not really flags but for now keep them for compatibility // We should implement changing partition type flags = PartitionTable::Flag::FlagBiosGrub | - PartitionTable::Flag::FlagEsp | PartitionTable::Flag::FlagBoot; } else if (type == PartitionTable::msdos || type == PartitionTable::msdos_sectorbased) diff --git a/src/plugins/sfdisk/sfdiskpartitiontable.cpp b/src/plugins/sfdisk/sfdiskpartitiontable.cpp index 81f8965..426eb8b 100644 --- a/src/plugins/sfdisk/sfdiskpartitiontable.cpp +++ b/src/plugins/sfdisk/sfdiskpartitiontable.cpp @@ -224,23 +224,25 @@ bool SfdiskPartitionTable::setPartitionSystemType(Report& report, const Partitio bool SfdiskPartitionTable::setFlag(Report& report, const Partition& partition, PartitionTable::Flag flag, bool state) { - // We only allow setting one active partition per device - if ((m_device->partitionTable()->type() == PartitionTable::TableType::msdos || - m_device->partitionTable()->type() == PartitionTable::TableType::msdos_sectorbased) && - flag == PartitionTable::Flag::FlagBoot && state == true) { - ExternalCommand sfdiskCommand(report, QStringLiteral("sfdisk"), { QStringLiteral("--activate"), m_device->deviceNode(), QString::number(partition.number()) } ); - if (sfdiskCommand.run(-1) && sfdiskCommand.exitCode() == 0) - return true; - else - return false; - } else if (flag == PartitionTable::Flag::FlagBoot && state == false) { - ExternalCommand sfdiskCommand(report, QStringLiteral("sfdisk"), { QStringLiteral("--activate"), m_device->deviceNode(), QStringLiteral("-") } ); - if (sfdiskCommand.run(-1) && sfdiskCommand.exitCode() == 0) - return true; - // FIXME: Do not return false since we have no way of checking if partition table is MBR + if (m_device->partitionTable()->type() == PartitionTable::TableType::msdos || + m_device->partitionTable()->type() == PartitionTable::TableType::msdos_sectorbased) { + // We only allow setting one active partition per device + if (flag == PartitionTable::Flag::FlagBoot && state == true) { + ExternalCommand sfdiskCommand(report, QStringLiteral("sfdisk"), { QStringLiteral("--activate"), m_device->deviceNode(), QString::number(partition.number()) } ); + if (sfdiskCommand.run(-1) && sfdiskCommand.exitCode() == 0) + return true; + else + return false; + } else if (flag == PartitionTable::Flag::FlagBoot && state == false) { + ExternalCommand sfdiskCommand(report, QStringLiteral("sfdisk"), { QStringLiteral("--activate"), m_device->deviceNode(), QStringLiteral("-") } ); + if (sfdiskCommand.run(-1) && sfdiskCommand.exitCode() == 0) + return true; + else + return false; + } } - if ((flag == PartitionTable::Flag::FlagEsp || flag == PartitionTable::Flag::FlagBoot) && state == true) { + if (flag == PartitionTable::Flag::FlagBoot && state == true) { ExternalCommand sfdiskCommand(report, QStringLiteral("sfdisk"), { QStringLiteral("--part-type"), m_device->deviceNode(), QString::number(partition.number()), QStringLiteral("C12A7328-F81F-11D2-BA4B-00A0C93EC93B") } ); if (sfdiskCommand.run(-1) && sfdiskCommand.exitCode() == 0) @@ -248,7 +250,7 @@ bool SfdiskPartitionTable::setFlag(Report& report, const Partition& partition, P else return false; } - if ((flag == PartitionTable::Flag::FlagEsp || flag == PartitionTable::Flag::FlagBoot) && state == false) + if (flag == PartitionTable::Flag::FlagBoot && state == false) setPartitionSystemType(report, partition); if (flag == PartitionTable::Flag::FlagBiosGrub && state == true) {