2010-04-02 13:35:12 +02:00
|
|
|
---
|
|
|
|
include/parted/disk.h | 9 +++++----
|
|
|
|
libparted/disk.c | 2 ++
|
|
|
|
libparted/labels/dos.c | 8 ++++++++
|
|
|
|
parted/parted.c | 24 +++++++++++++++++++++---
|
|
|
|
parted/ui.c | 3 +++
|
|
|
|
5 files changed, 39 insertions(+), 7 deletions(-)
|
|
|
|
|
2011-05-19 15:25:02 +02:00
|
|
|
Index: parted-2.4/libparted/disk.c
|
2009-08-06 22:06:27 +02:00
|
|
|
===================================================================
|
2011-05-19 15:25:02 +02:00
|
|
|
--- parted-2.4.orig/libparted/disk.c
|
|
|
|
+++ parted-2.4/libparted/disk.c
|
|
|
|
@@ -2425,6 +2425,8 @@ ped_partition_flag_get_name (PedPartitio
|
2007-01-15 15:29:14 +01:00
|
|
|
return N_("lba");
|
|
|
|
case PED_PARTITION_HPSERVICE:
|
|
|
|
return N_("hp-service");
|
|
|
|
+ case PED_PARTITION_TYPE:
|
|
|
|
+ return N_("type");
|
|
|
|
case PED_PARTITION_PALO:
|
|
|
|
return N_("palo");
|
2009-08-06 22:06:27 +02:00
|
|
|
case PED_PARTITION_PREP:
|
2011-05-19 15:25:02 +02:00
|
|
|
Index: parted-2.4/libparted/labels/dos.c
|
2009-08-06 22:06:27 +02:00
|
|
|
===================================================================
|
2011-05-19 15:25:02 +02:00
|
|
|
--- parted-2.4.orig/libparted/labels/dos.c
|
|
|
|
+++ parted-2.4/libparted/labels/dos.c
|
|
|
|
@@ -1496,6 +1496,10 @@ msdos_partition_set_flag (PedPartition*
|
2007-01-15 15:29:14 +01:00
|
|
|
disk = part->disk;
|
|
|
|
|
|
|
|
switch (flag) {
|
|
|
|
+ case PED_PARTITION_TYPE:
|
|
|
|
+ dos_data->system = state;
|
|
|
|
+ return 1;
|
|
|
|
+
|
|
|
|
case PED_PARTITION_HIDDEN:
|
|
|
|
if (part->type == PED_PARTITION_EXTENDED) {
|
|
|
|
ped_exception_throw (
|
2011-05-19 15:25:02 +02:00
|
|
|
@@ -1591,6 +1595,9 @@ msdos_partition_get_flag (const PedParti
|
2007-01-15 15:29:14 +01:00
|
|
|
case PED_PARTITION_LBA:
|
|
|
|
return dos_data->lba;
|
|
|
|
|
|
|
|
+ case PED_PARTITION_TYPE:
|
|
|
|
+ return dos_data->system;
|
|
|
|
+
|
|
|
|
case PED_PARTITION_PALO:
|
|
|
|
return dos_data->palo;
|
|
|
|
|
2011-05-19 15:25:02 +02:00
|
|
|
@@ -1617,6 +1624,7 @@ msdos_partition_is_flag_available (const
|
2007-01-15 15:29:14 +01:00
|
|
|
case PED_PARTITION_RAID:
|
|
|
|
case PED_PARTITION_LVM:
|
|
|
|
case PED_PARTITION_LBA:
|
|
|
|
+ case PED_PARTITION_TYPE:
|
|
|
|
case PED_PARTITION_PALO:
|
2009-08-06 22:06:27 +02:00
|
|
|
case PED_PARTITION_PREP:
|
2010-07-19 20:20:25 +02:00
|
|
|
case PED_PARTITION_DIAG:
|
2011-05-19 15:25:02 +02:00
|
|
|
Index: parted-2.4/parted/ui.c
|
2009-08-06 22:06:27 +02:00
|
|
|
===================================================================
|
2011-05-19 15:25:02 +02:00
|
|
|
--- parted-2.4.orig/parted/ui.c
|
|
|
|
+++ parted-2.4/parted/ui.c
|
|
|
|
@@ -917,6 +917,9 @@ command_line_get_integer (const char* pr
|
2007-03-22 21:00:14 +01:00
|
|
|
NULL, 1);
|
|
|
|
if (!input)
|
|
|
|
return 0;
|
|
|
|
+ if (strstr(input, "0x") == input)
|
2010-04-02 13:35:12 +02:00
|
|
|
+ valid = sscanf (input, "%x", value);
|
|
|
|
+ else
|
2009-08-06 22:06:27 +02:00
|
|
|
valid = sscanf (input, "%d", value);
|
2007-03-22 21:00:14 +01:00
|
|
|
free (input);
|
|
|
|
return valid;
|
2011-05-19 15:25:02 +02:00
|
|
|
Index: parted-2.4/include/parted/disk.h
|
2009-08-06 22:06:27 +02:00
|
|
|
===================================================================
|
2011-05-19 15:25:02 +02:00
|
|
|
--- parted-2.4.orig/include/parted/disk.h
|
|
|
|
+++ parted-2.4/include/parted/disk.h
|
|
|
|
@@ -70,10 +70,11 @@ enum _PedPartitionFlag {
|
2010-07-19 20:20:25 +02:00
|
|
|
PED_PARTITION_BIOS_GRUB=12,
|
|
|
|
PED_PARTITION_APPLE_TV_RECOVERY=13,
|
2011-05-19 15:25:02 +02:00
|
|
|
PED_PARTITION_DIAG=14,
|
|
|
|
- PED_PARTITION_LEGACY_BOOT=15
|
|
|
|
+ PED_PARTITION_LEGACY_BOOT=15,
|
|
|
|
+ PED_PARTITION_TYPE=16
|
2007-03-22 21:00:14 +01:00
|
|
|
};
|
2007-01-15 15:29:14 +01:00
|
|
|
#define PED_PARTITION_FIRST_FLAG PED_PARTITION_BOOT
|
2011-05-19 15:25:02 +02:00
|
|
|
-#define PED_PARTITION_LAST_FLAG PED_PARTITION_LEGACY_BOOT
|
2010-08-14 00:04:03 +02:00
|
|
|
+#define PED_PARTITION_LAST_FLAG PED_PARTITION_TYPE
|
|
|
|
|
|
|
|
enum _PedDiskTypeFeature {
|
|
|
|
PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */
|
2011-05-19 15:25:02 +02:00
|
|
|
Index: parted-2.4/parted/parted.c
|
2009-08-06 22:06:27 +02:00
|
|
|
===================================================================
|
2011-05-19 15:25:02 +02:00
|
|
|
--- parted-2.4.orig/parted/parted.c
|
|
|
|
+++ parted-2.4/parted/parted.c
|
|
|
|
@@ -1291,13 +1291,14 @@ partition_print_flags (PedPartition* par
|
2009-08-06 22:06:27 +02:00
|
|
|
const char* name;
|
|
|
|
char* res = ped_malloc(1);
|
|
|
|
void* _res = res;
|
|
|
|
+ int xtype;
|
|
|
|
|
|
|
|
*res = '\0';
|
|
|
|
|
2007-01-15 15:29:14 +01:00
|
|
|
first_flag = 1;
|
|
|
|
for (flag = ped_partition_flag_next (0); flag;
|
|
|
|
flag = ped_partition_flag_next (flag)) {
|
|
|
|
- if (ped_partition_get_flag (part, flag)) {
|
2009-08-06 22:06:27 +02:00
|
|
|
+ if (xtype = ped_partition_get_flag (part, flag)) {
|
|
|
|
if (first_flag)
|
|
|
|
first_flag = 0;
|
|
|
|
else {
|
2011-05-19 15:25:02 +02:00
|
|
|
@@ -1306,7 +1307,16 @@ partition_print_flags (PedPartition* par
|
2009-08-06 22:06:27 +02:00
|
|
|
res = _res;
|
|
|
|
strncat (res, ", ", 2);
|
|
|
|
}
|
2007-01-15 15:29:14 +01:00
|
|
|
-
|
2009-08-06 22:06:27 +02:00
|
|
|
+ if (flag == PED_PARTITION_TYPE) {
|
|
|
|
+ char tmpstr[21];
|
|
|
|
+ int len = snprintf(tmpstr,sizeof(tmpstr)-1,"type=%02x",xtype);
|
|
|
|
+ _res = res;
|
|
|
|
+ ped_realloc (&_res, strlen (res) + 1 +
|
|
|
|
+ ((len>sizeof(tmpstr))?sizeof(tmpstr):len) );
|
|
|
|
+ res = _res;
|
|
|
|
+ strncat (res, tmpstr, 21);
|
|
|
|
+ }
|
|
|
|
+ else {
|
2007-01-15 15:29:14 +01:00
|
|
|
name = _(ped_partition_flag_get_name (flag));
|
|
|
|
_res = res;
|
2010-04-02 13:35:12 +02:00
|
|
|
ped_realloc (&_res, strlen (res) + 1 + strlen (name));
|
2011-05-19 15:25:02 +02:00
|
|
|
@@ -1314,6 +1324,7 @@ partition_print_flags (PedPartition* par
|
2010-04-02 13:35:12 +02:00
|
|
|
strcat(res, name);
|
2009-08-06 22:06:27 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
|
|
return res;
|
|
|
|
}
|
2011-05-19 15:25:02 +02:00
|
|
|
@@ -2156,12 +2167,19 @@ do_set (PedDevice** dev)
|
2007-01-15 15:29:14 +01:00
|
|
|
goto error_destroy_disk;
|
|
|
|
if (!command_line_get_part_flag (_("Flag to Invert?"), part, &flag))
|
|
|
|
goto error_destroy_disk;
|
2009-08-06 22:06:27 +02:00
|
|
|
+ if( flag == PED_PARTITION_TYPE )
|
|
|
|
+ state = ped_partition_get_flag (part, flag);
|
|
|
|
+ else
|
|
|
|
state = (ped_partition_get_flag (part, flag) == 0 ? 1 : 0);
|
|
|
|
|
2007-01-15 15:29:14 +01:00
|
|
|
- if (!is_toggle_mode) {
|
|
|
|
+ if (!is_toggle_mode && flag != PED_PARTITION_TYPE ) {
|
|
|
|
if (!command_line_get_state (_("New state?"), &state))
|
|
|
|
goto error_destroy_disk;
|
|
|
|
}
|
2009-08-06 22:06:27 +02:00
|
|
|
+ else if( flag == PED_PARTITION_TYPE ) {
|
|
|
|
+ if (!command_line_get_integer (_("New type?"), &state))
|
|
|
|
+ goto error_destroy_disk;
|
|
|
|
+ }
|
|
|
|
|
2007-01-15 15:29:14 +01:00
|
|
|
if (!ped_partition_set_flag (part, flag, state))
|
|
|
|
goto error_destroy_disk;
|