Accepting request 971201 from home:aschnell:branches:Base:System
- 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
This commit is contained in:
parent
157b79454f
commit
c34e26e7e1
557
direct-handling-of-partition-type-id-and-uuid.patch
Normal file
557
direct-handling-of-partition-type-id-and-uuid.patch
Normal file
@ -0,0 +1,557 @@
|
||||
From 1d798715b5998cd4afd184beb88ebdbe1a2642e8 Mon Sep 17 00:00:00 2001
|
||||
From: Arvin Schnell <aschnell@suse.de>
|
||||
Date: Thu, 14 Oct 2021 16:29:06 +0200
|
||||
Subject: [PATCH] allow direct handling of partition type id and uuid
|
||||
|
||||
---
|
||||
include/parted/disk.in.h | 23 +++++-
|
||||
libparted/disk.c | 86 ++++++++++++++++++++++
|
||||
libparted/labels/dasd.c | 4 ++
|
||||
libparted/labels/dos.c | 30 +++++++-
|
||||
libparted/labels/gpt.c | 40 ++++++++++-
|
||||
parted/parted.c | 146 +++++++++++++++++++++++++++++++++++++-
|
||||
tests/t0800-json-gpt.sh | 2 +
|
||||
tests/t0801-json-msdos.sh | 5 +-
|
||||
8 files changed, 329 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/include/parted/disk.in.h b/include/parted/disk.in.h
|
||||
index 303f59c..d7fde12 100644
|
||||
--- a/include/parted/disk.in.h
|
||||
+++ b/include/parted/disk.in.h
|
||||
@@ -32,6 +32,7 @@
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
+#include <stdint.h>
|
||||
|
||||
/**
|
||||
* Disk flags
|
||||
@@ -91,9 +92,11 @@ enum _PedPartitionFlag {
|
||||
PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */
|
||||
PED_DISK_TYPE_PARTITION_NAME=2, /**< supports partition names */
|
||||
- PED_DISK_TYPE_SYSTEM_NAME=4 /**< supports system names */
|
||||
+ PED_DISK_TYPE_SYSTEM_NAME=4, /**< supports system names */
|
||||
+ PED_DISK_TYPE_PARTITION_TYPE_ID=8, /**< supports partition type-ids */
|
||||
+ PED_DISK_TYPE_PARTITION_TYPE_UUID=16, /**< supports partition type-uuids */
|
||||
};
|
||||
#define PED_DISK_TYPE_FIRST_FEATURE PED_DISK_TYPE_EXTENDED
|
||||
-#define PED_DISK_TYPE_LAST_FEATURE PED_DISK_TYPE_SYSTEM_NAME
|
||||
+#define PED_DISK_TYPE_LAST_FEATURE PED_DISK_TYPE_PARTITION_TYPE_UUID
|
||||
|
||||
struct _PedDisk;
|
||||
struct _PedPartition;
|
||||
@@ -247,6 +250,13 @@ struct _PedDiskOps {
|
||||
PedPartitionFlag flag);
|
||||
void (*partition_set_name) (PedPartition* part, const char* name);
|
||||
const char* (*partition_get_name) (const PedPartition* part);
|
||||
+
|
||||
+ int (*partition_set_type_id) (PedPartition* part, uint8_t id);
|
||||
+ uint8_t (*partition_get_type_id) (const PedPartition* part);
|
||||
+
|
||||
+ int (*partition_set_type_uuid) (PedPartition* part, const uint8_t* uuid);
|
||||
+ uint8_t* (*partition_get_type_uuid) (const PedPartition* part);
|
||||
+
|
||||
int (*partition_align) (PedPartition* part,
|
||||
const PedConstraint* constraint);
|
||||
int (*partition_enumerate) (PedPartition* part);
|
||||
@@ -347,6 +357,10 @@ extern int ped_partition_set_system (PedPartition* part,
|
||||
extern int ped_partition_set_system_name (PedPartition* part, const char* name);
|
||||
extern const char* ped_partition_get_name (const PedPartition* part);
|
||||
extern const char* ped_partition_get_system_name (const PedPartition* part);
|
||||
+extern int ped_partition_set_type_id (PedPartition* part, uint8_t id);
|
||||
+extern uint8_t ped_partition_get_type_id (const PedPartition* part);
|
||||
+extern int ped_partition_set_type_uuid (PedPartition* part, const uint8_t* uuid);
|
||||
+extern uint8_t* ped_partition_get_type_uuid (const PedPartition* part);
|
||||
extern int ped_partition_is_busy (const PedPartition* part);
|
||||
extern char* ped_partition_get_path (const PedPartition* part);
|
||||
|
||||
diff --git a/libparted/disk.c b/libparted/disk.c
|
||||
index 8496fc0..80f3154 100644
|
||||
--- a/libparted/disk.c
|
||||
+++ b/libparted/disk.c
|
||||
@@ -1458,6 +1458,36 @@ _assert_partition_name_feature (const PedDiskType* disk_type)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static int
|
||||
+_assert_partition_type_id_feature (const PedDiskType* disk_type)
|
||||
+{
|
||||
+ if (!ped_disk_type_check_feature (
|
||||
+ disk_type, PED_DISK_TYPE_PARTITION_TYPE_ID)) {
|
||||
+ ped_exception_throw (
|
||||
+ PED_EXCEPTION_ERROR,
|
||||
+ PED_EXCEPTION_CANCEL,
|
||||
+ "%s disk labels do not support partition type-ids.",
|
||||
+ disk_type->name);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+_assert_partition_type_uuid_feature (const PedDiskType* disk_type)
|
||||
+{
|
||||
+ if (!ped_disk_type_check_feature (
|
||||
+ disk_type, PED_DISK_TYPE_PARTITION_TYPE_UUID)) {
|
||||
+ ped_exception_throw (
|
||||
+ PED_EXCEPTION_ERROR,
|
||||
+ PED_EXCEPTION_CANCEL,
|
||||
+ "%s disk labels do not support partition type-uuids.",
|
||||
+ disk_type->name);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Sets the name of a partition.
|
||||
*
|
||||
@@ -1510,6 +1540,62 @@ ped_partition_get_name (const PedPartition* part)
|
||||
return part->disk->type->ops->partition_get_name (part);
|
||||
}
|
||||
|
||||
+int
|
||||
+ped_partition_set_type_id (PedPartition *part, uint8_t id)
|
||||
+{
|
||||
+ PED_ASSERT (part != NULL);
|
||||
+ PED_ASSERT (part->disk != NULL);
|
||||
+ PED_ASSERT (ped_partition_is_active (part));
|
||||
+
|
||||
+ if (!_assert_partition_type_id_feature (part->disk->type))
|
||||
+ return 0;
|
||||
+
|
||||
+ PED_ASSERT (part->disk->type->ops->partition_set_type_id != NULL);
|
||||
+ return part->disk->type->ops->partition_set_type_id (part, id);
|
||||
+}
|
||||
+
|
||||
+uint8_t
|
||||
+ped_partition_get_type_id (const PedPartition *part)
|
||||
+{
|
||||
+ PED_ASSERT (part != NULL);
|
||||
+ PED_ASSERT (part->disk != NULL);
|
||||
+ PED_ASSERT (ped_partition_is_active (part));
|
||||
+
|
||||
+ if (!_assert_partition_type_id_feature (part->disk->type))
|
||||
+ return 0;
|
||||
+
|
||||
+ PED_ASSERT (part->disk->type->ops->partition_set_type_id != NULL);
|
||||
+ return part->disk->type->ops->partition_get_type_id (part);
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+ped_partition_set_type_uuid (PedPartition *part, const uint8_t* uuid)
|
||||
+{
|
||||
+ PED_ASSERT (part != NULL);
|
||||
+ PED_ASSERT (part->disk != NULL);
|
||||
+ PED_ASSERT (ped_partition_is_active (part));
|
||||
+
|
||||
+ if (!_assert_partition_type_uuid_feature (part->disk->type))
|
||||
+ return 0;
|
||||
+
|
||||
+ PED_ASSERT (part->disk->type->ops->partition_set_type_uuid != NULL);
|
||||
+ return part->disk->type->ops->partition_set_type_uuid (part, uuid);
|
||||
+}
|
||||
+
|
||||
+uint8_t*
|
||||
+ped_partition_get_type_uuid (const PedPartition *part)
|
||||
+{
|
||||
+ PED_ASSERT (part != NULL);
|
||||
+ PED_ASSERT (part->disk != NULL);
|
||||
+ PED_ASSERT (ped_partition_is_active (part));
|
||||
+
|
||||
+ if (!_assert_partition_type_uuid_feature (part->disk->type))
|
||||
+ return NULL;
|
||||
+
|
||||
+ PED_ASSERT (part->disk->type->ops->partition_set_type_uuid != NULL);
|
||||
+ return part->disk->type->ops->partition_get_type_uuid (part);
|
||||
+}
|
||||
+
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c
|
||||
index 6b0b10d..1747202 100644
|
||||
--- a/libparted/labels/dasd.c
|
||||
+++ b/libparted/labels/dasd.c
|
||||
@@ -117,6 +117,10 @@ static PedDiskOps dasd_disk_ops = {
|
||||
|
||||
partition_set_name: NULL,
|
||||
partition_get_name: NULL,
|
||||
+ partition_set_type_id: NULL,
|
||||
+ partition_get_type_id: NULL,
|
||||
+ partition_set_type_uuid: NULL,
|
||||
+ partition_get_type_uuid: NULL,
|
||||
disk_set_flag: dasd_disk_set_flag,
|
||||
disk_get_flag: dasd_disk_get_flag,
|
||||
disk_is_flag_available: dasd_disk_is_flag_available,
|
||||
diff --git a/libparted/labels/dos.c b/libparted/labels/dos.c
|
||||
index b44ccaf..44c8cfc 100644
|
||||
--- a/libparted/labels/dos.c
|
||||
+++ b/libparted/labels/dos.c
|
||||
@@ -1754,6 +1754,30 @@ msdos_partition_is_flag_available (const PedPartition* part,
|
||||
}
|
||||
}
|
||||
|
||||
+
|
||||
+int
|
||||
+msdos_partition_set_type_id (PedPartition *part, uint8_t id)
|
||||
+{
|
||||
+ DosPartitionData *dos_part_data = part->disk_specific;
|
||||
+
|
||||
+ dos_part_data->system = id;
|
||||
+
|
||||
+ // TODO set the correct flag but there is no function for that. better cleanup flags
|
||||
+ // and use system directly (like in gpt.c)
|
||||
+
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+uint8_t _GL_ATTRIBUTE_PURE
|
||||
+msdos_partition_get_type_id (const PedPartition *part)
|
||||
+{
|
||||
+ const DosPartitionData *dos_part_data = part->disk_specific;
|
||||
+
|
||||
+ return dos_part_data->system;
|
||||
+}
|
||||
+
|
||||
+
|
||||
static PedGeometry*
|
||||
_try_constraint (const PedPartition* part, const PedConstraint* external,
|
||||
PedConstraint* internal)
|
||||
@@ -2590,6 +2614,10 @@ static PedDiskOps msdos_disk_ops = {
|
||||
|
||||
partition_set_name: NULL,
|
||||
partition_get_name: NULL,
|
||||
+ partition_set_type_id: msdos_partition_set_type_id,
|
||||
+ partition_get_type_id: msdos_partition_get_type_id,
|
||||
+ partition_set_type_uuid: NULL,
|
||||
+ partition_get_type_uuid: NULL,
|
||||
|
||||
PT_op_function_initializers (msdos)
|
||||
};
|
||||
@@ -2598,7 +2626,7 @@ static PedDiskType msdos_disk_type = {
|
||||
next: NULL,
|
||||
name: "msdos",
|
||||
ops: &msdos_disk_ops,
|
||||
- features: PED_DISK_TYPE_EXTENDED
|
||||
+ features: PED_DISK_TYPE_EXTENDED | PED_DISK_TYPE_PARTITION_TYPE_ID
|
||||
};
|
||||
|
||||
void
|
||||
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
|
||||
index c5d7bb3..db18790 100644
|
||||
--- a/libparted/labels/gpt.c
|
||||
+++ b/libparted/labels/gpt.c
|
||||
@@ -1685,6 +1685,45 @@ gpt_partition_get_name (const PedPartition *part)
|
||||
return gpt_part_data->translated_name;
|
||||
}
|
||||
|
||||
+
|
||||
+static int
|
||||
+gpt_partition_set_type_uuid (PedPartition *part, const uint8_t* uuid)
|
||||
+{
|
||||
+ GPTPartitionData *gpt_part_data = part->disk_specific;
|
||||
+
|
||||
+ efi_guid_t* type_uuid = &gpt_part_data->type;
|
||||
+ memcpy(type_uuid, uuid, sizeof (efi_guid_t));
|
||||
+
|
||||
+ /* type_uuid is always LE, while uint8_t is always kind of BE */
|
||||
+
|
||||
+ type_uuid->time_low = PED_SWAP32(type_uuid->time_low);
|
||||
+ type_uuid->time_mid = PED_SWAP16(type_uuid->time_mid);
|
||||
+ type_uuid->time_hi_and_version = PED_SWAP16(type_uuid->time_hi_and_version);
|
||||
+
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static uint8_t*
|
||||
+gpt_partition_get_type_uuid (const PedPartition *part)
|
||||
+{
|
||||
+ const GPTPartitionData *gpt_part_data = part->disk_specific;
|
||||
+
|
||||
+ efi_guid_t type_uuid = gpt_part_data->type;
|
||||
+
|
||||
+ /* type_uuid is always LE, while uint8_t is always kind of BE */
|
||||
+
|
||||
+ type_uuid.time_low = PED_SWAP32(type_uuid.time_low);
|
||||
+ type_uuid.time_mid = PED_SWAP16(type_uuid.time_mid);
|
||||
+ type_uuid.time_hi_and_version = PED_SWAP16(type_uuid.time_hi_and_version);
|
||||
+
|
||||
+ uint8_t* buf = ped_malloc(sizeof (uuid_t));
|
||||
+ memcpy(buf, &type_uuid, sizeof (uuid_t));
|
||||
+
|
||||
+ return buf;
|
||||
+}
|
||||
+
|
||||
+
|
||||
static int
|
||||
gpt_get_max_primary_partition_count (const PedDisk *disk)
|
||||
{
|
||||
@@ -1780,6 +1814,10 @@ static PedDiskOps gpt_disk_ops =
|
||||
|
||||
partition_set_name: gpt_partition_set_name,
|
||||
partition_get_name: gpt_partition_get_name,
|
||||
+ partition_set_type_id: NULL,
|
||||
+ partition_get_type_id: NULL,
|
||||
+ partition_set_type_uuid: gpt_partition_set_type_uuid,
|
||||
+ partition_get_type_uuid: gpt_partition_get_type_uuid,
|
||||
disk_set_flag: gpt_disk_set_flag,
|
||||
disk_get_flag: gpt_disk_get_flag,
|
||||
disk_is_flag_available: gpt_disk_is_flag_available,
|
||||
@@ -1792,7 +1830,7 @@ static PedDiskType gpt_disk_type =
|
||||
next: NULL,
|
||||
name: "gpt",
|
||||
ops: &gpt_disk_ops,
|
||||
- features: PED_DISK_TYPE_PARTITION_NAME
|
||||
+ features: PED_DISK_TYPE_PARTITION_NAME | PED_DISK_TYPE_PARTITION_TYPE_UUID
|
||||
};
|
||||
|
||||
void
|
||||
diff --git a/parted/parted.c b/parted/parted.c
|
||||
index 310f011..f840037 100644
|
||||
--- a/parted/parted.c
|
||||
+++ b/parted/parted.c
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <config.h>
|
||||
#include <stdbool.h>
|
||||
+#include <uuid/uuid.h>
|
||||
|
||||
#include "argmatch.h"
|
||||
#include "closeout.h"
|
||||
@@ -174,6 +175,8 @@ static const char* end_msg = N_("END is disk location, such as "
|
||||
static const char* state_msg = N_("STATE is one of: on, off\n");
|
||||
static const char* device_msg = N_("DEVICE is usually /dev/hda or /dev/sda\n");
|
||||
static const char* name_msg = N_("NAME is any word you want\n");
|
||||
+static const char* type_id_msg = N_("TYPE_ID is a value between 0x01 and 0xff\n");
|
||||
+static const char* type_uuid_msg = N_("TYPE_UUID is a non-null uuid\n");
|
||||
|
||||
static const char* copyright_msg = N_(
|
||||
"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
|
||||
@@ -917,6 +920,110 @@ error:
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int
|
||||
+do_type_id (PedDevice** dev, PedDisk** diskp)
|
||||
+{
|
||||
+ PedPartition* part = NULL;
|
||||
+ char* input = NULL;
|
||||
+
|
||||
+ if (!*diskp)
|
||||
+ *diskp = ped_disk_new (*dev);
|
||||
+ if (!*diskp)
|
||||
+ goto error;
|
||||
+
|
||||
+ if (!ped_disk_type_check_feature((*diskp)->type, PED_DISK_TYPE_PARTITION_TYPE_ID)) {
|
||||
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
|
||||
+ _("%s disk labels do not support partition type-id."),
|
||||
+ (*diskp)->type->name);
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if (!command_line_get_partition (_("Partition number?"), *diskp, &part))
|
||||
+ goto error;
|
||||
+
|
||||
+ uint8_t type_id = ped_partition_get_type_id (part);
|
||||
+
|
||||
+ static char buf[8];
|
||||
+ snprintf(buf, 8, "0x%02x", type_id);
|
||||
+
|
||||
+ input = command_line_get_word (_("Partition type-id?"), buf, NULL, 0);
|
||||
+ if (!input)
|
||||
+ goto error;
|
||||
+
|
||||
+ unsigned int tmp = strtol (input, (char**) NULL, 0);
|
||||
+ if (tmp == 0 || tmp > 0xff) {
|
||||
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
|
||||
+ _("Invalid id."));
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if (!ped_partition_set_type_id (part, tmp))
|
||||
+ goto error_free_input;
|
||||
+
|
||||
+ free (input);
|
||||
+
|
||||
+ if (!ped_disk_commit (*diskp))
|
||||
+ goto error;
|
||||
+ return 1;
|
||||
+
|
||||
+error_free_input:
|
||||
+ free (input);
|
||||
+error:
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+do_type_uuid (PedDevice** dev, PedDisk** diskp)
|
||||
+{
|
||||
+ PedPartition* part = NULL;
|
||||
+ char* input = NULL;
|
||||
+
|
||||
+ if (!*diskp)
|
||||
+ *diskp = ped_disk_new (*dev);
|
||||
+ if (!*diskp)
|
||||
+ goto error;
|
||||
+
|
||||
+ if (!ped_disk_type_check_feature((*diskp)->type, PED_DISK_TYPE_PARTITION_TYPE_UUID)) {
|
||||
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
|
||||
+ _("%s disk labels do not support partition type-uuid."),
|
||||
+ (*diskp)->type->name);
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if (!command_line_get_partition (_("Partition number?"), *diskp, &part))
|
||||
+ goto error;
|
||||
+
|
||||
+ uint8_t* type_uuid = ped_partition_get_type_uuid (part);
|
||||
+ static char buf[UUID_STR_LEN];
|
||||
+ uuid_unparse_lower (type_uuid, buf);
|
||||
+ free (type_uuid);
|
||||
+
|
||||
+ input = command_line_get_word (_("Partition type-uuid?"), buf, NULL, 0);
|
||||
+ if (!input)
|
||||
+ goto error;
|
||||
+
|
||||
+ uuid_t tmp;
|
||||
+ if (uuid_parse (input, tmp) != 0 || uuid_is_null (tmp)) {
|
||||
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
|
||||
+ _("Invalid uuid."));
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if (!ped_partition_set_type_uuid (part, tmp))
|
||||
+ goto error_free_input;
|
||||
+
|
||||
+ free (input);
|
||||
+
|
||||
+ if (!ped_disk_commit (*diskp))
|
||||
+ goto error;
|
||||
+ return 1;
|
||||
+
|
||||
+error_free_input:
|
||||
+ free (input);
|
||||
+error:
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static char*
|
||||
partition_print_flags (PedPartition const *part)
|
||||
{
|
||||
@@ -1161,6 +1268,8 @@ do_print (PedDevice** dev, PedDisk** diskp)
|
||||
Table* table;
|
||||
int has_extended;
|
||||
int has_name;
|
||||
+ int has_id;
|
||||
+ int has_uuid;
|
||||
int has_devices_arg = 0;
|
||||
int has_free_arg = 0;
|
||||
int has_list_arg = 0;
|
||||
@@ -1270,6 +1379,10 @@ do_print (PedDevice** dev, PedDisk** diskp)
|
||||
PED_DISK_TYPE_EXTENDED);
|
||||
has_name = ped_disk_type_check_feature ((*diskp)->type,
|
||||
PED_DISK_TYPE_PARTITION_NAME);
|
||||
+ has_id = ped_disk_type_check_feature ((*diskp)->type,
|
||||
+ PED_DISK_TYPE_PARTITION_TYPE_ID);
|
||||
+ has_uuid = ped_disk_type_check_feature ((*diskp)->type,
|
||||
+ PED_DISK_TYPE_PARTITION_TYPE_UUID);
|
||||
|
||||
PedPartition* part;
|
||||
if (opt_output_mode == HUMAN) {
|
||||
@@ -1407,6 +1520,21 @@ do_print (PedDevice** dev, PedDisk** diskp)
|
||||
|
||||
if (!(part->type & PED_PARTITION_FREESPACE)) {
|
||||
|
||||
+ if (has_id) {
|
||||
+ uint8_t type_id = ped_partition_get_type_id (part);
|
||||
+ static char buf[8];
|
||||
+ snprintf(buf, 8, "0x%02x", type_id);
|
||||
+ ul_jsonwrt_value_s (&json, "type-id", buf);
|
||||
+ }
|
||||
+
|
||||
+ if (has_uuid) {
|
||||
+ uint8_t* type_uuid = ped_partition_get_type_uuid (part);
|
||||
+ static char buf[UUID_STR_LEN];
|
||||
+ uuid_unparse_lower (type_uuid, buf);
|
||||
+ ul_jsonwrt_value_s (&json, "type-uuid", buf);
|
||||
+ free (type_uuid);
|
||||
+ }
|
||||
+
|
||||
if (has_name) {
|
||||
name = ped_partition_get_name (part);
|
||||
if (strcmp (name, "") != 0)
|
||||
@@ -2218,6 +2346,22 @@ _("name NUMBER NAME name partition NUMBER as NAME"),
|
||||
NULL),
|
||||
str_list_create (_(number_msg), _(name_msg), NULL), 1));
|
||||
|
||||
+command_register (commands, command_create (
|
||||
+ str_list_create_unique ("type-id", _("type-id"), NULL),
|
||||
+ do_type_id,
|
||||
+ str_list_create (
|
||||
+_("type-id NUMBER TYPE-ID type-id set TYPE-ID of partition NUMBER"),
|
||||
+NULL),
|
||||
+ str_list_create (_(number_msg), _(type_id_msg), NULL), 1));
|
||||
+
|
||||
+command_register (commands, command_create (
|
||||
+ str_list_create_unique ("type-uuid", _("type-uuid"), NULL),
|
||||
+ do_type_uuid,
|
||||
+ str_list_create (
|
||||
+_("type-uuid NUMBER TYPE-UUID type-uuid set TYPE-UUID of partition NUMBER"),
|
||||
+NULL),
|
||||
+ str_list_create (_(number_msg), _(type_uuid_msg), NULL), 1));
|
||||
+
|
||||
command_register (commands, command_create (
|
||||
str_list_create_unique ("print", _("print"), NULL),
|
||||
do_print,
|
||||
diff --git a/tests/t0800-json-gpt.sh b/tests/t0800-json-gpt.sh
|
||||
index 8dd1862..354c0bd 100755
|
||||
--- a/tests/t0800-json-gpt.sh
|
||||
+++ b/tests/t0800-json-gpt.sh
|
||||
@@ -62,6 +62,7 @@ cat <<EOF > exp || fail=1
|
||||
"end": "20479s",
|
||||
"size": "10240s",
|
||||
"type": "primary",
|
||||
+ "type-uuid": "0fc63daf-8483-4772-8e79-3d69d8477de4",
|
||||
"name": "test1"
|
||||
},{
|
||||
"number": 2,
|
||||
@@ -69,6 +70,7 @@ cat <<EOF > exp || fail=1
|
||||
"end": "61439s",
|
||||
"size": "40960s",
|
||||
"type": "primary",
|
||||
+ "type-uuid": "a19d880f-05fc-4d3b-a006-743f0f84911e",
|
||||
"name": "test2",
|
||||
"flags": [
|
||||
"raid"
|
||||
diff --git a/tests/t0801-json-msdos.sh b/tests/t0801-json-msdos.sh
|
||||
index a14a5af..c5446d8 100755
|
||||
--- a/tests/t0801-json-msdos.sh
|
||||
+++ b/tests/t0801-json-msdos.sh
|
||||
@@ -52,13 +52,15 @@ cat <<EOF > exp || fail=1
|
||||
"start": "5.00MiB",
|
||||
"end": "10.0MiB",
|
||||
"size": "5.00MiB",
|
||||
- "type": "primary"
|
||||
+ "type": "primary",
|
||||
+ "type-id": "0x83"
|
||||
},{
|
||||
"number": 2,
|
||||
"start": "10.0MiB",
|
||||
"end": "30.0MiB",
|
||||
"size": "20.0MiB",
|
||||
"type": "extended",
|
||||
+ "type-id": "0x0f",
|
||||
"flags": [
|
||||
"lba"
|
||||
]
|
||||
@@ -68,6 +70,7 @@ cat <<EOF > exp || fail=1
|
||||
"end": "20.0MiB",
|
||||
"size": "10.0MiB",
|
||||
"type": "logical",
|
||||
+ "type-id": "0x8e",
|
||||
"flags": [
|
||||
"lvm"
|
||||
]
|
@ -61,7 +61,7 @@ Index: parted-3.3/libparted/arch/linux.c
|
||||
if (!_partition_is_mounted_by_path (name)) {
|
||||
- fd = open (name, WR_MODE, 0);
|
||||
+ fd = open (name, RD_MODE, 0);
|
||||
if (fd > 0) {
|
||||
if (fd > -1) {
|
||||
ioctl (fd, BLKFLSBUF);
|
||||
retry:
|
||||
@@ -1709,7 +1728,7 @@ _device_open_ro (PedDevice* dev)
|
||||
|
@ -9,17 +9,17 @@ Index: parted-3.3/configure.ac
|
||||
===================================================================
|
||||
--- parted-3.3.orig/configure.ac
|
||||
+++ parted-3.3/configure.ac
|
||||
@@ -151,7 +151,8 @@ AM_CPPFLAGS="$AM_CPPFLAGS -D_REENTRANT"
|
||||
@@ -147,7 +147,8 @@ AM_CPPFLAGS="$AM_CPPFLAGS -D_REENTRANT"
|
||||
|
||||
dnl Check for programs.
|
||||
AC_ISC_POSIX
|
||||
AC_SEARCH_LIBS([strerror],[cposix])
|
||||
-AC_PROG_CC
|
||||
+AC_PROG_CC_STDC
|
||||
+AC_USE_SYSTEM_EXTENSIONS
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
@@ -331,7 +332,7 @@ dnl Check for termcap
|
||||
@@ -320,7 +321,7 @@ dnl Check for termcap
|
||||
if test "$with_readline" = yes; then
|
||||
OLD_LIBS="$LIBS"
|
||||
LIBS=""
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e1298022472da5589b7f2be1d5ee3c1b66ec3d96dfbad03dc642afd009da5342
|
||||
size 1860300
|
@ -1,11 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQFDBAABCgAtFiEEtMa0UeT6i0IyyhkeEX6MFo7+On8FAmASBNUPHGJjbEByZWRo
|
||||
YXQuY29tAAoJEBF+jBaO/jp/blAH+gNmum3xO2/fZhwRUo1mmb+qP9MlAexjt9VJ
|
||||
KX79/5ICIFSubVLxzsJTN5g3hZQUoui3qcgdJhnp14bK3hSsvBKtvAAUp+myB+1t
|
||||
9aypzK+qvw32aaCtPfS00qe4Re2ry6LyuW7hsATPIvcQWF/Xc76FLzG6ilzshxS0
|
||||
iftCM/NSp3aGBcNa4Ru3TkbQ1vFtuKYkt24hItODtrYAMGb2IQzSPHCbZw1kfV/J
|
||||
pypllYB7A6ykr9xqhXPW30d3hERmvcJS0LoUzzEmHRf4YYkYk2N0BQoa4KYI1ULX
|
||||
rlpG+iJSc0RN8EgHwecdHfPN3umE2UXn3aYCS5GX2Dn9xPsjaSM=
|
||||
=HdSF
|
||||
-----END PGP SIGNATURE-----
|
BIN
parted-3.5.tar.xz
(Stored with Git LFS)
Normal file
BIN
parted-3.5.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
11
parted-3.5.tar.xz.sig
Normal file
11
parted-3.5.tar.xz.sig
Normal file
@ -0,0 +1,11 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAABCgAdFiEEtMa0UeT6i0IyyhkeEX6MFo7+On8FAmJduCkACgkQEX6MFo7+
|
||||
On9cLAgAmAn86lYjZj+Ka5EHrVtaFgh1Nvz84EOwZd0TVRTJyP/u56QrOXxRYFFr
|
||||
6SiJuI1sWfpkzMGG8RYhcr/hu0Os4rtDdhwXXA75QexpSZamPRSo/EU7skrPW0ZD
|
||||
ycw6jUIBO5de4kCLmM/4byl6LV5eFixJYJ5zfD+SnQsMJvO6/fBo0Dv+pNGF/m5F
|
||||
mQeLWmgfqCNZ3INoHLPxuP08gpA9aELp6UFipbqBZqeRIk4K+jGSWlLu62mwl2sQ
|
||||
1OYIIdKacBrh14ZhRqXZKGKHk94RxiFtD/7CLXK/qzEFylKUMQ/XpUB0QkZNHVZW
|
||||
l2kRXsEGC1c7dWSbMX8lgy02HjfuVQ==
|
||||
=7scj
|
||||
-----END PGP SIGNATURE-----
|
@ -37,7 +37,7 @@ Index: parted-3.3/parted/parted.c
|
||||
===================================================================
|
||||
--- parted-3.3.orig/parted/parted.c
|
||||
+++ parted-3.3/parted/parted.c
|
||||
@@ -76,7 +76,8 @@ static int MEGABYTE_SECTORS (PedDevice*
|
||||
@@ -76,8 +76,9 @@ static int MEGABYTE_SECTORS (PedDevice*
|
||||
enum
|
||||
{
|
||||
PRETEND_INPUT_TTY = CHAR_MAX + 1,
|
||||
@ -46,9 +46,10 @@ Index: parted-3.3/parted/parted.c
|
||||
+ WIPESIGNATURES = CHAR_MAX + 3,
|
||||
};
|
||||
|
||||
/* Output modes */
|
||||
enum
|
||||
@@ -118,6 +119,7 @@ static struct option const options[] = {
|
||||
{"script", 0, NULL, 's'},
|
||||
{"fix", 0, NULL, 'f'},
|
||||
{"version", 0, NULL, 'v'},
|
||||
{"align", required_argument, NULL, 'a'},
|
||||
+ {"ignore-busy", 0, NULL, IGNORE_BUSY},
|
||||
@ -56,7 +57,7 @@ Index: parted-3.3/parted/parted.c
|
||||
{"-pretend-input-tty", 0, NULL, PRETEND_INPUT_TTY},
|
||||
{NULL, 0, NULL, 0}
|
||||
@@ -130,10 +132,13 @@ static const char *const options_help []
|
||||
{"script", N_("never prompts for user intervention")},
|
||||
{"fix", N_("in script mode, fix instead of abort when asked")},
|
||||
{"version", N_("displays the version")},
|
||||
{"align=[none|cyl|min|opt]", N_("alignment for new partitions")},
|
||||
+ {"ignore-busy", N_("perform action although partition is busy")},
|
||||
@ -67,8 +68,8 @@ Index: parted-3.3/parted/parted.c
|
||||
+#define LONGOPT_HELP_START 6 /* index to first long option help */
|
||||
+
|
||||
int opt_script_mode = 0;
|
||||
int opt_fix_mode = 0;
|
||||
int pretend_input_tty = 0;
|
||||
int wipesignatures = 0;
|
||||
@@ -141,6 +146,7 @@ int opt_machine_mode = 0;
|
||||
int disk_is_modified = 0;
|
||||
int is_toggle_mode = 0;
|
||||
|
@ -1,79 +0,0 @@
|
||||
From: Sebastian Parschauer <sparschauer@suse.de>
|
||||
Date: Tue, 7 Nov 2017 20:14:06 +0100
|
||||
Subject: parted: Escape printed device path in machine mode
|
||||
References: bsc#1066467
|
||||
Patch-mainline: submitted, 2017-11-07
|
||||
|
||||
The function _print_disk_info() uses the colon ':' as the separator
|
||||
but the device path it prints can contain that character as well.
|
||||
In that case parsing fails.
|
||||
So introduce the function _escape_machine_string() to allocate an
|
||||
output string twice as big as the input string and escape ':' and
|
||||
'\' with a '\'. Print the escaped path and free it again. Ignore
|
||||
the NULL pointer dereference in out-of-memory situation like it
|
||||
is done for the other allocations in _print_disk_info() as well.
|
||||
|
||||
Resolves: bsc#1066467
|
||||
|
||||
Reported-by: Arvin Schnell <aschnell@suse.com>
|
||||
Signed-off-by: Sebastian Parschauer <sparschauer@suse.de>
|
||||
---
|
||||
parted/parted.c | 29 ++++++++++++++++++++++++++++-
|
||||
1 file changed, 28 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: parted-3.3/parted/parted.c
|
||||
===================================================================
|
||||
--- parted-3.3.orig/parted/parted.c
|
||||
+++ parted-3.3/parted/parted.c
|
||||
@@ -1053,6 +1053,30 @@ _print_disk_geometry (const PedDevice *d
|
||||
free (cyl_size);
|
||||
}
|
||||
|
||||
+static char *
|
||||
+_escape_machine_string (const char *str)
|
||||
+{
|
||||
+ size_t i, j;
|
||||
+ char *dest;
|
||||
+
|
||||
+ dest = ped_malloc ((strlen(str) + 1) * 2);
|
||||
+ if (!dest)
|
||||
+ return NULL;
|
||||
+
|
||||
+ for (i = 0, j = 0; str[i] != '\0'; i++, j++) {
|
||||
+ switch (str[i]) {
|
||||
+ case ':':
|
||||
+ case '\\':
|
||||
+ dest[j++] = '\\';
|
||||
+ default:
|
||||
+ dest[j] = str[i];
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ dest[j] = '\0';
|
||||
+ return dest;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
_print_disk_info (const PedDevice *dev, const PedDisk *diskp)
|
||||
{
|
||||
@@ -1073,6 +1097,8 @@ _print_disk_info (const PedDevice *dev,
|
||||
char *disk_flags = disk_print_flags (diskp);
|
||||
|
||||
if (opt_machine_mode) {
|
||||
+ char *path = _escape_machine_string (dev->path);
|
||||
+
|
||||
switch (default_unit) {
|
||||
case PED_UNIT_CHS: puts ("CHS;");
|
||||
break;
|
||||
@@ -1083,9 +1109,10 @@ _print_disk_info (const PedDevice *dev,
|
||||
|
||||
}
|
||||
printf ("%s:%s:%s:%lld:%lld:%s:%s:%s;\n",
|
||||
- dev->path, end, transport[dev->type],
|
||||
+ path, end, transport[dev->type],
|
||||
dev->sector_size, dev->phys_sector_size,
|
||||
pt_name, dev->model, disk_flags);
|
||||
+ free(path);
|
||||
} else {
|
||||
printf (_("Model: %s (%s)\n"),
|
||||
dev->model, transport[dev->type]);
|
@ -77,16 +77,7 @@ Index: parted-3.3/parted/parted.c
|
||||
goto error;
|
||||
|
||||
/* Push the End value back onto the command_line, if it exists */
|
||||
@@ -1681,19 +1693,32 @@ do_resizepart (PedDevice** dev, PedDisk*
|
||||
goto error;
|
||||
_adjust_end_if_iec(&start, &end, range_end, end_input);
|
||||
free(end_input);
|
||||
+ if (cmdline_words >= end_idx && !_partition_warn_busy (part, danger_if_busy))
|
||||
+ goto error;
|
||||
+
|
||||
/* Do not move start of the partition */
|
||||
constraint = constraint_from_start_end_fixed_start (*dev, start, range_end);
|
||||
if (!ped_disk_set_partition_geom (disk, part, constraint,
|
||||
@@ -1871,13 +1873,23 @@ do_resizepart (PedDevice** dev, PedDisk*
|
||||
start, end))
|
||||
goto error_destroy_constraint;
|
||||
/* warn when shrinking partition - might lose data */
|
||||
@ -105,9 +96,8 @@ Index: parted-3.3/parted/parted.c
|
||||
PED_EXCEPTION_YES_NO,
|
||||
_("Shrinking a partition can cause data loss, " \
|
||||
"are you sure you want to continue?")) != PED_EXCEPTION_YES)
|
||||
- goto error_destroy_constraint;
|
||||
+ {
|
||||
+ goto error_destroy_constraint;
|
||||
goto error_destroy_constraint;
|
||||
+ }
|
||||
+ }
|
||||
ped_disk_commit (disk);
|
||||
|
@ -148,9 +148,9 @@ Index: parted-3.3/parted/parted.c
|
||||
+ WIPESIGNATURES = CHAR_MAX + 2,
|
||||
};
|
||||
|
||||
enum
|
||||
/* Output modes */
|
||||
@@ -117,6 +118,7 @@ static struct option const options[] = {
|
||||
{"script", 0, NULL, 's'},
|
||||
{"fix", 0, NULL, 'f'},
|
||||
{"version", 0, NULL, 'v'},
|
||||
{"align", required_argument, NULL, 'a'},
|
||||
+ {"wipesignatures", 0, NULL, WIPESIGNATURES},
|
||||
@ -158,7 +158,6 @@ Index: parted-3.3/parted/parted.c
|
||||
{NULL, 0, NULL, 0}
|
||||
};
|
||||
@@ -128,11 +130,13 @@ static const char *const options_help []
|
||||
{"script", N_("never prompts for user intervention")},
|
||||
{"version", N_("displays the version")},
|
||||
{"align=[none|cyl|min|opt]", N_("alignment for new partitions")},
|
||||
+ {"wipesignatures", N_("wipe superblock signatures when creating partition")},
|
||||
@ -166,9 +165,10 @@ Index: parted-3.3/parted/parted.c
|
||||
};
|
||||
|
||||
int opt_script_mode = 0;
|
||||
int opt_fix_mode = 0;
|
||||
int pretend_input_tty = 0;
|
||||
int opt_output_mode = HUMAN;
|
||||
+int wipesignatures = 0;
|
||||
int opt_machine_mode = 0;
|
||||
int disk_is_modified = 0;
|
||||
int is_toggle_mode = 0;
|
||||
@@ -651,6 +655,7 @@ _adjust_end_if_iec (PedSector* start, Pe
|
||||
|
14
parted-json-no-type-flag.patch
Normal file
14
parted-json-no-type-flag.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff --git a/parted/parted.c b/parted/parted.c
|
||||
index 5c7c270..aa68d58 100644
|
||||
--- a/parted/parted.c
|
||||
+++ b/parted/parted.c
|
||||
@@ -956,6 +956,9 @@ partition_print_flags_json (PedPartition const *part)
|
||||
for (flag = ped_partition_flag_next (0); flag;
|
||||
flag = ped_partition_flag_next (flag))
|
||||
{
|
||||
+ if (flag == PED_PARTITION_TYPE)
|
||||
+ continue;
|
||||
+
|
||||
if (ped_partition_get_flag (part, flag))
|
||||
{
|
||||
if (!did_open_array)
|
@ -1,68 +0,0 @@
|
||||
From: Sebastian Parschauer <sparschauer@suse.de>
|
||||
Date: Fri, 11 Aug 2017 12:46:42 +0200
|
||||
Subject: parted/ui: Count empty quoted strings as words in multi_word
|
||||
mode
|
||||
References: bsc#1023818, boo#1032562
|
||||
Patch-mainline: submitted, 2017-08-11
|
||||
|
||||
In non-interactive mode, the command line arguments are appended
|
||||
to a string list with command_line_push_line() in multi_word mode.
|
||||
That mode does not count empty strings as a word.
|
||||
For mkpart and a GPT disk label, the partition name is picked up
|
||||
from that string list. The partition name is mandatory and we
|
||||
cannot make it optional. So it is not possible to set an empty
|
||||
partition name from command line this way.
|
||||
Also setting a default name is no option as this causes duplicate
|
||||
/dev/disk/by-partlabel/ symlinks and systemd errors this way.
|
||||
|
||||
So count empty quoted strings as words in multi_word mode to allow
|
||||
the following commands to set an empty partition name.
|
||||
|
||||
parted -s /dev/vdb mkpart "''" 1MiB 100%
|
||||
parted -s /dev/vdb mkpart '""' ext3 1MiB 100%
|
||||
parted -s /dev/vdb name 1 "''"
|
||||
|
||||
The quoting is required as in interactive mode the command
|
||||
"mkpart " (with a trailing space) would set the partition name to
|
||||
an empty string already.
|
||||
|
||||
Signed-off-by: Sebastian Parschauer <sparschauer@suse.de>
|
||||
---
|
||||
parted/ui.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/parted/ui.c b/parted/ui.c
|
||||
index 752860baa087..9991596a3a5a 100644
|
||||
--- a/parted/ui.c
|
||||
+++ b/parted/ui.c
|
||||
@@ -719,6 +719,7 @@ void
|
||||
command_line_push_line (const char* line, int multi_word)
|
||||
{
|
||||
int quoted = 0;
|
||||
+ int quotes_empty = 0;
|
||||
char quote_char = 0;
|
||||
char this_word [256];
|
||||
int i;
|
||||
@@ -746,6 +747,9 @@ command_line_push_line (const char* line, int multi_word)
|
||||
|
||||
if (quoted && *line == quote_char) {
|
||||
quoted = 0;
|
||||
+ /* allow empty partition name in script mode */
|
||||
+ if (!i)
|
||||
+ quotes_empty = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -753,9 +757,11 @@ command_line_push_line (const char* line, int multi_word)
|
||||
if (quoted && line[0] == '\\' && line[1])
|
||||
line++;
|
||||
|
||||
+ quotes_empty = 0;
|
||||
this_word [i++] = *line;
|
||||
}
|
||||
- if (i || !multi_word) {
|
||||
+ if (i || !multi_word || quotes_empty) {
|
||||
+ quotes_empty = 0;
|
||||
this_word [i] = 0;
|
||||
command_line_push_word (this_word);
|
||||
}
|
@ -13,12 +13,12 @@ Index: parted-3.3/parted/parted.c
|
||||
}
|
||||
- printf ("%s:%s:%s:%lld:%lld:%s:%s:%s;\n",
|
||||
+ printf ("%s:%s:%s:%lld:%lld:%s:%s:%s",
|
||||
path, end, transport[dev->type],
|
||||
escaped_path, end, transport[dev->type],
|
||||
dev->sector_size, dev->phys_sector_size,
|
||||
pt_name, dev->model, disk_flags);
|
||||
pt_name, escaped_model, disk_flags);
|
||||
+ if (getenv("PARTED_PRINT_NUMBER_OF_PARTITION_SLOTS"))
|
||||
+ printf(":%lld", diskp && diskp->type->ops->get_max_primary_partition_count ? diskp->type->ops->get_max_primary_partition_count(diskp) : 0);
|
||||
+ printf(";\n");
|
||||
free(path);
|
||||
} else {
|
||||
printf (_("Model: %s (%s)\n"),
|
||||
free (escaped_path);
|
||||
free (escaped_model);
|
||||
} else if (opt_output_mode == JSON) {
|
||||
|
@ -16,16 +16,14 @@ 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
|
||||
@@ -78,10 +78,11 @@
|
||||
PED_PARTITION_IRST=17,
|
||||
PED_PARTITION_ESP=18,
|
||||
@@ -86,9 +86,10 @@
|
||||
PED_PARTITION_CHROMEOS_KERNEL=19,
|
||||
- PED_PARTITION_BLS_BOOT=20
|
||||
+ PED_PARTITION_BLS_BOOT=20,
|
||||
+ PED_PARTITION_TYPE=21
|
||||
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_BLS_BOOT
|
||||
-#define PED_PARTITION_LAST_FLAG PED_PARTITION_LINUX_HOME
|
||||
+#define PED_PARTITION_LAST_FLAG PED_PARTITION_TYPE
|
||||
|
||||
enum _PedDiskTypeFeature {
|
||||
@ -69,8 +67,8 @@ Index: parted-3.3/libparted/labels/dos.c
|
||||
return dos_data->palo;
|
||||
|
||||
@@ -1728,6 +1735,7 @@ msdos_partition_is_flag_available (const
|
||||
case PED_PARTITION_RAID:
|
||||
case PED_PARTITION_LVM:
|
||||
case PED_PARTITION_SWAP:
|
||||
case PED_PARTITION_LBA:
|
||||
+ case PED_PARTITION_TYPE:
|
||||
case PED_PARTITION_PALO:
|
||||
@ -80,7 +78,7 @@ Index: parted-3.3/parted/parted.c
|
||||
===================================================================
|
||||
--- parted-3.3.orig/parted/parted.c
|
||||
+++ parted-3.3/parted/parted.c
|
||||
@@ -928,28 +928,40 @@ error:
|
||||
@@ -946,28 +946,40 @@ error:
|
||||
static char*
|
||||
partition_print_flags (PedPartition const *part)
|
||||
{
|
||||
@ -139,7 +137,7 @@ Index: parted-3.3/parted/parted.c
|
||||
+ return res;
|
||||
}
|
||||
|
||||
static int
|
||||
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))
|
||||
|
@ -1,3 +1,26 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 20 09:11:11 CEST 2022 - aschnell@suse.com
|
||||
|
||||
- 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
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 19 13:16:11 CEST 2021 - aschnell@suse.com
|
||||
|
||||
|
14
parted.spec
14
parted.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package parted
|
||||
#
|
||||
# Copyright (c) 2021 SUSE LLC
|
||||
# Copyright (c) 2022 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
Name: parted
|
||||
Version: 3.4
|
||||
Version: 3.5
|
||||
Release: 0
|
||||
Summary: GNU partitioner
|
||||
License: GPL-3.0-or-later
|
||||
@ -53,19 +53,17 @@ Patch24: libparted-fix-nvme-partition-naming.patch
|
||||
Patch25: libparted-dasd-improve-lvm-raid-flag-handling.patch
|
||||
Patch26: parted-mkpart-set-a-swap-flag-if-available.patch
|
||||
Patch27: libparted-dasd-add-swap-flag-handling-for-DASD-CDL.patch
|
||||
Patch28: parted-mkpart-allow-empty-gpt-part-name.patch
|
||||
Patch29: libparted-fix-NVDIMM-partition-naming.patch
|
||||
Patch30: parted-escape-printed-device-path.patch
|
||||
Patch31: parted-add-ignore-busy-option.patch
|
||||
Patch32: parted-fix-resizepart-and-rm-command.patch
|
||||
Patch33: libparted-use-BLKRRPART-only-when-needed.patch
|
||||
Patch34: libparted-canonicalize-dev-md-paths.patch
|
||||
|
||||
Patch35: parted-json-no-type-flag.patch
|
||||
# bsc#1168756
|
||||
Patch36: libparted-linux-pmem-path.patch
|
||||
|
||||
# bsc#1164260
|
||||
Patch37: parted-print-max-partitions-for-yast.patch
|
||||
Patch38: direct-handling-of-partition-type-id-and-uuid.patch
|
||||
# bsc#1164907
|
||||
Patch64: parted-type-accept-hex.patch
|
||||
# Fatresize
|
||||
@ -155,15 +153,15 @@ to develop applications that require these.
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
%patch27 -p1
|
||||
%patch28 -p1
|
||||
%patch29 -p1
|
||||
%patch30 -p1
|
||||
%patch31 -p1
|
||||
%patch32 -p1
|
||||
%patch33 -p1
|
||||
%patch34 -p1
|
||||
%patch35 -p1
|
||||
%patch36 -p1
|
||||
%patch37 -p1
|
||||
%patch38 -p1
|
||||
%patch64 -p1
|
||||
%patch100 -p1
|
||||
%patch101 -p1
|
||||
|
@ -16,8 +16,8 @@ index f9340aa..9d0d08f 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -60,7 +60,6 @@ TESTS = \
|
||||
t3200-resize-partition.sh \
|
||||
t3200-type-change.sh \
|
||||
t3210-gpt-type-change.sh \
|
||||
t3300-palo-prep.sh \
|
||||
- t3310-flags.sh \
|
||||
t3400-whole-disk-FAT-partition.sh \
|
||||
|
Loading…
Reference in New Issue
Block a user