forked from pool/parted
- update to version 3.5: * Add support for JSON output. * Add support for linux-home flag for GPT. * Add --fix option. added patches: - direct-handling-of-partition-type-id-and-uuid.patch - parted-json-no-type-flag.patch refreshed patches: - libparted-open-the-device-RO-and-lazily-switch-to-RW.patch - parted-2.4-ncursesw6.patch - parted-add-ignore-busy-option.patch - parted-fix-resizepart-and-rm-command.patch - parted-implement-wipesignatures-option.patch - parted-print-max-partitions-for-yast.patch - parted-type.patch - tests-disable.patch removed patches: - parted-escape-printed-device-path.patch - parted-mkpart-allow-empty-gpt-part-name.patch OBS-URL: https://build.opensuse.org/request/show/971201 OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=152
163 lines
5.8 KiB
Diff
163 lines
5.8 KiB
Diff
From: Petr Uzel <petr.uzel@suse.cz>
|
|
Subject: parted: Introduce a type flag
|
|
Patch-mainline: no, required by YaST
|
|
|
|
YaST requires a type flag in order to check the current partition
|
|
type for msdos partition tables.
|
|
---
|
|
include/parted/disk.in.h | 5 ++-
|
|
libparted/disk.c | 2 +
|
|
libparted/labels/dos.c | 8 ++++++
|
|
parted/parted.c | 61 ++++++++++++++++++++++++++++++-----------------
|
|
parted/ui.c | 3 ++
|
|
5 files changed, 56 insertions(+), 23 deletions(-)
|
|
|
|
Index: parted-3.3/include/parted/disk.in.h
|
|
===================================================================
|
|
--- parted-3.3.orig/include/parted/disk.in.h
|
|
+++ parted-3.3/include/parted/disk.in.h
|
|
@@ -86,9 +86,10 @@
|
|
PED_PARTITION_CHROMEOS_KERNEL=19,
|
|
PED_PARTITION_BLS_BOOT=20,
|
|
PED_PARTITION_LINUX_HOME=21,
|
|
+ PED_PARTITION_TYPE=22,
|
|
};
|
|
#define PED_PARTITION_FIRST_FLAG PED_PARTITION_BOOT
|
|
-#define PED_PARTITION_LAST_FLAG PED_PARTITION_LINUX_HOME
|
|
+#define PED_PARTITION_LAST_FLAG PED_PARTITION_TYPE
|
|
|
|
enum _PedDiskTypeFeature {
|
|
PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */
|
|
Index: parted-3.3/libparted/disk.c
|
|
===================================================================
|
|
--- parted-3.3.orig/libparted/disk.c
|
|
+++ parted-3.3/libparted/disk.c
|
|
@@ -2389,6 +2389,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.3/libparted/labels/dos.c
|
|
===================================================================
|
|
--- parted-3.3.orig/libparted/labels/dos.c
|
|
+++ parted-3.3/libparted/labels/dos.c
|
|
@@ -1565,6 +1565,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 (
|
|
@@ -1690,6 +1694,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;
|
|
|
|
@@ -1728,6 +1735,7 @@ msdos_partition_is_flag_available (const
|
|
case PED_PARTITION_LVM:
|
|
case PED_PARTITION_SWAP:
|
|
case PED_PARTITION_LBA:
|
|
+ case PED_PARTITION_TYPE:
|
|
case PED_PARTITION_PALO:
|
|
case PED_PARTITION_PREP:
|
|
case PED_PARTITION_IRST:
|
|
Index: parted-3.3/parted/parted.c
|
|
===================================================================
|
|
--- parted-3.3.orig/parted/parted.c
|
|
+++ parted-3.3/parted/parted.c
|
|
@@ -946,28 +946,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 void
|
|
@@ -1808,12 +1820,19 @@ do_set (PedDevice** dev, PedDisk **diskp
|
|
goto error;
|
|
if (!command_line_get_part_flag (_("Flag to Invert?"), part, &flag))
|
|
goto error;
|
|
- state = (ped_partition_get_flag (part, flag) == 0 ? 1 : 0);
|
|
+ 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;
|
|
}
|
|
+ else if( flag == PED_PARTITION_TYPE ) {
|
|
+ if (!command_line_get_integer (_("New type?"), &state))
|
|
+ goto error;
|
|
+ }
|
|
|
|
if (!ped_partition_set_flag (part, flag, state))
|
|
goto error;
|