static PedPartition* dvh_partition_duplicate (const PedPartition* part) { PedPartition* result; DVHPartData* part_data = part->disk_specific; DVHPartData* result_data; result = _ped_partition_alloc (part->disk, part->type, part->fs_type, part->geom.start, part->geom.end); if (!result) goto error; result->num = part->num; if (!ped_partition_is_active (part)) { result->disk_specific = NULL; return result; } result_data = result->disk_specific = ped_malloc (sizeof (DVHPartData)); if (!result_data) goto error_free_part; result_data->type = part_data->type; strcpy (result_data->name, part_data->name); result_data->real_file_size = part_data->real_file_size; return result; error_free_part: _ped_partition_free (result); error: return NULL; }
static void aix_partition_destroy (PedPartition* part) { PED_ASSERT (part != NULL); _ped_partition_free (part); }
static PedPartition* dvh_partition_new (const PedDisk* disk, PedPartitionType part_type, const PedFileSystemType* fs_type, PedSector start, PedSector end) { PedPartition* part; DVHPartData* dvh_part_data; part = _ped_partition_alloc (disk, part_type, fs_type, start, end); if (!part) goto error; if (!ped_partition_is_active (part)) { part->disk_specific = NULL; return part; } dvh_part_data = part->disk_specific = ped_malloc (sizeof (DVHPartData)); if (!dvh_part_data) goto error_free_part; dvh_part_data->type = (part_type == PED_PARTITION_EXTENDED) ? PTYPE_VOLHDR : PTYPE_RAW; strcpy (dvh_part_data->name, ""); dvh_part_data->real_file_size = part->geom.length * 512; return part; error_free_part: _ped_partition_free (part); error: return NULL; }
static void dvh_partition_destroy (PedPartition* part) { if (ped_partition_is_active (part)) { PED_ASSERT (part->disk_specific != NULL); free (part->disk_specific); } _ped_partition_free (part); }
static void bsd_partition_destroy (PedPartition* part) { PED_ASSERT (part != NULL); if (ped_partition_is_active (part)) free (part->disk_specific); _ped_partition_free (part); }