From 852c8c8516c20c0034151b7eee5f7497b206ca63 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 2 Mar 2016 11:43:27 +0100 Subject: [PATCH 1/4] Bring partition flags support up to current libparted level. This doesn't quite support all the types listed by fdisk as described in bug 359819 since we are limited by what's exposed by libparted, but it covers the most important ones. BUG: 359819 --- src/core/partitiontable.cpp | 56 +++++++++++++++++----- src/core/partitiontable.h | 10 +++- src/plugins/libparted/libpartedbackend.cpp | 30 +++++++----- 3 files changed, 72 insertions(+), 24 deletions(-) diff --git a/src/core/partitiontable.cpp b/src/core/partitiontable.cpp index e73f414..824b108 100644 --- a/src/core/partitiontable.cpp +++ b/src/core/partitiontable.cpp @@ -1,5 +1,6 @@ /************************************************************************* * Copyright (C) 2008 by Volker Lanz * + * Copyright (C) 2016 by Teo Mrnjavac * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * @@ -149,18 +150,42 @@ void PartitionTable::append(Partition* partition) QString PartitionTable::flagName(Flag f) { switch (f) { - case PartitionTable::FlagBoot: return i18nc("@item partition flag", "boot"); - case PartitionTable::FlagRoot: return i18nc("@item partition flag", "root"); - case PartitionTable::FlagSwap: return i18nc("@item partition flag", "swap"); - case PartitionTable::FlagHidden: return i18nc("@item partition flag", "hidden"); - case PartitionTable::FlagRaid: return i18nc("@item partition flag", "raid"); - case PartitionTable::FlagLvm: return i18nc("@item partition flag", "lvm"); - case PartitionTable::FlagLba: return i18nc("@item partition flag", "lba"); - case PartitionTable::FlagHpService: return i18nc("@item partition flag", "hpservice"); - case PartitionTable::FlagPalo: return i18nc("@item partition flag", "palo"); - case PartitionTable::FlagPrep: return i18nc("@item partition flag", "prep"); - case PartitionTable::FlagMsftReserved: return i18nc("@item partition flag", "msft-reserved"); - + case PartitionTable::FlagBoot: + return i18nc("@item partition flag", "boot"); + case PartitionTable::FlagRoot: + return i18nc("@item partition flag", "root"); + case PartitionTable::FlagSwap: + return i18nc("@item partition flag", "swap"); + case PartitionTable::FlagHidden: + return i18nc("@item partition flag", "hidden"); + case PartitionTable::FlagRaid: + return i18nc("@item partition flag", "raid"); + case PartitionTable::FlagLvm: + return i18nc("@item partition flag", "lvm"); + case PartitionTable::FlagLba: + return i18nc("@item partition flag", "lba"); + case PartitionTable::FlagHpService: + return i18nc("@item partition flag", "hpservice"); + case PartitionTable::FlagPalo: + return i18nc("@item partition flag", "palo"); + case PartitionTable::FlagPrep: + return i18nc("@item partition flag", "prep"); + case PartitionTable::FlagMsftReserved: + return i18nc("@item partition flag", "msft-reserved"); + case PartitionTable::FlagBiosGrub: + return i18nc("@item partition flag", "bios-grub"); + case PartitionTable::FlagAppleTvRecovery: + return i18nc("@item partition flag", "apple-tv-recovery"); + case PartitionTable::FlagDiag: + return i18nc("@item partition flag", "diag"); + case PartitionTable::FlagLegacyBoot: + return i18nc("@item partition flag", "legacy-boot"); + case PartitionTable::FlagMsftData: + return i18nc("@item partition flag", "msft-data"); + case PartitionTable::FlagIrst: + return i18nc("@item partition flag", "irst"); + case PartitionTable::FlagEsp: + return i18nc("@item partition flag", "esp"); default: break; } @@ -184,6 +209,13 @@ QList PartitionTable::flagList() rval.append(PartitionTable::FlagPalo); rval.append(PartitionTable::FlagPrep); rval.append(PartitionTable::FlagMsftReserved); + rval.append(PartitionTable::FlagBiosGrub); + rval.append(PartitionTable::FlagAppleTvRecovery); + rval.append(PartitionTable::FlagDiag); + 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 9ccfe60..cfcbbd7 100644 --- a/src/core/partitiontable.h +++ b/src/core/partitiontable.h @@ -1,5 +1,6 @@ /************************************************************************* * Copyright (C) 2008, 2010 by Volker Lanz * + * Copyright (C) 2016 by Teo Mrnjavac * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * @@ -79,7 +80,14 @@ public: FlagHpService = 128, FlagPalo = 256, FlagPrep = 512, - FlagMsftReserved = 1024 + FlagMsftReserved = 1024, + FlagBiosGrub = 2048, + FlagAppleTvRecovery = 4096, + FlagDiag = 8192, + FlagLegacyBoot = 16384, + FlagMsftData = 32768, + FlagIrst = 65536, + FlagEsp = 131072 }; Q_DECLARE_FLAGS(Flags, Flag) diff --git a/src/plugins/libparted/libpartedbackend.cpp b/src/plugins/libparted/libpartedbackend.cpp index 4c44a7c..e5a97c7 100644 --- a/src/plugins/libparted/libpartedbackend.cpp +++ b/src/plugins/libparted/libpartedbackend.cpp @@ -1,5 +1,6 @@ /************************************************************************* * Copyright (C) 2008-2012 by Volker Lanz * + * Copyright (C) 2016 by Teo Mrnjavac * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * @@ -56,17 +57,24 @@ static struct { PedPartitionFlag pedFlag; PartitionTable::Flag flag; } flagmap[] = { - { PED_PARTITION_BOOT, PartitionTable::FlagBoot }, - { PED_PARTITION_ROOT, PartitionTable::FlagRoot }, - { PED_PARTITION_SWAP, PartitionTable::FlagSwap }, - { PED_PARTITION_HIDDEN, PartitionTable::FlagHidden }, - { PED_PARTITION_RAID, PartitionTable::FlagRaid }, - { PED_PARTITION_LVM, PartitionTable::FlagLvm }, - { PED_PARTITION_LBA, PartitionTable::FlagLba }, - { PED_PARTITION_HPSERVICE, PartitionTable::FlagHpService }, - { PED_PARTITION_PALO, PartitionTable::FlagPalo }, - { PED_PARTITION_PREP, PartitionTable::FlagPrep }, - { PED_PARTITION_MSFT_RESERVED, PartitionTable::FlagMsftReserved } + { PED_PARTITION_BOOT, PartitionTable::FlagBoot }, + { PED_PARTITION_ROOT, PartitionTable::FlagRoot }, + { PED_PARTITION_SWAP, PartitionTable::FlagSwap }, + { PED_PARTITION_HIDDEN, PartitionTable::FlagHidden }, + { PED_PARTITION_RAID, PartitionTable::FlagRaid }, + { PED_PARTITION_LVM, PartitionTable::FlagLvm }, + { PED_PARTITION_LBA, PartitionTable::FlagLba }, + { PED_PARTITION_HPSERVICE, PartitionTable::FlagHpService }, + { PED_PARTITION_PALO, PartitionTable::FlagPalo }, + { PED_PARTITION_PREP, PartitionTable::FlagPrep }, + { PED_PARTITION_MSFT_RESERVED, PartitionTable::FlagMsftReserved }, + { PED_PARTITION_BIOS_GRUB, PartitionTable::FlagBiosGrub }, + { PED_PARTITION_APPLE_TV_RECOVERY, PartitionTable::FlagAppleTvRecovery }, + { PED_PARTITION_DIAG, PartitionTable::FlagDiag }, // generic diagnostics flag + { PED_PARTITION_LEGACY_BOOT, PartitionTable::FlagLegacyBoot }, + { PED_PARTITION_MSFT_DATA, PartitionTable::FlagMsftData }, + { PED_PARTITION_IRST, PartitionTable::FlagIrst }, // Intel Rapid Start partition + { PED_PARTITION_ESP, PartitionTable::FlagEsp } // EFI system }; static QString s_lastPartedExceptionMessage; From 41f9dc36dd8fadee7cc5bf46fcffdfe64faa3bda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Mon, 29 Feb 2016 17:58:25 +0000 Subject: [PATCH 2/4] Cleanup unused include. --- src/core/partitiontable.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/partitiontable.cpp b/src/core/partitiontable.cpp index 824b108..ff0ade7 100644 --- a/src/core/partitiontable.cpp +++ b/src/core/partitiontable.cpp @@ -32,7 +32,6 @@ #include #include -#include #include /** Creates a new PartitionTable object with type MSDOS From 62c377c348ee0b2f99ed67c13d6f0fc08ef9e4a5 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 2 Mar 2016 13:14:40 +0100 Subject: [PATCH 3/4] Phabricator config file. --- .arcconfig | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .arcconfig diff --git a/.arcconfig b/.arcconfig new file mode 100644 index 0000000..0b1191c --- /dev/null +++ b/.arcconfig @@ -0,0 +1,4 @@ +{ + "phabricator.uri" : "https://phabricator.kde.org/", + "project.name" : "KDE Partition Manager" +} From 3c2f383b8e9155037187a0c38e3ba95ba2a9027e Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 3 Mar 2016 16:03:41 +0100 Subject: [PATCH 4/4] Define underlying type for enums so they can be forward-declared. --- src/core/partitiontable.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/partitiontable.h b/src/core/partitiontable.h index cfcbbd7..70473fe 100644 --- a/src/core/partitiontable.h +++ b/src/core/partitiontable.h @@ -50,7 +50,7 @@ class LIBKPMCORE_EXPORT PartitionTable : public PartitionNode friend LIBKPMCORE_EXPORT QTextStream& operator<<(QTextStream& stream, const PartitionTable& ptable); public: - enum TableType { + enum TableType : qint8 { unknownTableType = -1, aix, @@ -68,7 +68,7 @@ public: }; /** Partition flags */ - enum Flag { + enum Flag : qint32 { FlagNone = 0, FlagBoot = 1, FlagRoot = 2,