From 852c8c8516c20c0034151b7eee5f7497b206ca63 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 2 Mar 2016 11:43:27 +0100 Subject: [PATCH] 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;