--- 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; }