- changes in parted-3.1: * Changes in behavior - Floppy drives are no longer scanned on linux: they cannot be partitioned anyhow, and some users have a misconfigured BIOS that claims to have a floppy when they don't, and scanning gets hung up. - parted: the mkpart command has changed semantics with regard to specifying the end of the partition. If the end is specified using units of MiB, GiB, etc., parted subtracts one sector from the specified value. With this change, it is now possible to create partitions like 1MiB-2MiB, 2MiB-3MiB and so on. * Many bugfixes (see changelog) - changes in parted-3.0: * Changes in behavior - Remove all FS-related (file system-related) sub-commands; these commands are no longer recognized because they were all dependent on parted "knowing" too much about file system: mkpartfs, mkfs, cp, move, check. - 'resize' command changed semantics: it no longer resizes the filesystem, but only moves end sector of the partition - libparted-devel contains libparted-fs-resize library - add ability to change size of the partition (ignoring contained filesystem) with 'resize' command; this command has different semantics than the former 'resize' command which upstream decided to drop - parted-resize-command.patch (fate#316110) - when using syncmbr on POWER, make the first partition type 0x41 OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=79
172 lines
6.0 KiB
Diff
172 lines
6.0 KiB
Diff
---
|
|
include/parted/disk.h | 5 ++--
|
|
libparted/disk.c | 2 +
|
|
libparted/labels/dos.c | 8 ++++++
|
|
parted/parted.c | 59 ++++++++++++++++++++++++++++++++-----------------
|
|
parted/ui.c | 3 ++
|
|
5 files changed, 55 insertions(+), 22 deletions(-)
|
|
|
|
Index: parted-3.1/include/parted/disk.h
|
|
===================================================================
|
|
--- parted-3.1.orig/include/parted/disk.h
|
|
+++ parted-3.1/include/parted/disk.h
|
|
@@ -72,10 +72,11 @@ enum _PedPartitionFlag {
|
|
PED_PARTITION_BIOS_GRUB=12,
|
|
PED_PARTITION_APPLE_TV_RECOVERY=13,
|
|
PED_PARTITION_DIAG=14,
|
|
- PED_PARTITION_LEGACY_BOOT=15
|
|
+ PED_PARTITION_LEGACY_BOOT=15,
|
|
+ PED_PARTITION_TYPE=16
|
|
};
|
|
#define PED_PARTITION_FIRST_FLAG PED_PARTITION_BOOT
|
|
-#define PED_PARTITION_LAST_FLAG PED_PARTITION_LEGACY_BOOT
|
|
+#define PED_PARTITION_LAST_FLAG PED_PARTITION_TYPE
|
|
|
|
enum _PedDiskTypeFeature {
|
|
PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */
|
|
Index: parted-3.1/libparted/disk.c
|
|
===================================================================
|
|
--- parted-3.1.orig/libparted/disk.c
|
|
+++ parted-3.1/libparted/disk.c
|
|
@@ -2426,6 +2426,8 @@ ped_partition_flag_get_name (PedPartitio
|
|
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");
|
|
case PED_PARTITION_PREP:
|
|
Index: parted-3.1/libparted/labels/dos.c
|
|
===================================================================
|
|
--- parted-3.1.orig/libparted/labels/dos.c
|
|
+++ parted-3.1/libparted/labels/dos.c
|
|
@@ -1509,6 +1509,10 @@ msdos_partition_set_flag (PedPartition*
|
|
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 (
|
|
@@ -1604,6 +1608,9 @@ msdos_partition_get_flag (const PedParti
|
|
case PED_PARTITION_LBA:
|
|
return dos_data->lba;
|
|
|
|
+ case PED_PARTITION_TYPE:
|
|
+ return dos_data->system;
|
|
+
|
|
case PED_PARTITION_PALO:
|
|
return dos_data->palo;
|
|
|
|
@@ -1630,6 +1637,7 @@ msdos_partition_is_flag_available (const
|
|
case PED_PARTITION_RAID:
|
|
case PED_PARTITION_LVM:
|
|
case PED_PARTITION_LBA:
|
|
+ case PED_PARTITION_TYPE:
|
|
case PED_PARTITION_PALO:
|
|
case PED_PARTITION_PREP:
|
|
case PED_PARTITION_DIAG:
|
|
Index: parted-3.1/parted/parted.c
|
|
===================================================================
|
|
--- parted-3.1.orig/parted/parted.c
|
|
+++ parted-3.1/parted/parted.c
|
|
@@ -888,28 +888,40 @@ error:
|
|
static char*
|
|
partition_print_flags (PedPartition const *part)
|
|
{
|
|
- char *res = xstrdup ("");
|
|
- if (!part)
|
|
- return res;
|
|
-
|
|
- PedPartitionFlag flag;
|
|
- size_t res_buf_len = 1;
|
|
- char const *sep = "";
|
|
- for (flag = ped_partition_flag_next (0); flag;
|
|
- flag = ped_partition_flag_next (flag))
|
|
- {
|
|
- if (ped_partition_get_flag (part, flag))
|
|
+ int xtype;
|
|
+ char *res = xstrdup ("");
|
|
+ if (!part)
|
|
+ return res;
|
|
+
|
|
+ PedPartitionFlag flag;
|
|
+ size_t res_buf_len = 1;
|
|
+ char const *sep = "";
|
|
+ for (flag = ped_partition_flag_next (0); flag;
|
|
+ flag = ped_partition_flag_next (flag))
|
|
{
|
|
- const char *name = _(ped_partition_flag_get_name (flag));
|
|
- size_t new_len = res_buf_len + strlen (sep) + strlen (name);
|
|
- res = xrealloc (res, new_len);
|
|
- stpcpy (stpcpy (res + res_buf_len - 1, sep), name);
|
|
- res_buf_len = new_len;
|
|
- sep = ", ";
|
|
+ if (xtype = ped_partition_get_flag (part, flag))
|
|
+ {
|
|
+ if (flag == PED_PARTITION_TYPE) {
|
|
+ char tmpstr[21];
|
|
+ int len = snprintf(tmpstr, sizeof(tmpstr) - 1, "type=%02x", xtype);
|
|
+ size_t new_len = res_buf_len + strlen(sep) + strlen(tmpstr);
|
|
+ res = xrealloc(res, new_len);
|
|
+ stpcpy (stpcpy (res + res_buf_len - 1, sep), tmpstr);
|
|
+ res_buf_len = new_len;
|
|
+ sep = ", ";
|
|
+ }
|
|
+ else {
|
|
+ const char *name = _(ped_partition_flag_get_name (flag));
|
|
+ size_t new_len = res_buf_len + strlen (sep) + strlen (name);
|
|
+ res = xrealloc (res, new_len);
|
|
+ stpcpy (stpcpy (res + res_buf_len - 1, sep), name);
|
|
+ res_buf_len = new_len;
|
|
+ sep = ", ";
|
|
+ }
|
|
+ }
|
|
}
|
|
- }
|
|
|
|
- return res;
|
|
+ return res;
|
|
}
|
|
|
|
static int
|
|
@@ -1623,12 +1635,19 @@ do_set (PedDevice** dev)
|
|
goto error_destroy_disk;
|
|
if (!command_line_get_part_flag (_("Flag to Invert?"), part, &flag))
|
|
goto error_destroy_disk;
|
|
+ if( flag == PED_PARTITION_TYPE )
|
|
+ state = ped_partition_get_flag (part, flag);
|
|
+ else
|
|
state = (ped_partition_get_flag (part, flag) == 0 ? 1 : 0);
|
|
|
|
- if (!is_toggle_mode) {
|
|
+ if (!is_toggle_mode && flag != PED_PARTITION_TYPE ) {
|
|
if (!command_line_get_state (_("New state?"), &state))
|
|
goto error_destroy_disk;
|
|
}
|
|
+ else if( flag == PED_PARTITION_TYPE ) {
|
|
+ if (!command_line_get_integer (_("New type?"), &state))
|
|
+ goto error_destroy_disk;
|
|
+ }
|
|
|
|
if (!ped_partition_set_flag (part, flag, state))
|
|
goto error_destroy_disk;
|
|
Index: parted-3.1/parted/ui.c
|
|
===================================================================
|
|
--- parted-3.1.orig/parted/ui.c
|
|
+++ parted-3.1/parted/ui.c
|
|
@@ -917,6 +917,9 @@ command_line_get_integer (const char* pr
|
|
NULL, 1);
|
|
if (!input)
|
|
return 0;
|
|
+ if (strstr(input, "0x") == input)
|
|
+ valid = sscanf (input, "%x", value);
|
|
+ else
|
|
valid = sscanf (input, "%d", value);
|
|
free (input);
|
|
return valid;
|