Switch from whole_device flag to TYPE_UNPARTITIONED (#788308)

Remove whole_device flag and replace with new partition type
TYPE_UNPARTITIONED.  Minimally adapt the remaining code to compile and
run.

Bug 788308 - Remove whole_device partition flag
This commit is contained in:
Mike Fleetwood 2016-08-19 17:19:55 +01:00 committed by Curtis Gedak
parent c10d80a295
commit ea269cc929
8 changed files with 28 additions and 37 deletions

View File

@ -76,7 +76,6 @@ public:
const Glib::ustring & partition,
int partition_number,
PartitionType type,
bool whole_device,
FILESYSTEM filesystem,
Sector sector_start,
Sector sector_end,
@ -94,7 +93,6 @@ public:
virtual void resize( const Partition & new_size );
void Set_Unallocated( const Glib::ustring & device_path,
bool whole_device,
Sector sector_start,
Sector sector_end,
Byte_Value sector_size,
@ -154,7 +152,6 @@ public:
Glib::ustring device_path ;
int partition_number;
PartitionType type;// UNALLOCATED, PRIMARY, LOGICAL, etc...
bool whole_device; // Is this a virtual partition spanning a whole unpartitioned disk device?
PartitionStatus status; //STAT_REAL, STAT_NEW, etc..
PartitionAlignment alignment; //ALIGN_CYLINDER, ALIGN_STRICT, etc
FILESYSTEM filesystem ;

View File

@ -226,13 +226,12 @@ const Partition & Dialog_Partition_New::Get_New_Partition()
// Copy a final few values needed from the original unallocated partition before
// resetting the Partition object and populating it as the new partition.
Glib::ustring device_path = new_partition->device_path;
bool whole_device = new_partition->whole_device;
Sector sector_size = new_partition->sector_size;
bool inside_extended = new_partition->inside_extended;
new_partition->Reset();
new_partition->Set( device_path,
String::ucompose( _("New Partition #%1"), new_count ),
new_count, part_type, whole_device,
new_count, part_type,
FILESYSTEMS[optionmenu_filesystem.get_history()].filesystem,
new_start, new_end,
sector_size,
@ -301,7 +300,6 @@ const Partition & Dialog_Partition_New::Get_New_Partition()
{
Partition * unallocated = new Partition();
unallocated->Set_Unallocated( new_partition->device_path,
new_partition->whole_device,
new_partition->sector_start,
new_partition->sector_end,
new_partition->sector_size,

View File

@ -90,7 +90,7 @@ void Dialog_Partition_Resize_Move::Resize_Move_Normal( const PartitionVector & p
}
// See if we can allow the start of the file system to move
if ( fs.move && ! new_partition->busy && ! new_partition->whole_device )
if ( fs.move && ! new_partition->busy && new_partition->type != TYPE_UNPARTITIONED )
{
set_title( String::ucompose( _("Resize/Move %1"), new_partition->get_path() ) );
frame_resizer_base ->set_fixed_start( false ) ;

View File

@ -431,7 +431,7 @@ void Dialog_Rescue_Data::read_partitions_from_buffer()
Partition * part = new Partition();
part->Set( dev_path, part_path, part_num,
type, false, fs, sec_start, sec_end, sec_size, false, false );
type, fs, sec_start, sec_end, sec_size, false, false );
this->partitions.push_back_adopt( part );
}
}

View File

@ -1100,7 +1100,6 @@ void GParted_Core::set_device_partitions( Device & device, PedDevice* lp_device,
lp_partition->num,
( lp_partition->type == PED_PARTITION_NORMAL ) ? TYPE_PRIMARY
: TYPE_LOGICAL,
false,
filesystem,
lp_partition->geom.start,
lp_partition->geom.end,
@ -1124,7 +1123,6 @@ void GParted_Core::set_device_partitions( Device & device, PedDevice* lp_device,
partition_path,
lp_partition->num,
TYPE_EXTENDED,
false,
FS_EXTENDED,
lp_partition->geom.start,
lp_partition->geom.end,
@ -1557,7 +1555,7 @@ void GParted_Core::insert_unallocated( const Glib::ustring & device_path,
if ( partitions .empty() )
{
Partition * partition_temp = new Partition();
partition_temp->Set_Unallocated( device_path, false, start, end, sector_size, inside_extended );
partition_temp->Set_Unallocated( device_path, start, end, sector_size, inside_extended );
partitions.push_back_adopt( partition_temp );
return ;
}
@ -1567,7 +1565,7 @@ void GParted_Core::insert_unallocated( const Glib::ustring & device_path,
{
Sector temp_end = partitions.front().sector_start - 1;
Partition * partition_temp = new Partition();
partition_temp->Set_Unallocated( device_path, false, start, temp_end, sector_size, inside_extended );
partition_temp->Set_Unallocated( device_path, start, temp_end, sector_size, inside_extended );
partitions.insert_adopt( partitions.begin(), partition_temp );
}
@ -1583,7 +1581,7 @@ void GParted_Core::insert_unallocated( const Glib::ustring & device_path,
Sector temp_start = partitions[t].sector_end + 1;
Sector temp_end = partitions[t+1].sector_start - 1;
Partition * partition_temp = new Partition();
partition_temp->Set_Unallocated( device_path, false, temp_start, temp_end,
partition_temp->Set_Unallocated( device_path, temp_start, temp_end,
sector_size, inside_extended );
partitions.insert_adopt( partitions.begin() + ++t, partition_temp );
}
@ -1594,7 +1592,7 @@ void GParted_Core::insert_unallocated( const Glib::ustring & device_path,
{
Sector temp_start = partitions.back().sector_end + 1;
Partition * partition_temp = new Partition();
partition_temp->Set_Unallocated( device_path, false, temp_start, end, sector_size, inside_extended );
partition_temp->Set_Unallocated( device_path, temp_start, end, sector_size, inside_extended );
partitions.push_back_adopt( partition_temp );
}
}
@ -2669,7 +2667,7 @@ bool GParted_Core::resize_move_partition( const Partition & partition_old,
const Partition & partition_new,
OperationDetail & operationdetail )
{
if ( partition_new.whole_device )
if ( partition_new.type == TYPE_UNPARTITIONED )
// Trying to resize/move a non-partitioned whole disk device is a
// successful non-operation.
return true;
@ -3454,7 +3452,7 @@ bool GParted_Core::check_repair_maximize( const Partition & partition,
bool GParted_Core::set_partition_type( const Partition & partition, OperationDetail & operationdetail )
{
if ( partition.whole_device )
if ( partition.type == TYPE_UNPARTITIONED )
// Trying to set the type of a partition on a non-partitioned whole disk
// device is a successful non-operation.
return true;
@ -3560,7 +3558,7 @@ bool GParted_Core::calibrate_partition( Partition & partition, OperationDetail &
PedDisk* lp_disk = NULL ;
if ( get_device( partition.device_path, lp_device ) )
{
if ( partition.whole_device )
if ( partition.type == TYPE_UNPARTITIONED )
{
// Virtual partition spanning whole disk device
success = true;
@ -3622,7 +3620,8 @@ bool GParted_Core::calibrate_partition( Partition & partition, OperationDetail &
*/
String::ucompose( _("path: %1 (%2)"),
partition.get_path(),
( partition.whole_device ) ? _("device")
( partition.type == TYPE_UNPARTITIONED )
? _("device")
: _("partition") ) + "\n" +
String::ucompose( _("start: %1"), partition .sector_start ) + "\n" +
String::ucompose( _("end: %1"), partition .sector_end ) + "\n" +
@ -3799,7 +3798,7 @@ bool GParted_Core::erase_filesystem_signatures( const Partition & partition, Ope
char * buf = NULL ;
if ( get_device( partition.device_path, lp_device ) )
{
if ( partition.whole_device )
if ( partition.type == TYPE_UNPARTITIONED )
{
// Virtual partition spanning whole disk device
overall_success = true;

View File

@ -45,7 +45,7 @@ void OperationFormat::apply_to_visual( PartitionVector & partitions )
g_assert( partition_original != NULL ); // Bug: Not initialised by constructor or reset later
g_assert( partition_new != NULL ); // Bug: Not initialised by constructor or reset later
if ( partition_original->whole_device && partition_new->filesystem == FS_CLEARED )
if ( partition_original->type == TYPE_UNPARTITIONED && partition_new->filesystem == FS_CLEARED )
{
// Make format to cleared whole disk device file system preview as
// unallocated device, matching what happens when implemented.

View File

@ -40,7 +40,6 @@ void Partition::Reset()
messages .clear() ;
status = GParted::STAT_REAL ;
type = GParted::TYPE_UNALLOCATED ;
whole_device = false;
alignment = ALIGN_STRICT ;
filesystem = GParted::FS_UNALLOCATED ;
have_filesystem_label = false;
@ -62,7 +61,6 @@ void Partition::Set( const Glib::ustring & device_path,
const Glib::ustring & partition,
int partition_number,
PartitionType type,
bool whole_device,
FILESYSTEM filesystem,
Sector sector_start,
Sector sector_end,
@ -74,7 +72,6 @@ void Partition::Set( const Glib::ustring & device_path,
this->path = partition;
this ->partition_number = partition_number;
this ->type = type;
this->whole_device = whole_device;
this ->filesystem = filesystem;
this ->sector_start = sector_start;
this ->sector_end = sector_end;
@ -178,7 +175,6 @@ void Partition::resize( const Partition & new_size )
}
void Partition::Set_Unallocated( const Glib::ustring & device_path,
bool whole_device,
Sector sector_start,
Sector sector_end,
Byte_Value sector_size,
@ -190,7 +186,6 @@ void Partition::Set_Unallocated( const Glib::ustring & device_path,
Utils::get_filesystem_string( FS_UNALLOCATED ),
-1,
TYPE_UNALLOCATED,
whole_device,
FS_UNALLOCATED,
sector_start,
sector_end,
@ -223,9 +218,7 @@ void Partition::set_unpartitioned( const Glib::ustring & device_path,
( fstype == FS_UNALLOCATED ) ? Utils::get_filesystem_string( FS_UNALLOCATED )
: partition_path,
1,
// FIXME: Replace with TYPE_UNPARTITIONED when whole_device member is removed
( fstype == FS_UNALLOCATED ) ? TYPE_UNALLOCATED : TYPE_PRIMARY,
true,
TYPE_UNPARTITIONED,
fstype,
0LL,
length - 1LL,

View File

@ -1134,7 +1134,6 @@ void Win_GParted::set_valid_operations()
// Allow partition flag management
if ( selected_partition_ptr->status == STAT_REAL &&
! selected_partition_ptr->whole_device &&
( selected_partition_ptr->type == TYPE_PRIMARY ||
selected_partition_ptr->type == TYPE_LOGICAL ||
selected_partition_ptr->type == TYPE_EXTENDED ) )
@ -1243,14 +1242,18 @@ void Win_GParted::set_valid_operations()
return ;
}
// PRIMARY and LOGICAL
if ( selected_partition_ptr->type == TYPE_PRIMARY || selected_partition_ptr->type == TYPE_LOGICAL )
// PRIMARY, LOGICAL and UNPARTITIONED; partitions with supported file system.
if ( selected_partition_ptr->type == TYPE_PRIMARY ||
selected_partition_ptr->type == TYPE_LOGICAL ||
selected_partition_ptr->type == TYPE_UNPARTITIONED )
{
allow_format( true ) ;
// only allow deletion of partitions within a partition table
// Also exclude open LUKS mappings until open/close is supported
if ( ! selected_partition_ptr->whole_device & ! selected_partition_ptr->busy )
if ( ( selected_partition_ptr->type == TYPE_PRIMARY ||
selected_partition_ptr->type == TYPE_LOGICAL ) &&
! selected_partition_ptr->busy )
allow_delete( true );
// Resizing/moving always requires the ability to update the partition
@ -1922,8 +1925,9 @@ void Win_GParted::activate_paste()
g_assert( selected_partition_ptr != NULL ); // Bug: Partition callback without a selected partition
g_assert( valid_display_partition_ptr( selected_partition_ptr ) ); // Bug: Not pointing at a valid display partition object
// Unrecognised whole disk device (See GParted_Core::get_devices_threads(), "unrecognized")
if ( selected_partition_ptr->whole_device && selected_partition_ptr->type == TYPE_UNALLOCATED )
// Unrecognised whole disk device (See GParted_Core::set_device_from_disk(), "unrecognized")
if ( selected_partition_ptr->type == TYPE_UNPARTITIONED &&
selected_partition_ptr->filesystem == FS_UNALLOCATED )
{
show_disklabel_unrecognized( devices [current_device ] .get_path() ) ;
return ;
@ -2079,8 +2083,9 @@ void Win_GParted::activate_new()
g_assert( selected_partition_ptr != NULL ); // Bug: Partition callback without a selected partition
g_assert( valid_display_partition_ptr( selected_partition_ptr ) ); // Bug: Not pointing at a valid display partition object
// Unrecognised whole disk device (See GParted_Core::get_devices_threads(), "unrecognized")
if ( selected_partition_ptr->whole_device && selected_partition_ptr->type == TYPE_UNALLOCATED )
// Unrecognised whole disk device (See GParted_Core::set_device_from_disk(), "unrecognized")
if ( selected_partition_ptr->type == TYPE_UNPARTITIONED &&
selected_partition_ptr->filesystem == FS_UNALLOCATED )
{
show_disklabel_unrecognized( devices [current_device ] .get_path() ) ;
}
@ -2331,7 +2336,6 @@ void Win_GParted::activate_format( GParted::FILESYSTEM new_fs )
filesystem_ptn.get_path(),
filesystem_ptn.partition_number,
filesystem_ptn.type,
filesystem_ptn.whole_device,
new_fs,
filesystem_ptn.sector_start,
filesystem_ptn.sector_end,