parted/parted-mac.patch
Petr Uzel 0b7af5fbb2 Accepting request 36773 from home:puzel:branches:Base:System
Copy from home:puzel:branches:Base:System/parted via accept of submit request 36773 revision 8.
Request was accepted with message:

OBS-URL: https://build.opensuse.org/request/show/36773
OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=19
2010-04-02 11:35:12 +00:00

179 lines
6.2 KiB
Diff

Index: parted-2.1/libparted/disk.c
===================================================================
--- parted-2.1.orig/libparted/disk.c 2010-02-02 11:38:31.000000000 +0100
+++ parted-2.1/libparted/disk.c 2010-02-02 11:39:16.000000000 +0100
@@ -1178,6 +1178,41 @@ _disk_pop_update_mode (PedDisk* disk)
* @{
*/
+const char*
+ped_partition_get_system_name (const PedPartition* part)
+{
+ PED_ASSERT (part != NULL, return NULL);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+
+ if (!ped_disk_type_check_feature (
+ part->disk->type, PED_DISK_TYPE_SYSTEM_NAME))
+ return NULL; /* silent skip */
+
+ PED_ASSERT (part->disk->type->ops->partition_get_system_name != NULL,
+ return NULL);
+ return part->disk->type->ops->partition_get_system_name (part);
+}
+
+int
+ped_partition_set_system_name (PedPartition* part, const char* name)
+{
+ PED_ASSERT (part != NULL, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+ PED_ASSERT (name != NULL, return 0);
+
+ if (!ped_disk_type_check_feature (
+ part->disk->type, PED_DISK_TYPE_SYSTEM_NAME))
+ return 0; /* silent skip */
+
+ PED_ASSERT (part->disk->type->ops->partition_set_system_name != NULL,
+ return 0);
+ part->disk->type->ops->partition_set_system_name (part, name);
+ return 1;
+}
+
+
PedPartition*
_ped_partition_alloc (const PedDisk* disk, PedPartitionType type,
const PedFileSystemType* fs_type,
Index: parted-2.1/libparted/labels/mac.c
===================================================================
--- parted-2.1.orig/libparted/labels/mac.c 2009-12-16 18:18:13.000000000 +0100
+++ parted-2.1/libparted/labels/mac.c 2010-02-02 11:43:23.000000000 +0100
@@ -1437,6 +1437,36 @@ mac_get_partition_alignment(const PedDis
return ped_alignment_new(0, sector_size);
}
+/* we do not really want to call this ... yet */
+static void
+mac_partition_set_system_name (PedPartition* part, const char* name)
+{
+ MacPartitionData* mac_data;
+ int i;
+
+ PED_ASSERT (part != NULL, return);
+ PED_ASSERT (part->disk_specific != NULL, return);
+ mac_data = part->disk_specific;
+
+ strncpy (mac_data->system_name, name, 32);
+ mac_data->system_name [32] = 0;
+ for (i = strlen (mac_data->system_name) - 1;
+ mac_data->system_name[i] == ' '; i--)
+ mac_data->system_name [i] = 0;
+}
+
+static const char*
+mac_partition_get_system_name (const PedPartition* part)
+{
+ MacPartitionData* mac_data;
+
+ PED_ASSERT (part != NULL, return NULL);
+ PED_ASSERT (part->disk_specific != NULL, return NULL);
+ mac_data = part->disk_specific;
+
+ return mac_data->system_name;
+}
+
static PedConstraint*
_primary_constraint (PedDisk* disk)
{
@@ -1640,6 +1670,8 @@ static PedDiskOps mac_disk_ops = {
partition_set_name: mac_partition_set_name,
partition_get_name: mac_partition_get_name,
+ partition_set_system_name: mac_partition_set_system_name,
+ partition_get_system_name: mac_partition_get_system_name,
get_partition_alignment: mac_get_partition_alignment,
@@ -1650,7 +1682,7 @@ static PedDiskType mac_disk_type = {
next: NULL,
name: "mac",
ops: &mac_disk_ops,
- features: PED_DISK_TYPE_PARTITION_NAME
+ features: PED_DISK_TYPE_PARTITION_NAME | PED_DISK_TYPE_SYSTEM_NAME
};
void
Index: parted-2.1/include/parted/disk.h
===================================================================
--- parted-2.1.orig/include/parted/disk.h 2010-02-02 11:38:31.000000000 +0100
+++ parted-2.1/include/parted/disk.h 2010-02-02 11:39:16.000000000 +0100
@@ -76,10 +76,11 @@ enum _PedPartitionFlag {
enum _PedDiskTypeFeature {
PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */
- PED_DISK_TYPE_PARTITION_NAME=2 /**< supports partition names */
+ PED_DISK_TYPE_PARTITION_NAME=2, /**< supports partition names */
+ PED_DISK_TYPE_SYSTEM_NAME=4 /**< supports system names */
};
#define PED_DISK_TYPE_FIRST_FEATURE PED_DISK_TYPE_EXTENDED
-#define PED_DISK_TYPE_LAST_FEATURE PED_DISK_TYPE_PARTITION_NAME
+#define PED_DISK_TYPE_LAST_FEATURE PED_DISK_TYPE_SYSTEM_NAME
struct _PedDisk;
struct _PedPartition;
@@ -239,6 +240,8 @@ struct _PedDiskOps {
/* other */
int (*alloc_metadata) (PedDisk* disk);
int (*get_max_primary_partition_count) (const PedDisk* disk);
+ void (*partition_set_system_name) (PedPartition* part, const char* name);
+ const char* (*partition_get_system_name) (const PedPartition* part);
bool (*get_max_supported_partition_count) (const PedDisk* disk,
int* supported);
PedAlignment *(*get_partition_alignment)(const PedDisk *disk);
@@ -325,7 +328,9 @@ extern int ped_partition_is_flag_availab
extern int ped_partition_set_system (PedPartition* part,
const PedFileSystemType* fs_type);
extern int ped_partition_set_name (PedPartition* part, const char* name);
+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_is_busy (const PedPartition* part);
extern char* ped_partition_get_path (const PedPartition* part);
Index: parted-2.1/parted/parted.c
===================================================================
--- parted-2.1.orig/parted/parted.c 2010-02-02 11:38:31.000000000 +0100
+++ parted-2.1/parted/parted.c 2010-02-02 11:39:16.000000000 +0100
@@ -1235,6 +1235,7 @@ partition_print_flags (PedPartition* par
char* res = ped_malloc(1);
void* _res = res;
int xtype;
+ const char* sysname;
*res = '\0';
@@ -1269,6 +1270,23 @@ partition_print_flags (PedPartition* par
}
}
+ sysname = ped_partition_get_system_name( part );
+ if (sysname) {
+ if (first_flag)
+ first_flag = 0;
+ else {
+ _res = res;
+ ped_realloc (&_res, strlen (res)
+ + 1 + 2);
+ res = _res;
+ strncat (res, ", ", 2);
+ }
+ _res = res;
+ ped_realloc (&_res, strlen (res) + 6 + strlen(sysname));
+ res = _res;
+ strcat (res, "type=");
+ strcat (res, sysname);
+ }
return res;
}