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
This commit is contained in:
Teo Mrnjavac 2016-03-02 11:43:27 +01:00
parent 828a4060cc
commit 852c8c8516
3 changed files with 72 additions and 24 deletions

View File

@ -1,5 +1,6 @@
/*************************************************************************
* Copyright (C) 2008 by Volker Lanz <vl@fidra.de> *
* Copyright (C) 2016 by Teo Mrnjavac <teo@kde.org> *
* *
* 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::Flag> 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;
}

View File

@ -1,5 +1,6 @@
/*************************************************************************
* Copyright (C) 2008, 2010 by Volker Lanz <vl@fidra.de> *
* Copyright (C) 2016 by Teo Mrnjavac <teo@kde.org> *
* *
* 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)

View File

@ -1,5 +1,6 @@
/*************************************************************************
* Copyright (C) 2008-2012 by Volker Lanz <vl@fidra.de> *
* Copyright (C) 2016 by Teo Mrnjavac <teo@kde.org> *
* *
* 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;