Fix the swap flag on msdos partitions so partitions that are labelled as swap show up properly.
Index: parted-2.3/libparted/labels/dos.c =================================================================== --- parted-2.3.orig/libparted/labels/dos.c +++ parted-2.3/libparted/labels/dos.c @@ -159,6 +159,7 @@ typedef struct { int palo; int prep; int diag; + int swap; OrigState* orig; /* used for CHS stuff */ } DosPartitionData; @@ -837,6 +838,7 @@ raw_part_parse (const PedDisk* disk, con dos_data->raid = raw_part->type == PARTITION_LINUX_RAID; dos_data->lvm = raw_part->type == PARTITION_LINUX_LVM_OLD || raw_part->type == PARTITION_LINUX_LVM; + dos_data->swap = raw_part->type == PARTITION_LINUX_SWAP; dos_data->lba = raw_part_is_lba (raw_part); dos_data->palo = raw_part->type == PARTITION_PALO; dos_data->prep = raw_part->type == PARTITION_PREP; @@ -1239,6 +1241,7 @@ msdos_partition_new (const PedDisk* disk dos_data->diag = 0; dos_data->raid = 0; dos_data->lvm = 0; + dos_data->swap = 0; dos_data->lba = 0; dos_data->palo = 0; dos_data->prep = 0; @@ -1274,6 +1277,7 @@ msdos_partition_duplicate (const PedPart new_dos_data->hidden = old_dos_data->hidden; new_dos_data->raid = old_dos_data->raid; new_dos_data->lvm = old_dos_data->lvm; + new_dos_data->swap = old_dos_data->swap; new_dos_data->lba = old_dos_data->lba; new_dos_data->palo = old_dos_data->palo; new_dos_data->prep = old_dos_data->prep; @@ -1323,6 +1327,7 @@ msdos_partition_set_system (PedPartition dos_data->diag = 0; dos_data->raid = 0; dos_data->lvm = 0; + dos_data->swap = 0; dos_data->palo = 0; dos_data->prep = 0; if (dos_data->lba) @@ -1357,6 +1362,11 @@ msdos_partition_set_system (PedPartition dos_data->system = PARTITION_PREP; return 1; } + if (dos_data->swap) { + dos_data->system = PARTITION_LINUX_SWAP; + return 1; + } + if (!fs_type) dos_data->system = PARTITION_LINUX; @@ -1394,6 +1404,7 @@ clear_flags (DosPartitionData *dos_data) dos_data->palo = 0; dos_data->prep = 0; dos_data->raid = 0; + dos_data->swap = 0; } static int @@ -1455,6 +1466,12 @@ msdos_partition_set_flag (PedPartition* dos_data->lvm = state; return ped_partition_set_system (part, part->fs_type); + case PED_PARTITION_SWAP: + if (state) + clear_flags (dos_data); + dos_data->swap = state; + return ped_partition_set_system (part, part->fs_type); + case PED_PARTITION_LBA: dos_data->lba = state; return ped_partition_set_system (part, part->fs_type); @@ -1504,6 +1521,9 @@ msdos_partition_get_flag (const PedParti case PED_PARTITION_LVM: return dos_data->lvm; + case PED_PARTITION_SWAP: + return dos_data->swap; + case PED_PARTITION_LBA: return dos_data->lba; @@ -1536,6 +1556,7 @@ msdos_partition_is_flag_available (const case PED_PARTITION_PALO: case PED_PARTITION_PREP: case PED_PARTITION_DIAG: + case PED_PARTITION_SWAP: return 1; default:
_______________________________________________ bug-parted mailing list bug-parted@gnu.org http://lists.gnu.org/mailman/listinfo/bug-parted