File parted-mac.patch of Package parted

--- parted-1.6.2/libparted/disk.c.mac	Tue Aug  6 13:13:27 2002
+++ parted-1.6.2/libparted/disk.c	Tue Aug  6 13:55:05 2002
@@ -1014,6 +1014,41 @@
 	return part->disk->type->ops->partition_get_name (part);
 }
 
+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_disk_extended_partition (const PedDisk* disk)
 {
--- parted-1.6.2/libparted/labels/mac.c.mac	Mon Apr  8 12:08:03 2002
+++ parted-1.6.2/libparted/labels/mac.c	Tue Aug  6 14:00:09 2002
@@ -1209,6 +1209,36 @@
 	return mac_data->volume_name;
 }
 
+/* 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)
 {
@@ -1423,6 +1453,8 @@
 	partition_is_flag_available:	mac_partition_is_flag_available,
 	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,
 	partition_align:	mac_partition_align,
 	partition_enumerate:	mac_partition_enumerate,
 
@@ -1435,7 +1467,7 @@
 	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
--- parted-1.6.2/include/parted/disk.h.mac	Tue Aug  6 13:13:27 2002
+++ parted-1.6.2/include/parted/disk.h	Tue Aug  6 13:58:09 2002
@@ -71,10 +71,11 @@
 
 typedef enum {
         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
 
 /** @} */
 
@@ -170,6 +171,9 @@
         /* 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);
 };
 
 struct _PedDiskType {
@@ -241,7 +245,9 @@
 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);
 
--- parted-1.6.2/parted/parted.c.mac	Tue Aug  6 13:13:27 2002
+++ parted-1.6.2/parted/parted.c	Tue Aug  6 13:13:27 2002
@@ -1088,6 +1088,7 @@
         const char*             name;
         char*                   res = ped_malloc(1); 
         void*                   _res = res;
+	const char*             sysname;
 
         *res = '\0';
 
@@ -1125,6 +1126,23 @@
                 }
         }
 
+	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;
 }
 
openSUSE Build Service is sponsored by