From 3b3113cff84f89ae6a64e195acb3423125f6d681 Mon Sep 17 00:00:00 2001 From: Joel Granados Moreno Date: Thu, 16 Jul 2009 18:35:30 +0200 Subject: [PATCH] Add disk as an argument to partition_duplicate. The disk is needed to provide some context when creating the duplicate partition. The disk is needed by the dasd type labels. * include/parted/disk.h (partition_duplicate): Add the disk to the function definition * libparted/disk.c (_add_duplicate_part): Pass the "new disk" to the partition_duplicate function. * libparted/labels/aix.c (aix_partition_duplicate): Comply with the new partition_duplicate function definition. * libparted/labels/bsd.c (bsd_partition_duplicate): Likewise * libparted/labels/dos.c (msdos_partition_duplicate): Likewise * libparted/labels/dvh.c (dvh_partition_duplicate): Likewise * libparted/labels/gpt.c (gpt_partition_duplicate): Likewise * libparted/labels/loop.c (loop_partition_duplicate): Likewise * libparted/labels/mac.c (mac_partition_duplicate): Likewise * libparted/labels/pc98.c (pc98_partition_duplicate): Likewise * libparted/labels/rdb.c (amiga_partition_duplicate): Likewise * libparted/labels/sun.c (sun_partition_duplicate): Likewise --- include/parted/disk.h | 4 +++- libparted/disk.c | 2 +- libparted/labels/aix.c | 2 +- libparted/labels/bsd.c | 2 +- libparted/labels/dos.c | 2 +- libparted/labels/dvh.c | 2 +- libparted/labels/gpt.c | 2 +- libparted/labels/loop.c | 2 +- libparted/labels/mac.c | 2 +- libparted/labels/pc98.c | 2 +- libparted/labels/rdb.c | 2 +- libparted/labels/sun.c | 2 +- 12 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/parted/disk.h b/include/parted/disk.h index 664c388..7548be8 100644 --- a/include/parted/disk.h +++ b/include/parted/disk.h @@ -189,7 +189,9 @@ struct _PedDiskOps { const PedFileSystemType* fs_type, PedSector start, PedSector end); - PedPartition* (*partition_duplicate) (const PedPartition* part); + /* disk is the result of duplicate (the new disk). Can be NULL */ + PedPartition* (*partition_duplicate) (const PedPartition* part, + PedDisk* disk); void (*partition_destroy) (PedPartition* part); int (*partition_set_system) (PedPartition* part, const PedFileSystemType* fs_type); diff --git a/libparted/disk.c b/libparted/disk.c index 44a2f2f..99cb563 100644 --- a/libparted/disk.c +++ b/libparted/disk.c @@ -227,7 +227,7 @@ _add_duplicate_part (PedDisk* disk, PedPartition* old_part) PedPartition* new_part; int ret; - new_part = disk->type->ops->partition_duplicate (old_part); + new_part = disk->type->ops->partition_duplicate (old_part, disk); if (!new_part) goto error; new_part->disk = disk; diff --git a/libparted/labels/aix.c b/libparted/labels/aix.c index de81270..a544cbb 100644 --- a/libparted/labels/aix.c +++ b/libparted/labels/aix.c @@ -165,7 +165,7 @@ aix_partition_new (const PedDisk* disk, PedPartitionType part_type, } static PedPartition* -aix_partition_duplicate (const PedPartition* part) +aix_partition_duplicate (const PedPartition* part, PedDisk* disk) { ped_exception_throw (PED_EXCEPTION_NO_FEATURE, PED_EXCEPTION_CANCEL, diff --git a/libparted/labels/bsd.c b/libparted/labels/bsd.c index 3d6b5ab..62634a6 100644 --- a/libparted/labels/bsd.c +++ b/libparted/labels/bsd.c @@ -417,7 +417,7 @@ error: } static PedPartition* -bsd_partition_duplicate (const PedPartition* part) +bsd_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition* new_part; BSDPartitionData* new_bsd_data; diff --git a/libparted/labels/dos.c b/libparted/labels/dos.c index e7d416d..0987c70 100644 --- a/libparted/labels/dos.c +++ b/libparted/labels/dos.c @@ -1215,7 +1215,7 @@ error: } static PedPartition* -msdos_partition_duplicate (const PedPartition* part) +msdos_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition* new_part; DosPartitionData* new_dos_data; diff --git a/libparted/labels/dvh.c b/libparted/labels/dvh.c index 93de8f9..c4de55a 100644 --- a/libparted/labels/dvh.c +++ b/libparted/labels/dvh.c @@ -534,7 +534,7 @@ error: } static PedPartition* -dvh_partition_duplicate (const PedPartition* part) +dvh_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition* result; DVHPartData* part_data = part->disk_specific; diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c index 1d7f0c5..b5c8cdb 100644 --- a/libparted/labels/gpt.c +++ b/libparted/labels/gpt.c @@ -1212,7 +1212,7 @@ error: } static PedPartition* -gpt_partition_duplicate (const PedPartition* part) +gpt_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition* result; GPTPartitionData* part_data = part->disk_specific; diff --git a/libparted/labels/loop.c b/libparted/labels/loop.c index 10ba29e..60c22eb 100644 --- a/libparted/labels/loop.c +++ b/libparted/labels/loop.c @@ -201,7 +201,7 @@ loop_partition_new (const PedDisk* disk, PedPartitionType part_type, } static PedPartition* -loop_partition_duplicate (const PedPartition* part) +loop_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition* result; diff --git a/libparted/labels/mac.c b/libparted/labels/mac.c index c1f3dc7..42abd66 100644 --- a/libparted/labels/mac.c +++ b/libparted/labels/mac.c @@ -1154,7 +1154,7 @@ error: } static PedPartition* -mac_partition_duplicate (const PedPartition* part) +mac_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition* new_part; MacPartitionData* new_mac_data; diff --git a/libparted/labels/pc98.c b/libparted/labels/pc98.c index f392bea..7fe23ab 100644 --- a/libparted/labels/pc98.c +++ b/libparted/labels/pc98.c @@ -568,7 +568,7 @@ error: } static PedPartition* -pc98_partition_duplicate (const PedPartition* part) +pc98_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition* new_part; PC98PartitionData* new_pc98_data; diff --git a/libparted/labels/rdb.c b/libparted/labels/rdb.c index c39230d..e0bb936 100644 --- a/libparted/labels/rdb.c +++ b/libparted/labels/rdb.c @@ -851,7 +851,7 @@ amiga_partition_new (const PedDisk* disk, PedPartitionType part_type, } static PedPartition* -amiga_partition_duplicate (const PedPartition* part) +amiga_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition *new_part; struct PartitionBlock *new_amiga_part; diff --git a/libparted/labels/sun.c b/libparted/labels/sun.c index 41580a4..1451252 100644 --- a/libparted/labels/sun.c +++ b/libparted/labels/sun.c @@ -500,7 +500,7 @@ error: } static PedPartition* -sun_partition_duplicate (const PedPartition* part) +sun_partition_duplicate (const PedPartition* part, PedDisk* disk) { PedPartition* new_part; SunPartitionData* new_sun_data; -- 1.6.0.6