2007-01-15 15:29:14 +01:00
|
|
|
--- 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 */
|
2007-03-22 21:00:14 +01:00
|
|
|
};
|
2007-01-15 15:29:14 +01:00
|
|
|
#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;
|
|
|
|
}
|
|
|
|
|