Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP2:GA
parted
parted-type.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File parted-type.patch of Package parted
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.2/include/parted/disk.in.h =================================================================== --- parted-3.2.orig/include/parted/disk.in.h +++ parted-3.2/include/parted/disk.in.h @@ -75,10 +75,11 @@ enum _PedPartitionFlag { PED_PARTITION_LEGACY_BOOT=15, PED_PARTITION_MSFT_DATA=16, PED_PARTITION_IRST=17, - PED_PARTITION_ESP=18 + PED_PARTITION_ESP=18, + PED_PARTITION_TYPE=19 }; #define PED_PARTITION_FIRST_FLAG PED_PARTITION_BOOT -#define PED_PARTITION_LAST_FLAG PED_PARTITION_ESP +#define PED_PARTITION_LAST_FLAG PED_PARTITION_TYPE enum _PedDiskTypeFeature { PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */ Index: parted-3.2/libparted/disk.c =================================================================== --- parted-3.2.orig/libparted/disk.c +++ parted-3.2/libparted/disk.c @@ -2388,6 +2388,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.2/libparted/labels/dos.c =================================================================== --- parted-3.2.orig/libparted/labels/dos.c +++ parted-3.2/libparted/labels/dos.c @@ -1550,6 +1550,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 ( @@ -1657,6 +1661,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; @@ -1689,6 +1696,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_IRST: Index: parted-3.2/parted/parted.c =================================================================== --- parted-3.2.orig/parted/parted.c +++ parted-3.2/parted/parted.c @@ -887,28 +887,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 @@ -1726,12 +1738,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;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor