Add partition type map.
This commit is contained in:
parent
55b8cd3e6b
commit
4c2efe8c52
|
@ -156,12 +156,55 @@ FileSystem::Type SfdiskPartitionTable::detectFileSystemBySector(Report& report,
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
FileSystem::Type type;
|
||||||
|
QLatin1String partitionType[2]; // GPT, MBR
|
||||||
|
} typemap[] = {
|
||||||
|
{ FileSystem::Btrfs, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::Ext2, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::Ext3, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::Ext4, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::LinuxSwap, { QLatin1String("0657FD6D-A4AB-43C4-84E5-0933C84B4F4F"), QLatin1String("82") } },
|
||||||
|
{ FileSystem::Fat16, { QLatin1String("EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"), QLatin1String("6") } },
|
||||||
|
{ FileSystem::Fat32, { QLatin1String("EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"), QLatin1String("7") } },
|
||||||
|
{ FileSystem::Nilfs2, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::Ntfs, { QLatin1String("EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"), QLatin1String("7") } },
|
||||||
|
{ FileSystem::Exfat, { QLatin1String("EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"), QLatin1String("7") } },
|
||||||
|
{ FileSystem::ReiserFS, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::Reiser4, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::Xfs, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::Jfs, { QLatin1String("0FC63DAF-8483-4772-8E79-3D69D8477DE4"), QLatin1String("83") } },
|
||||||
|
{ FileSystem::Hfs, { QLatin1String("48465300-0000-11AA-AA11-00306543ECAC"), QLatin1String("af")} },
|
||||||
|
{ FileSystem::HfsPlus, { QLatin1String("48465300-0000-11AA-AA11-00306543ECAC"), QLatin1String("af") } },
|
||||||
|
{ FileSystem::Udf, { QLatin1String("EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"), QLatin1String("7") } }
|
||||||
|
// Add ZFS too
|
||||||
|
};
|
||||||
|
|
||||||
|
static QLatin1String getPartitionType(FileSystem::Type t, PartitionTable::TableType tableType)
|
||||||
|
{
|
||||||
|
quint8 type;
|
||||||
|
switch (tableType) {
|
||||||
|
case PartitionTable::gpt:
|
||||||
|
type = 0;
|
||||||
|
break;
|
||||||
|
case PartitionTable::msdos:
|
||||||
|
case PartitionTable::msdos_sectorbased:
|
||||||
|
type = 1;
|
||||||
|
break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
|
for (quint32 i = 0; i < sizeof(typemap) / sizeof(typemap[0]); i++)
|
||||||
|
if (typemap[i].type == t)
|
||||||
|
return typemap[i].partitionType[type];
|
||||||
|
|
||||||
|
return QLatin1String();
|
||||||
|
}
|
||||||
|
|
||||||
bool SfdiskPartitionTable::setPartitionSystemType(Report& report, const Partition& partition)
|
bool SfdiskPartitionTable::setPartitionSystemType(Report& report, const Partition& partition)
|
||||||
{
|
{
|
||||||
Q_UNUSED(report)
|
ExternalCommand sfdiskCommand(report, QStringLiteral("sfdisk"), { QStringLiteral("--part-type"), m_device->deviceNode(), QString::number(partition.number()),
|
||||||
Q_UNUSED(partition)
|
getPartitionType(partition.fileSystem().type(), m_device->partitionTable()->type()) } );
|
||||||
|
return sfdiskCommand.run(-1) && sfdiskCommand.exitCode() == 0;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SfdiskPartitionTable::setFlag(Report& report, const Partition& partition, PartitionTable::Flag flag, bool state)
|
bool SfdiskPartitionTable::setFlag(Report& report, const Partition& partition, PartitionTable::Flag flag, bool state)
|
||||||
|
|
Loading…
Reference in New Issue