changed the way devices and partitions store their devicepaths. Instead of
* changed the way devices and partitions store their devicepaths. Instead of holding a 'realpath' and a symbolic path we store paths in a list. This allows for improved detection of mountpoins, free space, etc.. Also fixed a nasty bug which showed up when you copy a partition from one device to another. (thanks to mario for the report)
This commit is contained in:
parent
7fdcec2b1d
commit
6d8b169e73
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
2006-03-14 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||||
|
|
||||||
|
* changed the way devices and partitions store their devicepaths.
|
||||||
|
Instead of holding a 'realpath' and a symbolic path we store paths
|
||||||
|
in a list. This allows for improved detection of mountpoins, free
|
||||||
|
space, etc..
|
||||||
|
|
||||||
|
Also fixed a nasty bug which showed up when you copy a partition
|
||||||
|
from one device to another. (thanks to mario for the report)
|
||||||
|
|
||||||
2006-03-09 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
2006-03-09 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||||
|
|
||||||
* include/Makefile.am,
|
* include/Makefile.am,
|
||||||
|
|
|
@ -29,9 +29,13 @@ class Device
|
||||||
public:
|
public:
|
||||||
Device() ;
|
Device() ;
|
||||||
~Device() ;
|
~Device() ;
|
||||||
|
|
||||||
|
void add_path( const Glib::ustring & path, bool clear_paths = false ) ;
|
||||||
|
void add_paths( const std::vector<Glib::ustring> & paths, bool clear_paths = false ) ;
|
||||||
|
Glib::ustring get_path() ;
|
||||||
|
std::vector<Glib::ustring> get_paths() ;
|
||||||
|
|
||||||
void Reset() ;
|
void Reset() ;
|
||||||
|
|
||||||
std::vector<Partition> partitions ;
|
std::vector<Partition> partitions ;
|
||||||
Sector length;
|
Sector length;
|
||||||
long heads ;
|
long heads ;
|
||||||
|
@ -39,16 +43,18 @@ public:
|
||||||
long cylinders ;
|
long cylinders ;
|
||||||
Sector cylsize ;
|
Sector cylsize ;
|
||||||
Glib::ustring model;
|
Glib::ustring model;
|
||||||
Glib::ustring path;
|
|
||||||
Glib::ustring realpath;
|
|
||||||
Glib::ustring disktype;
|
Glib::ustring disktype;
|
||||||
int max_prims ;
|
int max_prims ;
|
||||||
int highest_busy ;
|
int highest_busy ;
|
||||||
bool readonly ;
|
bool readonly ;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void sort_paths_and_remove_duplicates() ;
|
||||||
|
|
||||||
|
static bool compare_paths( const Glib::ustring & A, const Glib::ustring & B ) ;
|
||||||
|
|
||||||
|
std::vector<Glib::ustring> paths ;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} //GParted
|
} //GParted
|
||||||
|
|
|
@ -77,14 +77,13 @@ private:
|
||||||
std::map< Glib::ustring, std::vector<Glib::ustring> > & map ) ;
|
std::map< Glib::ustring, std::vector<Glib::ustring> > & map ) ;
|
||||||
void init_maps() ;
|
void init_maps() ;
|
||||||
void set_mountpoints( std::vector<Partition> & partitions ) ;
|
void set_mountpoints( std::vector<Partition> & partitions ) ;
|
||||||
void set_short_paths( std::vector<Partition> & partitions ) ;
|
|
||||||
void set_used_sectors( std::vector<Partition> & partitions ) ;
|
void set_used_sectors( std::vector<Partition> & partitions ) ;
|
||||||
void insert_unallocated( const Glib::ustring & device_path,
|
void insert_unallocated( const Glib::ustring & device_path,
|
||||||
std::vector<Partition> & partitions,
|
std::vector<Partition> & partitions,
|
||||||
Sector start,
|
Sector start,
|
||||||
Sector end,
|
Sector end,
|
||||||
bool inside_extended ) ;
|
bool inside_extended ) ;
|
||||||
Glib::ustring get_short_path( const Glib::ustring & real_path ) ;
|
std::vector<Glib::ustring> get_alternate_paths( const Glib::ustring & path ) ;
|
||||||
void LP_Set_Used_Sectors( Partition & partition );
|
void LP_Set_Used_Sectors( Partition & partition );
|
||||||
void set_flags( Partition & partition ) ;
|
void set_flags( Partition & partition ) ;
|
||||||
int create_empty_partition( Partition & new_partition,
|
int create_empty_partition( Partition & new_partition,
|
||||||
|
@ -122,7 +121,7 @@ private:
|
||||||
|
|
||||||
std::map< Glib::ustring, std::vector<Glib::ustring> > mount_info ;
|
std::map< Glib::ustring, std::vector<Glib::ustring> > mount_info ;
|
||||||
std::map< Glib::ustring, std::vector<Glib::ustring> > fstab_info ;
|
std::map< Glib::ustring, std::vector<Glib::ustring> > fstab_info ;
|
||||||
std::map< Glib::ustring, Glib::ustring > short_paths ;
|
std::map< Glib::ustring, Glib::ustring > alternate_paths ;
|
||||||
std::map< Glib::ustring, Glib::ustring >::iterator iter ;
|
std::map< Glib::ustring, Glib::ustring >::iterator iter ;
|
||||||
std::map< Glib::ustring, std::vector<Glib::ustring> >::iterator iter_mp ;
|
std::map< Glib::ustring, std::vector<Glib::ustring> >::iterator iter_mp ;
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ class Partition
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Partition() ;
|
Partition() ;
|
||||||
|
Partition( const Glib::ustring & path ) ;
|
||||||
~Partition() ;
|
~Partition() ;
|
||||||
|
|
||||||
void Reset() ;
|
void Reset() ;
|
||||||
|
@ -64,18 +65,23 @@ public:
|
||||||
|
|
||||||
void Set_Unused( Sector sectors_unused ) ;
|
void Set_Unused( Sector sectors_unused ) ;
|
||||||
|
|
||||||
void Set_Unallocated( const Glib::ustring & device_path, Sector sector_start, Sector sector_end, bool inside_extended );
|
void Set_Unallocated( const Glib::ustring & device_path,
|
||||||
|
Sector sector_start,
|
||||||
|
Sector sector_end,
|
||||||
|
bool inside_extended );
|
||||||
|
|
||||||
//update partition number (used when a logical partition is deleted)
|
//update partition number (used when a logical partition is deleted)
|
||||||
void Update_Number( int new_number );
|
void Update_Number( int new_number );
|
||||||
|
|
||||||
Sector get_length() const ;
|
void add_path( const Glib::ustring & path, bool clear_paths = false ) ;
|
||||||
|
void add_paths( const std::vector<Glib::ustring> & paths, bool clear_paths = false ) ;
|
||||||
|
Sector get_length() const ;
|
||||||
|
Glib::ustring get_path() const ;
|
||||||
|
std::vector<Glib::ustring> get_paths() const ;
|
||||||
|
|
||||||
bool operator==( const Partition & partition ) const ;
|
bool operator==( const Partition & partition ) const ;
|
||||||
|
|
||||||
//some public members
|
//some public members
|
||||||
Glib::ustring partition;//the symbolic path (e.g. /dev/hda1 )
|
|
||||||
Glib::ustring realpath ;
|
|
||||||
Glib::ustring device_path ;
|
Glib::ustring device_path ;
|
||||||
int partition_number;
|
int partition_number;
|
||||||
PartitionType type;// UNALLOCATED, PRIMARY, LOGICAL, etc...
|
PartitionType type;// UNALLOCATED, PRIMARY, LOGICAL, etc...
|
||||||
|
@ -90,15 +96,19 @@ public:
|
||||||
bool busy;
|
bool busy;
|
||||||
Glib::ustring error;
|
Glib::ustring error;
|
||||||
std::vector<Glib::ustring> flags ;
|
std::vector<Glib::ustring> flags ;
|
||||||
std::vector<Glib::ustring> mountpoints ;
|
std::vector<Glib::ustring> mountpoints ;//FIXME: it's better to make this one private as well to prevent segfaults
|
||||||
|
//when callong mountpoints .front() on an empty list.
|
||||||
|
|
||||||
std::vector<Partition> logicals ;
|
std::vector<Partition> logicals ;
|
||||||
|
|
||||||
bool strict ;
|
bool strict ;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void sort_paths_and_remove_duplicates() ;
|
||||||
|
|
||||||
|
static bool compare_paths( const Glib::ustring & A, const Glib::ustring & B ) ;
|
||||||
|
|
||||||
|
std::vector<Glib::ustring> paths ;
|
||||||
};
|
};
|
||||||
|
|
||||||
}//GParted
|
}//GParted
|
||||||
|
|
|
@ -27,13 +27,62 @@ Device::Device()
|
||||||
|
|
||||||
void Device::Reset()
|
void Device::Reset()
|
||||||
{
|
{
|
||||||
|
paths .clear() ;
|
||||||
partitions .clear() ;
|
partitions .clear() ;
|
||||||
length = cylsize = 0 ;
|
length = cylsize = 0 ;
|
||||||
heads = sectors = cylinders = 0 ;
|
heads = sectors = cylinders = 0 ;
|
||||||
model = path = realpath = disktype = "" ;
|
model = disktype = "" ;
|
||||||
max_prims = highest_busy = 0 ;
|
max_prims = highest_busy = 0 ;
|
||||||
readonly = false ;
|
readonly = false ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Device::add_path( const Glib::ustring & path, bool clear_paths )
|
||||||
|
{
|
||||||
|
if ( clear_paths )
|
||||||
|
paths .clear() ;
|
||||||
|
|
||||||
|
paths .push_back( path ) ;
|
||||||
|
|
||||||
|
sort_paths_and_remove_duplicates() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Device::add_paths( const std::vector<Glib::ustring> & paths, bool clear_paths )
|
||||||
|
{
|
||||||
|
if ( clear_paths )
|
||||||
|
this ->paths .clear() ;
|
||||||
|
|
||||||
|
this ->paths .insert( this ->paths .end(), paths .begin(), paths .end() ) ;
|
||||||
|
|
||||||
|
sort_paths_and_remove_duplicates() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
Glib::ustring Device::get_path()
|
||||||
|
{
|
||||||
|
if ( paths .size() > 0 )
|
||||||
|
return paths .front() ;
|
||||||
|
|
||||||
|
return "" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Glib::ustring> Device::get_paths()
|
||||||
|
{
|
||||||
|
return paths ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Device::sort_paths_and_remove_duplicates()
|
||||||
|
{
|
||||||
|
//remove duplicates
|
||||||
|
std::sort( paths .begin(), paths .end() ) ;
|
||||||
|
paths .erase( std::unique( paths .begin(), paths .end() ), paths .end() ) ;
|
||||||
|
|
||||||
|
//sort on length
|
||||||
|
std::sort( paths .begin(), paths .end(), compare_paths ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Device::compare_paths( const Glib::ustring & A, const Glib::ustring & B )
|
||||||
|
{
|
||||||
|
return A .length() < B .length() ;
|
||||||
|
}
|
||||||
|
|
||||||
Device::~Device()
|
Device::~Device()
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,7 +32,7 @@ Dialog_Partition_Copy::Dialog_Partition_Copy( const FS & fs, Sector cylinder_siz
|
||||||
|
|
||||||
void Dialog_Partition_Copy::Set_Data( const Partition & selected_partition, const Partition & copied_partition )
|
void Dialog_Partition_Copy::Set_Data( const Partition & selected_partition, const Partition & copied_partition )
|
||||||
{
|
{
|
||||||
this ->set_title( String::ucompose( _("Paste %1"), copied_partition .partition ) ) ;
|
this ->set_title( String::ucompose( _("Paste %1"), copied_partition .get_path() ) ) ;
|
||||||
|
|
||||||
//set partition color
|
//set partition color
|
||||||
frame_resizer_base ->set_rgb_partition_color( copied_partition .color ) ;
|
frame_resizer_base ->set_rgb_partition_color( copied_partition .color ) ;
|
||||||
|
@ -86,6 +86,7 @@ void Dialog_Partition_Copy::Set_Data( const Partition & selected_partition, cons
|
||||||
|
|
||||||
//set global selected_partition (see Dialog_Base_Partition::Get_New_Partition )
|
//set global selected_partition (see Dialog_Base_Partition::Get_New_Partition )
|
||||||
this ->selected_partition = copied_partition ;
|
this ->selected_partition = copied_partition ;
|
||||||
|
this ->selected_partition .device_path = selected_partition .device_path ;
|
||||||
this ->selected_partition .inside_extended = selected_partition .inside_extended ;
|
this ->selected_partition .inside_extended = selected_partition .inside_extended ;
|
||||||
this ->selected_partition .type =
|
this ->selected_partition .type =
|
||||||
selected_partition .inside_extended ? GParted::TYPE_LOGICAL : GParted::TYPE_PRIMARY ;
|
selected_partition .inside_extended ? GParted::TYPE_LOGICAL : GParted::TYPE_PRIMARY ;
|
||||||
|
|
|
@ -28,7 +28,7 @@ Dialog_Partition_Info::Dialog_Partition_Info( const Partition & partition )
|
||||||
this ->set_has_separator( false ) ;
|
this ->set_has_separator( false ) ;
|
||||||
|
|
||||||
/*TO TRANSLATORS: dialogtitle, looks like Information about /dev/hda3 */
|
/*TO TRANSLATORS: dialogtitle, looks like Information about /dev/hda3 */
|
||||||
this ->set_title( String::ucompose( _( "Information about %1"), partition .partition ) );
|
this ->set_title( String::ucompose( _( "Information about %1"), partition .get_path() ) );
|
||||||
|
|
||||||
init_drawingarea( ) ;
|
init_drawingarea( ) ;
|
||||||
|
|
||||||
|
@ -102,6 +102,7 @@ void Dialog_Partition_Info::init_drawingarea( )
|
||||||
|
|
||||||
//calculate proportional width of used and unused
|
//calculate proportional width of used and unused
|
||||||
used = unused = 0 ;
|
used = unused = 0 ;
|
||||||
|
//FIXME: use Partition::get_length()..
|
||||||
used = Utils::Round( (400 - BORDER *2) / ( static_cast<double>(partition .sector_end - partition .sector_start) / partition .sectors_used ) ) ;
|
used = Utils::Round( (400 - BORDER *2) / ( static_cast<double>(partition .sector_end - partition .sector_start) / partition .sectors_used ) ) ;
|
||||||
unused = 400 - used - BORDER *2 ;
|
unused = 400 - used - BORDER *2 ;
|
||||||
|
|
||||||
|
@ -120,7 +121,7 @@ void Dialog_Partition_Info::init_drawingarea( )
|
||||||
|
|
||||||
//set text of pangolayout
|
//set text of pangolayout
|
||||||
pango_layout = drawingarea .create_pango_layout(
|
pango_layout = drawingarea .create_pango_layout(
|
||||||
partition .partition + "\n" + Utils::format_size( partition .get_length() ) ) ;
|
partition .get_path() + "\n" + Utils::format_size( partition .get_length() ) ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Dialog_Partition_Info::Display_Info( )
|
void Dialog_Partition_Info::Display_Info( )
|
||||||
|
@ -173,19 +174,21 @@ void Dialog_Partition_Info::Display_Info( )
|
||||||
if ( partition .type != GParted::TYPE_UNALLOCATED && partition .status != GParted::STAT_NEW )
|
if ( partition .type != GParted::TYPE_UNALLOCATED && partition .status != GParted::STAT_NEW )
|
||||||
{
|
{
|
||||||
//path
|
//path
|
||||||
table ->attach( * Utils::mk_label( "<b>" + (Glib::ustring) _( "Path:" ) + "</b>" ), 0, 1, top, bottom, Gtk::FILL ) ;
|
table ->attach( * Utils::mk_label( "<b>" + (Glib::ustring) _( "Path:" ) + "</b>" ),
|
||||||
table ->attach( * Utils::mk_label( partition .partition ), 1, 2, top++, bottom++, Gtk::FILL ) ;
|
0, 1,
|
||||||
|
top, bottom,
|
||||||
//only show realpath if it's diffent from the short path...
|
Gtk::FILL ) ;
|
||||||
if ( partition .partition != partition .realpath )
|
table ->attach( * Utils::mk_label( Glib::build_path( "\n", partition .get_paths() ) ),
|
||||||
{
|
1, 2,
|
||||||
table ->attach( * Utils::mk_label( "<b>" + (Glib::ustring) _( "Real Path:" ) + "</b>" ), 0, 1, top, bottom, Gtk::FILL ) ;
|
top++, bottom++,
|
||||||
table ->attach( * Utils::mk_label( partition .realpath ), 1, 2, top++, bottom++, Gtk::FILL ) ;
|
Gtk::FILL ) ;
|
||||||
}
|
|
||||||
|
|
||||||
//status
|
//status
|
||||||
Glib::ustring str_temp ;
|
Glib::ustring str_temp ;
|
||||||
table ->attach( * Utils::mk_label( "<b>" + (Glib::ustring) _( "Status:" ) + "</b>" ), 0,1, top, bottom, Gtk::FILL) ;
|
table ->attach( * Utils::mk_label( "<b>" + (Glib::ustring) _( "Status:" ) + "</b>" ),
|
||||||
|
0, 1,
|
||||||
|
top, bottom,
|
||||||
|
Gtk::FILL) ;
|
||||||
if ( partition .busy )
|
if ( partition .busy )
|
||||||
{
|
{
|
||||||
if ( partition .type == GParted::TYPE_EXTENDED )
|
if ( partition .type == GParted::TYPE_EXTENDED )
|
||||||
|
@ -219,15 +222,16 @@ void Dialog_Partition_Info::Display_Info( )
|
||||||
|
|
||||||
//total sectors
|
//total sectors
|
||||||
table ->attach( * Utils::mk_label( "<b>" + (Glib::ustring) _( "Total Sectors:" ) + "</b>" ), 0, 1, top, bottom, Gtk::FILL ) ;
|
table ->attach( * Utils::mk_label( "<b>" + (Glib::ustring) _( "Total Sectors:" ) + "</b>" ), 0, 1, top, bottom, Gtk::FILL ) ;
|
||||||
|
//FIXME: use Partition::get_length() here..
|
||||||
table ->attach( * Utils::mk_label( Utils::num_to_str( partition .sector_end - partition .sector_start ) ), 1, 2, top++, bottom++, Gtk::FILL ) ;
|
table ->attach( * Utils::mk_label( Utils::num_to_str( partition .sector_end - partition .sector_start ) ), 1, 2, top++, bottom++, Gtk::FILL ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Dialog_Partition_Info::~Dialog_Partition_Info( )
|
Dialog_Partition_Info::~Dialog_Partition_Info()
|
||||||
{
|
{
|
||||||
this ->get_colormap( ) ->free_colors( color_used, 1 ) ;
|
this ->get_colormap() ->free_colors( color_used, 1 ) ;
|
||||||
this ->get_colormap( ) ->free_colors( color_unused, 1 ) ;
|
this ->get_colormap() ->free_colors( color_unused, 1 ) ;
|
||||||
this ->get_colormap( ) ->free_colors( color_text, 1 ) ;
|
this ->get_colormap() ->free_colors( color_text, 1 ) ;
|
||||||
this ->get_colormap( ) ->free_colors( color_partition, 1 ) ;
|
this ->get_colormap() ->free_colors( color_partition, 1 ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
} //GParted
|
} //GParted
|
||||||
|
|
|
@ -66,12 +66,12 @@ void Dialog_Partition_Resize_Move::Resize_Move_Normal( const std::vector<Partiti
|
||||||
//see if we need a fixed_start
|
//see if we need a fixed_start
|
||||||
if ( fs .move )
|
if ( fs .move )
|
||||||
{
|
{
|
||||||
this ->set_title( String::ucompose( _("Resize/Move %1"), selected_partition .partition ) ) ;
|
set_title( String::ucompose( _("Resize/Move %1"), selected_partition .get_path() ) ) ;
|
||||||
frame_resizer_base ->set_fixed_start( false ) ;
|
frame_resizer_base ->set_fixed_start( false ) ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this ->set_title( String::ucompose( _("Resize %1"), selected_partition .partition) ) ;
|
set_title( String::ucompose( _("Resize %1"), selected_partition .get_path() ) ) ;
|
||||||
this ->fixed_start = true;
|
this ->fixed_start = true;
|
||||||
frame_resizer_base ->set_fixed_start( true ) ;
|
frame_resizer_base ->set_fixed_start( true ) ;
|
||||||
spinbutton_before .set_sensitive( false ) ;
|
spinbutton_before .set_sensitive( false ) ;
|
||||||
|
|
|
@ -84,6 +84,8 @@ void DrawingAreaVisualDisk::set_static_data( const std::vector<Partition> & part
|
||||||
{
|
{
|
||||||
Sector p_length ;
|
Sector p_length ;
|
||||||
visual_partition vp ;
|
visual_partition vp ;
|
||||||
|
//FIXME: any particular reason why Partition::get_length() isn't used in this function?
|
||||||
|
//i'm also not sure why we use 'vp' this way.. Lets either use it or drop it :)
|
||||||
|
|
||||||
for ( unsigned int t = 0 ; t < partitions .size() ; t++ )
|
for ( unsigned int t = 0 ; t < partitions .size() ; t++ )
|
||||||
{
|
{
|
||||||
|
@ -109,7 +111,7 @@ void DrawingAreaVisualDisk::set_static_data( const std::vector<Partition> & part
|
||||||
partitions[ t ] .sector_end - partitions[ t ] .sector_start ) ;
|
partitions[ t ] .sector_end - partitions[ t ] .sector_start ) ;
|
||||||
else
|
else
|
||||||
visual_partitions .back() .pango_layout = create_pango_layout(
|
visual_partitions .back() .pango_layout = create_pango_layout(
|
||||||
partitions[ t ] .partition + "\n" + Utils::format_size( partitions[ t ] .get_length() ) ) ;
|
partitions[ t ] .get_path() + "\n" + Utils::format_size( partitions[ t ] .get_length() ) ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Glib::ustring ped_error ; //see e.g. ped_exception_handler()
|
||||||
|
|
||||||
namespace GParted
|
namespace GParted
|
||||||
{
|
{
|
||||||
|
|
||||||
GParted_Core::GParted_Core()
|
GParted_Core::GParted_Core()
|
||||||
{
|
{
|
||||||
lp_device = NULL ;
|
lp_device = NULL ;
|
||||||
|
@ -17,7 +17,6 @@ GParted_Core::GParted_Core()
|
||||||
|
|
||||||
ped_exception_set_handler( ped_exception_handler ) ;
|
ped_exception_set_handler( ped_exception_handler ) ;
|
||||||
|
|
||||||
|
|
||||||
//get valid flags ...
|
//get valid flags ...
|
||||||
for ( PedPartitionFlag flag = ped_partition_flag_next( static_cast<PedPartitionFlag>( NULL ) ) ;
|
for ( PedPartitionFlag flag = ped_partition_flag_next( static_cast<PedPartitionFlag>( NULL ) ) ;
|
||||||
flag ;
|
flag ;
|
||||||
|
@ -128,8 +127,9 @@ void GParted_Core::get_devices( std::vector<Device> & devices )
|
||||||
temp_device .Reset() ;
|
temp_device .Reset() ;
|
||||||
|
|
||||||
//device info..
|
//device info..
|
||||||
temp_device .path = get_short_path( device_paths[ t ] ) ;
|
temp_device .add_path( device_paths[ t ] ) ;
|
||||||
temp_device .realpath = lp_device ->path ;
|
temp_device .add_paths( get_alternate_paths( temp_device .get_path() ) ) ;
|
||||||
|
|
||||||
temp_device .model = lp_device ->model ;
|
temp_device .model = lp_device ->model ;
|
||||||
temp_device .heads = lp_device ->bios_geom .heads ;
|
temp_device .heads = lp_device ->bios_geom .heads ;
|
||||||
temp_device .sectors = lp_device ->bios_geom .sectors ;
|
temp_device .sectors = lp_device ->bios_geom .sectors ;
|
||||||
|
@ -148,7 +148,6 @@ void GParted_Core::get_devices( std::vector<Device> & devices )
|
||||||
temp_device .max_prims = ped_disk_get_max_primary_partition_count( lp_disk ) ;
|
temp_device .max_prims = ped_disk_get_max_primary_partition_count( lp_disk ) ;
|
||||||
|
|
||||||
set_device_partitions( temp_device ) ;
|
set_device_partitions( temp_device ) ;
|
||||||
set_short_paths( temp_device .partitions ) ;
|
|
||||||
set_mountpoints( temp_device .partitions ) ;
|
set_mountpoints( temp_device .partitions ) ;
|
||||||
set_used_sectors( temp_device .partitions ) ;
|
set_used_sectors( temp_device .partitions ) ;
|
||||||
|
|
||||||
|
@ -162,7 +161,10 @@ void GParted_Core::get_devices( std::vector<Device> & devices )
|
||||||
temp_device .max_prims = -1 ;
|
temp_device .max_prims = -1 ;
|
||||||
|
|
||||||
Partition partition_temp ;
|
Partition partition_temp ;
|
||||||
partition_temp .Set_Unallocated( temp_device .path, 0, temp_device .length, false );
|
partition_temp .Set_Unallocated( temp_device .get_path(),
|
||||||
|
0,
|
||||||
|
temp_device .length,
|
||||||
|
false );
|
||||||
temp_device .partitions .push_back( partition_temp );
|
temp_device .partitions .push_back( partition_temp );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,7 +176,7 @@ void GParted_Core::get_devices( std::vector<Device> & devices )
|
||||||
|
|
||||||
//clear leftover information...
|
//clear leftover information...
|
||||||
//NOTE that we cannot clear mountinfo since it might be needed in get_all_mountpoints()
|
//NOTE that we cannot clear mountinfo since it might be needed in get_all_mountpoints()
|
||||||
short_paths .clear() ;
|
alternate_paths .clear() ;
|
||||||
fstab_info .clear() ;
|
fstab_info .clear() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +210,7 @@ void GParted_Core::read_mountpoints_from_file( const Glib::ustring & filename,
|
||||||
|
|
||||||
void GParted_Core::init_maps()
|
void GParted_Core::init_maps()
|
||||||
{
|
{
|
||||||
short_paths .clear() ;
|
alternate_paths .clear() ;
|
||||||
mount_info .clear() ;
|
mount_info .clear() ;
|
||||||
fstab_info .clear() ;
|
fstab_info .clear() ;
|
||||||
|
|
||||||
|
@ -226,7 +228,7 @@ void GParted_Core::init_maps()
|
||||||
iter_mp ->second .end() ) ;
|
iter_mp ->second .end() ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//initialize shortpaths...
|
//initialize alternate_paths...
|
||||||
std::string line ;
|
std::string line ;
|
||||||
std::ifstream proc_partitions( "/proc/partitions" ) ;
|
std::ifstream proc_partitions( "/proc/partitions" ) ;
|
||||||
if ( proc_partitions )
|
if ( proc_partitions )
|
||||||
|
@ -238,9 +240,14 @@ void GParted_Core::init_maps()
|
||||||
{
|
{
|
||||||
line = "/dev/" ;
|
line = "/dev/" ;
|
||||||
line += c_str ;
|
line += c_str ;
|
||||||
|
|
||||||
if ( realpath( line .c_str(), c_str ) )
|
if ( realpath( line .c_str(), c_str ) && line != c_str )
|
||||||
short_paths[ c_str ] = line ;
|
{
|
||||||
|
//because we can make no assumption about which path libparted will detect
|
||||||
|
//we add all combinations.
|
||||||
|
alternate_paths[ c_str ] = line ;
|
||||||
|
alternate_paths[ line ] = c_str ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc_partitions .close() ;
|
proc_partitions .close() ;
|
||||||
|
@ -320,35 +327,39 @@ void GParted_Core::set_device_partitions( Device & device )
|
||||||
{
|
{
|
||||||
case PED_PARTITION_NORMAL:
|
case PED_PARTITION_NORMAL:
|
||||||
case PED_PARTITION_LOGICAL:
|
case PED_PARTITION_LOGICAL:
|
||||||
partition_temp .Set( device .path,
|
partition_temp .Set( device .get_path(),
|
||||||
ped_partition_get_path( lp_partition ),
|
ped_partition_get_path( lp_partition ),
|
||||||
lp_partition ->num,
|
lp_partition ->num,
|
||||||
lp_partition ->type == 0 ? GParted::TYPE_PRIMARY : GParted::TYPE_LOGICAL,
|
lp_partition ->type == 0 ?
|
||||||
|
GParted::TYPE_PRIMARY : GParted::TYPE_LOGICAL,
|
||||||
get_filesystem(),
|
get_filesystem(),
|
||||||
lp_partition ->geom .start,
|
lp_partition ->geom .start,
|
||||||
lp_partition ->geom .end,
|
lp_partition ->geom .end,
|
||||||
lp_partition ->type,
|
lp_partition ->type,
|
||||||
ped_partition_is_busy( lp_partition ) );
|
ped_partition_is_busy( lp_partition ) );
|
||||||
|
|
||||||
|
partition_temp .add_paths( get_alternate_paths( partition_temp .get_path() ) ) ;
|
||||||
set_flags( partition_temp ) ;
|
set_flags( partition_temp ) ;
|
||||||
|
|
||||||
if ( partition_temp .busy && partition_temp .partition_number > device .highest_busy )
|
if ( partition_temp .busy && partition_temp .partition_number > device .highest_busy )
|
||||||
device .highest_busy = partition_temp .partition_number ;
|
device .highest_busy = partition_temp .partition_number ;
|
||||||
|
|
||||||
break ;
|
break ;
|
||||||
|
|
||||||
case PED_PARTITION_EXTENDED:
|
case PED_PARTITION_EXTENDED:
|
||||||
partition_temp.Set( device .path,
|
partition_temp .Set( device .get_path(),
|
||||||
ped_partition_get_path( lp_partition ),
|
ped_partition_get_path( lp_partition ),
|
||||||
lp_partition ->num,
|
lp_partition ->num,
|
||||||
GParted::TYPE_EXTENDED,
|
GParted::TYPE_EXTENDED,
|
||||||
GParted::FS_EXTENDED,
|
GParted::FS_EXTENDED,
|
||||||
lp_partition ->geom .start,
|
lp_partition ->geom .start,
|
||||||
lp_partition ->geom .end,
|
lp_partition ->geom .end,
|
||||||
false,
|
false,
|
||||||
ped_partition_is_busy( lp_partition ) );
|
ped_partition_is_busy( lp_partition ) );
|
||||||
|
|
||||||
|
partition_temp .add_paths( get_alternate_paths( partition_temp .get_path() ) ) ;
|
||||||
set_flags( partition_temp ) ;
|
set_flags( partition_temp ) ;
|
||||||
|
|
||||||
EXT_INDEX = device .partitions .size() ;
|
EXT_INDEX = device .partitions .size() ;
|
||||||
break ;
|
break ;
|
||||||
|
|
||||||
|
@ -370,13 +381,13 @@ void GParted_Core::set_device_partitions( Device & device )
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( EXT_INDEX > -1 )
|
if ( EXT_INDEX > -1 )
|
||||||
insert_unallocated( device .path,
|
insert_unallocated( device .get_path(),
|
||||||
device .partitions[ EXT_INDEX ] .logicals,
|
device .partitions[ EXT_INDEX ] .logicals,
|
||||||
device .partitions[ EXT_INDEX ] .sector_start,
|
device .partitions[ EXT_INDEX ] .sector_start,
|
||||||
device .partitions[ EXT_INDEX ] .sector_end,
|
device .partitions[ EXT_INDEX ] .sector_end,
|
||||||
true ) ;
|
true ) ;
|
||||||
|
|
||||||
insert_unallocated( device .path, device .partitions, 0, device .length -1, false ) ;
|
insert_unallocated( device .get_path(), device .partitions, 0, device .length -1, false ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GParted_Core::set_mountpoints( std::vector<Partition> & partitions )
|
void GParted_Core::set_mountpoints( std::vector<Partition> & partitions )
|
||||||
|
@ -389,15 +400,22 @@ void GParted_Core::set_mountpoints( std::vector<Partition> & partitions )
|
||||||
{
|
{
|
||||||
if ( partitions[ t ] .busy )
|
if ( partitions[ t ] .busy )
|
||||||
{
|
{
|
||||||
iter_mp = mount_info .find( partitions[ t ] .partition );
|
for ( unsigned int i = 0 ; i < partitions[ t ] .get_paths() .size() ; i++ )
|
||||||
if ( iter_mp != mount_info .end() )
|
{
|
||||||
partitions[ t ] .mountpoints = iter_mp ->second ;
|
iter_mp = mount_info .find( partitions[ t ] .get_paths()[ i ] ) ;
|
||||||
else
|
if ( iter_mp != mount_info .end() )
|
||||||
|
{
|
||||||
|
partitions[ t ] .mountpoints = iter_mp ->second ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( partitions[ t ] .mountpoints .empty() )
|
||||||
partitions[ t ] .error = _("Unable to find mountpoint") ;
|
partitions[ t ] .error = _("Unable to find mountpoint") ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iter_mp = fstab_info .find( partitions[ t ] .partition );
|
iter_mp = fstab_info .find( partitions[ t ] .get_path() );
|
||||||
if ( iter_mp != fstab_info .end() )
|
if ( iter_mp != fstab_info .end() )
|
||||||
partitions[ t ] .mountpoints = iter_mp ->second ;
|
partitions[ t ] .mountpoints = iter_mp ->second ;
|
||||||
}
|
}
|
||||||
|
@ -406,27 +424,18 @@ void GParted_Core::set_mountpoints( std::vector<Partition> & partitions )
|
||||||
set_mountpoints( partitions[ t ] .logicals ) ;
|
set_mountpoints( partitions[ t ] .logicals ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GParted_Core::set_short_paths( std::vector<Partition> & partitions )
|
std::vector<Glib::ustring> GParted_Core::get_alternate_paths( const Glib::ustring & path )
|
||||||
{
|
{
|
||||||
for ( unsigned int t =0 ; t < partitions .size() ; t++ )
|
std::vector<Glib::ustring> paths ;
|
||||||
{
|
|
||||||
partitions[ t ] .partition = get_short_path( partitions[ t ] .partition ) ;
|
iter = alternate_paths .find( path ) ;
|
||||||
|
if ( iter != alternate_paths .end() )
|
||||||
|
paths .push_back( iter ->second ) ;
|
||||||
|
|
||||||
if ( partitions[ t ] .type == GParted::TYPE_EXTENDED )
|
return paths ;
|
||||||
set_short_paths( partitions[ t ] .logicals ) ;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Glib::ustring GParted_Core::get_short_path( const Glib::ustring & real_path )
|
|
||||||
{
|
|
||||||
iter = short_paths .find( real_path );
|
|
||||||
if ( iter != short_paths .end() )
|
|
||||||
return iter ->second ;
|
|
||||||
|
|
||||||
return real_path ;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GParted_Core::set_used_sectors( std::vector<Partition> & partitions )
|
void GParted_Core::set_used_sectors( std::vector<Partition> & partitions )
|
||||||
{
|
{
|
||||||
struct statvfs sfs ;
|
struct statvfs sfs ;
|
||||||
|
@ -686,15 +695,13 @@ bool GParted_Core::copy( const Glib::ustring & src_part_path,
|
||||||
std::vector<OperationDetails> & operation_details )
|
std::vector<OperationDetails> & operation_details )
|
||||||
{
|
{
|
||||||
set_proper_filesystem( partition_dest .filesystem ) ;
|
set_proper_filesystem( partition_dest .filesystem ) ;
|
||||||
|
Partition src_partition( src_part_path ) ;
|
||||||
Partition src_partition ;
|
|
||||||
src_partition .partition = src_part_path ;
|
|
||||||
|
|
||||||
return ( p_filesystem &&
|
return ( p_filesystem &&
|
||||||
p_filesystem ->Check_Repair( src_partition, operation_details ) &&
|
p_filesystem ->Check_Repair( src_partition, operation_details ) &&
|
||||||
create_empty_partition( partition_dest, operation_details, true ) > 0 &&
|
create_empty_partition( partition_dest, operation_details, true ) > 0 &&
|
||||||
set_partition_type( partition_dest, operation_details ) &&
|
set_partition_type( partition_dest, operation_details ) &&
|
||||||
p_filesystem ->Copy( src_part_path, partition_dest .partition, operation_details ) &&
|
p_filesystem ->Copy( src_part_path, partition_dest .get_path(), operation_details ) &&
|
||||||
p_filesystem ->Check_Repair( partition_dest, operation_details ) ) ;
|
p_filesystem ->Check_Repair( partition_dest, operation_details ) ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -827,6 +834,7 @@ int GParted_Core::create_empty_partition( Partition & new_partition,
|
||||||
NULL,
|
NULL,
|
||||||
new_partition .sector_start,
|
new_partition .sector_start,
|
||||||
new_partition .sector_end ) ;
|
new_partition .sector_end ) ;
|
||||||
|
|
||||||
if ( lp_partition )
|
if ( lp_partition )
|
||||||
{
|
{
|
||||||
if ( new_partition .strict )
|
if ( new_partition .strict )
|
||||||
|
@ -843,12 +851,14 @@ int GParted_Core::create_empty_partition( Partition & new_partition,
|
||||||
|
|
||||||
if ( constraint )
|
if ( constraint )
|
||||||
{
|
{
|
||||||
|
//FIXME: i should use the length of the copied partition as min_size
|
||||||
|
//maybe we can set the used from new_partition to this size?
|
||||||
if ( copy )
|
if ( copy )
|
||||||
constraint ->min_size = new_partition .get_length() ;
|
constraint ->min_size = new_partition .get_length() ;
|
||||||
|
|
||||||
if ( ped_disk_add_partition( lp_disk, lp_partition, constraint ) && commit() )
|
if ( ped_disk_add_partition( lp_disk, lp_partition, constraint ) && commit() )
|
||||||
{
|
{
|
||||||
new_partition .partition = ped_partition_get_path( lp_partition ) ;
|
new_partition .add_path( ped_partition_get_path( lp_partition ), true ) ;
|
||||||
new_partition .partition_number = lp_partition ->num ;
|
new_partition .partition_number = lp_partition ->num ;
|
||||||
|
|
||||||
Sector start = lp_partition ->geom .start ;
|
Sector start = lp_partition ->geom .start ;
|
||||||
|
@ -857,7 +867,7 @@ int GParted_Core::create_empty_partition( Partition & new_partition,
|
||||||
operation_details .back() .sub_details .push_back(
|
operation_details .back() .sub_details .push_back(
|
||||||
OperationDetails(
|
OperationDetails(
|
||||||
"<i>" +
|
"<i>" +
|
||||||
String::ucompose( _("path: %1"), new_partition .partition ) + "\n" +
|
String::ucompose( _("path: %1"), new_partition .get_path() ) + "\n" +
|
||||||
String::ucompose( _("start: %1"), start ) + "\n" +
|
String::ucompose( _("start: %1"), start ) + "\n" +
|
||||||
String::ucompose( _("end: %1"), end ) + "\n" +
|
String::ucompose( _("end: %1"), end ) + "\n" +
|
||||||
String::ucompose( _("size: %1"), Utils::format_size( end - start + 1 ) ) +
|
String::ucompose( _("size: %1"), Utils::format_size( end - start + 1 ) ) +
|
||||||
|
@ -877,7 +887,7 @@ int GParted_Core::create_empty_partition( Partition & new_partition,
|
||||||
(
|
(
|
||||||
new_partition .type == GParted::TYPE_EXTENDED ||
|
new_partition .type == GParted::TYPE_EXTENDED ||
|
||||||
(
|
(
|
||||||
wait_for_node( new_partition .partition ) &&
|
wait_for_node( new_partition .get_path() ) &&
|
||||||
erase_filesystem_signatures( new_partition )
|
erase_filesystem_signatures( new_partition )
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -992,7 +1002,7 @@ bool GParted_Core::resize_container_partition( const Partition & partition_old,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return_value &= wait_for_node( partition_new .partition ) ;
|
return_value &= wait_for_node( partition_new .get_path() ) ;
|
||||||
operation_details .back() .status = return_value ? OperationDetails::SUCCES : OperationDetails::ERROR ;
|
operation_details .back() .status = return_value ? OperationDetails::SUCCES : OperationDetails::ERROR ;
|
||||||
|
|
||||||
return return_value ;
|
return return_value ;
|
||||||
|
@ -1108,7 +1118,7 @@ bool GParted_Core::set_partition_type( const Partition & partition,
|
||||||
(partition .sector_end + partition .sector_start) / 2 ) ;
|
(partition .sector_end + partition .sector_start) / 2 ) ;
|
||||||
|
|
||||||
if ( lp_partition && ped_partition_set_system( lp_partition, fs_type ) && commit() )
|
if ( lp_partition && ped_partition_set_system( lp_partition, fs_type ) && commit() )
|
||||||
return_value = wait_for_node( partition .partition ) ;
|
return_value = wait_for_node( partition .get_path() ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
close_device_and_disk() ;
|
close_device_and_disk() ;
|
||||||
|
@ -1216,6 +1226,5 @@ PedExceptionOption GParted_Core::ped_exception_handler( PedException * e )
|
||||||
|
|
||||||
return PED_EXCEPTION_UNHANDLED ;
|
return PED_EXCEPTION_UNHANDLED ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} //GParted
|
} //GParted
|
||||||
|
|
|
@ -23,7 +23,10 @@ Operation::Operation()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Operation::Operation( const Device & device, const Partition & partition_original, const Partition & partition_new, OperationType operationtype )
|
Operation::Operation( const Device & device,
|
||||||
|
const Partition & partition_original,
|
||||||
|
const Partition & partition_new,
|
||||||
|
OperationType operationtype )
|
||||||
{
|
{
|
||||||
this ->device = device ;
|
this ->device = device ;
|
||||||
this ->partition_original = partition_original;
|
this ->partition_original = partition_original;
|
||||||
|
@ -34,8 +37,10 @@ Operation::Operation( const Device & device, const Partition & partition_origina
|
||||||
|
|
||||||
if ( operationtype == COPY )
|
if ( operationtype == COPY )
|
||||||
{
|
{
|
||||||
copied_partition_path = partition_new .partition ;
|
copied_partition_path = partition_new .get_path() ;
|
||||||
this ->partition_new .partition = String::ucompose( _("copy of %1"), this ->partition_new .partition );
|
this ->partition_new .add_path(
|
||||||
|
String::ucompose( _("copy of %1"), this ->partition_new .get_path() ),
|
||||||
|
true ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,14 +55,14 @@ Glib::ustring Operation::Get_String( )
|
||||||
if (partition_original.type == GParted::TYPE_LOGICAL)
|
if (partition_original.type == GParted::TYPE_LOGICAL)
|
||||||
temp = _("Logical Partition") ;
|
temp = _("Logical Partition") ;
|
||||||
else
|
else
|
||||||
temp = partition_original .partition ;
|
temp = partition_original .get_path() ;
|
||||||
|
|
||||||
/*TO TRANSLATORS: looks like Delete /dev/hda2 (ntfs, 345 MiB) from /dev/hda */
|
/*TO TRANSLATORS: looks like Delete /dev/hda2 (ntfs, 345 MiB) from /dev/hda */
|
||||||
return String::ucompose( _("Delete %1 (%2, %3) from %4"),
|
return String::ucompose( _("Delete %1 (%2, %3) from %4"),
|
||||||
temp,
|
temp,
|
||||||
Utils::Get_Filesystem_String( partition_original .filesystem ),
|
Utils::Get_Filesystem_String( partition_original .filesystem ),
|
||||||
Utils::format_size( partition_original .get_length() ),
|
Utils::format_size( partition_original .get_length() ),
|
||||||
device .path ) ;
|
device .get_path() ) ;
|
||||||
|
|
||||||
case CREATE :
|
case CREATE :
|
||||||
switch( partition_new.type )
|
switch( partition_new.type )
|
||||||
|
@ -78,10 +83,10 @@ Glib::ustring Operation::Get_String( )
|
||||||
/*TO TRANSLATORS: looks like Create Logical Partition #1 (ntfs, 345 MiB) on /dev/hda */
|
/*TO TRANSLATORS: looks like Create Logical Partition #1 (ntfs, 345 MiB) on /dev/hda */
|
||||||
return String::ucompose( _("Create %1 #%2 (%3, %4) on %5"),
|
return String::ucompose( _("Create %1 #%2 (%3, %4) on %5"),
|
||||||
temp,
|
temp,
|
||||||
partition_new.partition_number,
|
partition_new .partition_number,
|
||||||
Utils::Get_Filesystem_String( partition_new.filesystem ),
|
Utils::Get_Filesystem_String( partition_new .filesystem ),
|
||||||
Utils::format_size( partition_new .get_length() ),
|
Utils::format_size( partition_new .get_length() ),
|
||||||
device .path ) ;
|
device .get_path() ) ;
|
||||||
|
|
||||||
case RESIZE_MOVE:
|
case RESIZE_MOVE:
|
||||||
//if startsector has changed we consider it a move
|
//if startsector has changed we consider it a move
|
||||||
|
@ -90,11 +95,11 @@ Glib::ustring Operation::Get_String( )
|
||||||
{
|
{
|
||||||
if ( partition_new .sector_start > partition_original .sector_start )
|
if ( partition_new .sector_start > partition_original .sector_start )
|
||||||
temp = String::ucompose( _("Move %1 forward by %2"),
|
temp = String::ucompose( _("Move %1 forward by %2"),
|
||||||
partition_new .partition,
|
partition_new .get_path(),
|
||||||
Utils::format_size( diff ) ) ;
|
Utils::format_size( diff ) ) ;
|
||||||
else
|
else
|
||||||
temp = String::ucompose( _("Move %1 backward by %2"),
|
temp = String::ucompose( _("Move %1 backward by %2"),
|
||||||
partition_new .partition,
|
partition_new .get_path(),
|
||||||
Utils::format_size( diff ) ) ;
|
Utils::format_size( diff ) ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,12 +109,12 @@ Glib::ustring Operation::Get_String( )
|
||||||
{
|
{
|
||||||
if ( temp .empty() )
|
if ( temp .empty() )
|
||||||
temp = String::ucompose( _("Resize %1 from %2 to %3"),
|
temp = String::ucompose( _("Resize %1 from %2 to %3"),
|
||||||
partition_new.partition,
|
partition_new .get_path(),
|
||||||
Utils::format_size( partition_original .get_length() ),
|
Utils::format_size( partition_original .get_length() ),
|
||||||
Utils::format_size( partition_new .get_length() ) ) ;
|
Utils::format_size( partition_new .get_length() ) ) ;
|
||||||
else
|
else
|
||||||
temp += " " + String::ucompose( _("and Resize %1 from %2 to %3"),
|
temp += " " + String::ucompose( _("and Resize %1 from %2 to %3"),
|
||||||
partition_new.partition,
|
partition_new .get_path(),
|
||||||
Utils::format_size( partition_original .get_length() ),
|
Utils::format_size( partition_original .get_length() ),
|
||||||
Utils::format_size( partition_new .get_length() ) ) ;
|
Utils::format_size( partition_new .get_length() ) ) ;
|
||||||
}
|
}
|
||||||
|
@ -119,14 +124,14 @@ Glib::ustring Operation::Get_String( )
|
||||||
case FORMAT :
|
case FORMAT :
|
||||||
/*TO TRANSLATORS: looks like Format /dev/hda4 as linux-swap */
|
/*TO TRANSLATORS: looks like Format /dev/hda4 as linux-swap */
|
||||||
return String::ucompose( _("Format %1 as %2"),
|
return String::ucompose( _("Format %1 as %2"),
|
||||||
partition_original .partition,
|
partition_original .get_path(),
|
||||||
Utils::Get_Filesystem_String( partition_new .filesystem ) ) ;
|
Utils::Get_Filesystem_String( partition_new .filesystem ) ) ;
|
||||||
|
|
||||||
case COPY :
|
case COPY :
|
||||||
/*TO TRANSLATORS: looks like Copy /dev/hda4 to /dev/hdd (start at 250 MiB) */
|
/*TO TRANSLATORS: looks like Copy /dev/hda4 to /dev/hdd (start at 250 MiB) */
|
||||||
return String::ucompose( _("Copy %1 to %2 (start at %3)"),
|
return String::ucompose( _("Copy %1 to %2 (start at %3)"),
|
||||||
partition_new .partition,
|
partition_new .get_path(),
|
||||||
device .path,
|
device .get_path(),
|
||||||
Utils::format_size( partition_new .sector_start ) ) ;
|
Utils::format_size( partition_new .sector_start ) ) ;
|
||||||
|
|
||||||
default :
|
default :
|
||||||
|
@ -153,7 +158,7 @@ void Operation::Apply_Operation_To_Visual( std::vector<Partition> & partitions )
|
||||||
void Operation::Insert_Unallocated( std::vector<Partition> & partitions, Sector start, Sector end, bool inside_extended )
|
void Operation::Insert_Unallocated( std::vector<Partition> & partitions, Sector start, Sector end, bool inside_extended )
|
||||||
{
|
{
|
||||||
Partition UNALLOCATED ;
|
Partition UNALLOCATED ;
|
||||||
UNALLOCATED .Set_Unallocated( device .path, 0, 0, inside_extended ) ;
|
UNALLOCATED .Set_Unallocated( device .get_path(), 0, 0, inside_extended ) ;
|
||||||
|
|
||||||
//if there are no partitions at all..
|
//if there are no partitions at all..
|
||||||
if ( partitions .empty( ) )
|
if ( partitions .empty( ) )
|
||||||
|
@ -244,7 +249,10 @@ void Operation::Apply_Delete_To_Visual( std::vector<Partition> & partitions )
|
||||||
partitions[ ext ] .logicals[ t ] .Update_Number( partitions[ ext ] .logicals[ t ] .partition_number -1 );
|
partitions[ ext ] .logicals[ t ] .Update_Number( partitions[ ext ] .logicals[ t ] .partition_number -1 );
|
||||||
|
|
||||||
|
|
||||||
Insert_Unallocated( partitions[ ext ] .logicals, partitions[ ext ] .sector_start, partitions[ ext ] .sector_end, true ) ;
|
Insert_Unallocated( partitions[ ext ] .logicals,
|
||||||
|
partitions[ ext ] .sector_start,
|
||||||
|
partitions[ ext ] .sector_end,
|
||||||
|
true ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -261,7 +269,10 @@ void Operation::Apply_Create_To_Visual( std::vector<Partition> & partitions )
|
||||||
unsigned int ext = get_index_extended( partitions ) ;
|
unsigned int ext = get_index_extended( partitions ) ;
|
||||||
partitions[ ext ] .logicals[ Get_Index_Original( partitions[ ext ] .logicals ) ] = partition_new ;
|
partitions[ ext ] .logicals[ Get_Index_Original( partitions[ ext ] .logicals ) ] = partition_new ;
|
||||||
|
|
||||||
Insert_Unallocated( partitions[ ext ] .logicals, partitions[ ext ] .sector_start, partitions[ ext ] .sector_end, true ) ;
|
Insert_Unallocated( partitions[ ext ] .logicals,
|
||||||
|
partitions[ ext ] .sector_start,
|
||||||
|
partitions[ ext ] .sector_end,
|
||||||
|
true ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,13 +296,18 @@ void Operation::Apply_Resize_Move_Extended_To_Visual( std::vector<Partition> & p
|
||||||
//stuff INSIDE extended partition
|
//stuff INSIDE extended partition
|
||||||
ext = get_index_extended( partitions ) ;
|
ext = get_index_extended( partitions ) ;
|
||||||
|
|
||||||
if ( partitions[ ext ] .logicals .size( ) && partitions[ ext ] .logicals .front( ) .type == GParted::TYPE_UNALLOCATED )
|
if ( partitions[ ext ] .logicals .size() &&
|
||||||
partitions[ ext ] .logicals .erase( partitions[ ext ] .logicals .begin( ) ) ;
|
partitions[ ext ] .logicals .front() .type == GParted::TYPE_UNALLOCATED )
|
||||||
|
partitions[ ext ] .logicals .erase( partitions[ ext ] .logicals .begin() ) ;
|
||||||
|
|
||||||
if ( partitions[ ext ] .logicals .size( ) && partitions[ ext ] .logicals .back( ) .type == GParted::TYPE_UNALLOCATED )
|
if ( partitions[ ext ] .logicals .size() &&
|
||||||
partitions[ ext ] .logicals .erase( partitions[ ext ] .logicals .end( ) -1 ) ;
|
partitions[ ext ] .logicals .back() .type == GParted::TYPE_UNALLOCATED )
|
||||||
|
partitions[ ext ] .logicals .erase( partitions[ ext ] .logicals .end() -1 ) ;
|
||||||
|
|
||||||
Insert_Unallocated( partitions[ ext ] .logicals, partitions[ ext ] .sector_start, partitions[ ext ] .sector_end, true ) ;
|
Insert_Unallocated( partitions[ ext ] .logicals,
|
||||||
|
partitions[ ext ] .sector_start,
|
||||||
|
partitions[ ext ] .sector_end,
|
||||||
|
true ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
} //GParted
|
} //GParted
|
||||||
|
|
|
@ -24,10 +24,18 @@ Partition::Partition()
|
||||||
{
|
{
|
||||||
Reset() ;
|
Reset() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Partition::Partition( const Glib::ustring & path )
|
||||||
|
{
|
||||||
|
Reset() ;
|
||||||
|
|
||||||
|
paths .push_back( path ) ;
|
||||||
|
}
|
||||||
|
|
||||||
void Partition::Reset()
|
void Partition::Reset()
|
||||||
{
|
{
|
||||||
partition = realpath = error = "" ;
|
paths .clear() ;
|
||||||
|
error .clear() ;
|
||||||
status = GParted::STAT_REAL ;
|
status = GParted::STAT_REAL ;
|
||||||
type = GParted::TYPE_UNALLOCATED ;
|
type = GParted::TYPE_UNALLOCATED ;
|
||||||
filesystem = GParted::FS_UNALLOCATED ;
|
filesystem = GParted::FS_UNALLOCATED ;
|
||||||
|
@ -50,7 +58,9 @@ void Partition::Set( const Glib::ustring & device_path,
|
||||||
bool busy )
|
bool busy )
|
||||||
{
|
{
|
||||||
this ->device_path = device_path ;
|
this ->device_path = device_path ;
|
||||||
this ->partition = realpath = partition;
|
|
||||||
|
paths .push_back( partition ) ;
|
||||||
|
|
||||||
this ->partition_number = partition_number;
|
this ->partition_number = partition_number;
|
||||||
this ->type = type;
|
this ->type = type;
|
||||||
this ->filesystem = filesystem;
|
this ->filesystem = filesystem;
|
||||||
|
@ -59,7 +69,7 @@ void Partition::Set( const Glib::ustring & device_path,
|
||||||
this ->inside_extended = inside_extended;
|
this ->inside_extended = inside_extended;
|
||||||
this ->busy = busy;
|
this ->busy = busy;
|
||||||
|
|
||||||
this ->color.set( Utils::Get_Color( filesystem ) );
|
this ->color .set( Utils::Get_Color( filesystem ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Partition::Set_Unused( Sector sectors_unused )
|
void Partition::Set_Unused( Sector sectors_unused )
|
||||||
|
@ -71,10 +81,13 @@ void Partition::Set_Unused( Sector sectors_unused )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Partition::Set_Unallocated( const Glib::ustring & device_path, Sector sector_start, Sector sector_end, bool inside_extended )
|
void Partition::Set_Unallocated( const Glib::ustring & device_path,
|
||||||
|
Sector sector_start,
|
||||||
|
Sector sector_end,
|
||||||
|
bool inside_extended )
|
||||||
{
|
{
|
||||||
Reset() ;
|
Reset() ;
|
||||||
|
|
||||||
Set( device_path,
|
Set( device_path,
|
||||||
Utils::Get_Filesystem_String( GParted::FS_UNALLOCATED ),
|
Utils::Get_Filesystem_String( GParted::FS_UNALLOCATED ),
|
||||||
-1,
|
-1,
|
||||||
|
@ -89,19 +102,59 @@ void Partition::Set_Unallocated( const Glib::ustring & device_path, Sector secto
|
||||||
}
|
}
|
||||||
|
|
||||||
void Partition::Update_Number( int new_number )
|
void Partition::Update_Number( int new_number )
|
||||||
{
|
{
|
||||||
this ->partition =
|
unsigned int index ;
|
||||||
partition .substr( 0, partition .find( Utils::num_to_str( partition_number ) ) ) +
|
for ( unsigned int t = 0 ; t < paths .size() ; t++ )
|
||||||
Utils::num_to_str( new_number ) ;
|
{
|
||||||
|
index = paths[ t ] .rfind( Utils::num_to_str( partition_number ) ) ;
|
||||||
|
|
||||||
|
if ( index < paths[ t ] .length() )
|
||||||
|
paths[ t ] .replace( index,
|
||||||
|
Utils::num_to_str( partition_number ) .length(),
|
||||||
|
Utils::num_to_str( new_number ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
partition_number = new_number;
|
||||||
|
}
|
||||||
|
|
||||||
this ->partition_number = new_number;
|
void Partition::add_path( const Glib::ustring & path, bool clear_paths )
|
||||||
|
{
|
||||||
|
if ( clear_paths )
|
||||||
|
paths .clear() ;
|
||||||
|
|
||||||
|
paths .push_back( path ) ;
|
||||||
|
|
||||||
|
sort_paths_and_remove_duplicates() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Partition::add_paths( const std::vector<Glib::ustring> & paths, bool clear_paths )
|
||||||
|
{
|
||||||
|
if ( clear_paths )
|
||||||
|
this ->paths .clear() ;
|
||||||
|
|
||||||
|
this ->paths .insert( this ->paths .end(), paths .begin(), paths .end() ) ;
|
||||||
|
|
||||||
|
sort_paths_and_remove_duplicates() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sector Partition::get_length() const
|
Sector Partition::get_length() const
|
||||||
{
|
{
|
||||||
return sector_end - sector_start + 1 ;
|
return sector_end - sector_start + 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Glib::ustring Partition::get_path() const
|
||||||
|
{
|
||||||
|
if ( paths .size() > 0 )
|
||||||
|
return paths .front() ;
|
||||||
|
|
||||||
|
return "" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Glib::ustring> Partition::get_paths() const
|
||||||
|
{
|
||||||
|
return paths ;
|
||||||
|
}
|
||||||
|
|
||||||
bool Partition::operator==( const Partition & partition ) const
|
bool Partition::operator==( const Partition & partition ) const
|
||||||
{
|
{
|
||||||
return this ->partition_number == partition .partition_number &&
|
return this ->partition_number == partition .partition_number &&
|
||||||
|
@ -109,6 +162,21 @@ bool Partition::operator==( const Partition & partition ) const
|
||||||
this ->type == partition .type ;
|
this ->type == partition .type ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Partition::sort_paths_and_remove_duplicates()
|
||||||
|
{
|
||||||
|
//remove duplicates
|
||||||
|
std::sort( paths .begin(), paths .end() ) ;
|
||||||
|
paths .erase( std::unique( paths .begin(), paths .end() ), paths .end() ) ;
|
||||||
|
|
||||||
|
//sort on length
|
||||||
|
std::sort( paths .begin(), paths .end(), compare_paths ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Partition::compare_paths( const Glib::ustring & A, const Glib::ustring & B )
|
||||||
|
{
|
||||||
|
return A .length() < B .length() ;
|
||||||
|
}
|
||||||
|
|
||||||
Partition::~Partition()
|
Partition::~Partition()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,7 +156,7 @@ void TreeView_Detail::create_row( const Gtk::TreeRow & treerow, const Partition
|
||||||
treerow[ treeview_detail_columns .error_icon ] =
|
treerow[ treeview_detail_columns .error_icon ] =
|
||||||
render_icon( Gtk::Stock::DIALOG_WARNING, Gtk::ICON_SIZE_BUTTON );
|
render_icon( Gtk::Stock::DIALOG_WARNING, Gtk::ICON_SIZE_BUTTON );
|
||||||
|
|
||||||
treerow[ treeview_detail_columns .path ] = partition .partition ;
|
treerow[ treeview_detail_columns .path ] = partition .get_path() ;
|
||||||
|
|
||||||
//this fixes a weird issue (see #169683 for more info)
|
//this fixes a weird issue (see #169683 for more info)
|
||||||
if ( partition .type == GParted::TYPE_EXTENDED && partition .busy )
|
if ( partition .type == GParted::TYPE_EXTENDED && partition .busy )
|
||||||
|
|
14
src/Utils.cc
14
src/Utils.cc
|
@ -28,15 +28,17 @@ Sector Utils::Round( double double_value )
|
||||||
return static_cast<Sector>( double_value + 0.5 ) ;
|
return static_cast<Sector>( double_value + 0.5 ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Gtk::Label * Utils::mk_label( const Glib::ustring & text, bool use_markup, bool align_left, bool wrap, const Glib::ustring & text_color )
|
Gtk::Label * Utils::mk_label( const Glib::ustring & text,
|
||||||
|
bool use_markup,
|
||||||
|
bool align_left,
|
||||||
|
bool wrap,
|
||||||
|
const Glib::ustring & text_color )
|
||||||
{
|
{
|
||||||
Gtk::Label * label = manage( new Gtk::Label( text ) ) ;
|
Gtk::Label * label = manage( new Gtk::Label( text,
|
||||||
|
align_left ? Gtk::ALIGN_LEFT : Gtk::ALIGN_CENTER,
|
||||||
|
Gtk::ALIGN_TOP ) ) ;
|
||||||
|
|
||||||
label ->set_use_markup( use_markup ) ;
|
label ->set_use_markup( use_markup ) ;
|
||||||
|
|
||||||
if ( align_left )
|
|
||||||
label ->set_alignment( Gtk::ALIGN_LEFT ) ;
|
|
||||||
|
|
||||||
label ->set_line_wrap( wrap ) ;
|
label ->set_line_wrap( wrap ) ;
|
||||||
|
|
||||||
if ( text_color != "black" )
|
if ( text_color != "black" )
|
||||||
|
|
|
@ -321,11 +321,6 @@ void Win_GParted::init_device_info()
|
||||||
device_info .push_back( Utils::mk_label( "" ) ) ;
|
device_info .push_back( Utils::mk_label( "" ) ) ;
|
||||||
table ->attach( * device_info .back(), 1,2, top++, bottom++, Gtk::FILL);
|
table ->attach( * device_info .back(), 1,2, top++, bottom++, Gtk::FILL);
|
||||||
|
|
||||||
//real path
|
|
||||||
table ->attach( * Utils::mk_label( " <b>" + (Glib::ustring) _( "Real Path:" ) + "</b>" ) , 0,1,top, bottom ,Gtk::FILL);
|
|
||||||
device_info .push_back( Utils::mk_label( "" ) ) ;
|
|
||||||
table ->attach( * device_info .back(), 1,2, top++, bottom++, Gtk::FILL);
|
|
||||||
|
|
||||||
vbox_info .pack_start( *table, Gtk::PACK_SHRINK );
|
vbox_info .pack_start( *table, Gtk::PACK_SHRINK );
|
||||||
|
|
||||||
//DETAILED DEVICE INFO
|
//DETAILED DEVICE INFO
|
||||||
|
@ -441,13 +436,13 @@ void Win_GParted::refresh_combo_devices()
|
||||||
treerow = *( liststore_devices ->append() ) ;
|
treerow = *( liststore_devices ->append() ) ;
|
||||||
treerow[ treeview_devices_columns .icon ] =
|
treerow[ treeview_devices_columns .icon ] =
|
||||||
render_icon( Gtk::Stock::HARDDISK, Gtk::ICON_SIZE_LARGE_TOOLBAR ) ;
|
render_icon( Gtk::Stock::HARDDISK, Gtk::ICON_SIZE_LARGE_TOOLBAR ) ;
|
||||||
treerow[ treeview_devices_columns .device ] = devices[ i ] .path ;
|
treerow[ treeview_devices_columns .device ] = devices[ i ] .get_path() ;
|
||||||
treerow[ treeview_devices_columns .size ] = "(" + Utils::format_size( devices[ i ] .length ) + ")" ;
|
treerow[ treeview_devices_columns .size ] = "(" + Utils::format_size( devices[ i ] .length ) + ")" ;
|
||||||
|
|
||||||
//devices submenu....
|
//devices submenu....
|
||||||
menu ->items() .push_back( Gtk::Menu_Helpers::RadioMenuElem(
|
menu ->items() .push_back( Gtk::Menu_Helpers::RadioMenuElem(
|
||||||
radio_group,
|
radio_group,
|
||||||
devices[ i ] .path + "\t(" + Utils::format_size( devices[ i ] .length ) + ")",
|
devices[ i ] .get_path() + "\t(" + Utils::format_size( devices[ i ] .length ) + ")",
|
||||||
sigc::bind<unsigned int>( sigc::mem_fun(*this, &Win_GParted::radio_devices_changed), i ) ) ) ;
|
sigc::bind<unsigned int>( sigc::mem_fun(*this, &Win_GParted::radio_devices_changed), i ) ) ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -510,8 +505,7 @@ void Win_GParted::Fill_Label_Device_Info( bool clear )
|
||||||
//global info...
|
//global info...
|
||||||
device_info[ t++ ] ->set_text( devices[ current_device ] .model ) ;
|
device_info[ t++ ] ->set_text( devices[ current_device ] .model ) ;
|
||||||
device_info[ t++ ] ->set_text( Utils::format_size( devices[ current_device ] .length ) ) ;
|
device_info[ t++ ] ->set_text( Utils::format_size( devices[ current_device ] .length ) ) ;
|
||||||
device_info[ t++ ] ->set_text( devices[ current_device ] .path ) ;
|
device_info[ t++ ] ->set_text( Glib::build_path( "\n", devices[ current_device ] .get_paths() ) ) ;
|
||||||
device_info[ t++ ] ->set_text( devices[ current_device ] .realpath ) ;
|
|
||||||
|
|
||||||
//detailed info
|
//detailed info
|
||||||
device_info[ t++ ] ->set_text( devices[ current_device ] .disktype ) ;
|
device_info[ t++ ] ->set_text( devices[ current_device ] .disktype ) ;
|
||||||
|
@ -578,8 +572,8 @@ void Win_GParted::Refresh_Visual()
|
||||||
|
|
||||||
//make all operations visible
|
//make all operations visible
|
||||||
for ( unsigned int t = 0 ; t < operations .size(); t++ )
|
for ( unsigned int t = 0 ; t < operations .size(); t++ )
|
||||||
{
|
{ //FIXME: overload == operator for Device and use that instead of this..
|
||||||
if ( operations[ t ] .device .path == devices[ current_device ] .path )
|
if ( operations[ t ] .device .get_path() == devices[ current_device ] .get_path() )
|
||||||
operations[ t ] .Apply_Operation_To_Visual( partitions ) ;
|
operations[ t ] .Apply_Operation_To_Visual( partitions ) ;
|
||||||
|
|
||||||
treerow = *( liststore_operations ->append() );
|
treerow = *( liststore_operations ->append() );
|
||||||
|
@ -605,7 +599,7 @@ void Win_GParted::Refresh_Visual()
|
||||||
primary_count = 0;
|
primary_count = 0;
|
||||||
for ( unsigned int t = 0 ; t < partitions .size() ; t++ )
|
for ( unsigned int t = 0 ; t < partitions .size() ; t++ )
|
||||||
{
|
{
|
||||||
if ( partitions[ t ] .partition == copied_partition .partition )
|
if ( partitions[ t ] .get_path() == copied_partition .get_path() )
|
||||||
copied_partition = partitions[ t ] ;
|
copied_partition = partitions[ t ] ;
|
||||||
|
|
||||||
switch ( partitions[ t ] .type )
|
switch ( partitions[ t ] .type )
|
||||||
|
@ -673,7 +667,7 @@ void Win_GParted::set_valid_operations()
|
||||||
dynamic_cast<Gtk::Label*>(menu_partition .items()[ 10 ] .get_child() ) ->set_label( _("unmount") ) ;
|
dynamic_cast<Gtk::Label*>(menu_partition .items()[ 10 ] .get_child() ) ->set_label( _("unmount") ) ;
|
||||||
|
|
||||||
//no partition selected...
|
//no partition selected...
|
||||||
if ( selected_partition .partition .empty() )
|
if ( ! selected_partition .get_paths() .size() )
|
||||||
return ;
|
return ;
|
||||||
|
|
||||||
//if there's something, there's some info ;)
|
//if there's something, there's some info ;)
|
||||||
|
@ -717,7 +711,7 @@ void Win_GParted::set_valid_operations()
|
||||||
allow_new( true );
|
allow_new( true );
|
||||||
|
|
||||||
//find out if there is a copied partition and if it fits inside this unallocated space
|
//find out if there is a copied partition and if it fits inside this unallocated space
|
||||||
if ( ! copied_partition .partition .empty() && ! devices[ current_device ] .readonly )
|
if ( ! copied_partition .get_path() .empty() && ! devices[ current_device ] .readonly )
|
||||||
{
|
{
|
||||||
Sector required_size ;
|
Sector required_size ;
|
||||||
if ( copied_partition .filesystem == GParted::FS_XFS )
|
if ( copied_partition .filesystem == GParted::FS_XFS )
|
||||||
|
@ -824,7 +818,7 @@ void Win_GParted::combo_devices_changed()
|
||||||
{
|
{
|
||||||
//set new current device
|
//set new current device
|
||||||
current_device = combo_devices .get_active_row_number() ;
|
current_device = combo_devices .get_active_row_number() ;
|
||||||
this ->set_title( String::ucompose( _("%1 - GParted"), devices[ current_device ] .path ) );
|
set_title( String::ucompose( _("%1 - GParted"), devices[ current_device ] .get_path() ) );
|
||||||
|
|
||||||
//refresh label_device_info
|
//refresh label_device_info
|
||||||
Fill_Label_Device_Info();
|
Fill_Label_Device_Info();
|
||||||
|
@ -876,10 +870,10 @@ void Win_GParted::menu_gparted_refresh_devices( )
|
||||||
|
|
||||||
//show read-only warning if necessary
|
//show read-only warning if necessary
|
||||||
Glib::ustring readonly_paths ;
|
Glib::ustring readonly_paths ;
|
||||||
|
//FIXME: push relevant devices in vector en construct error using Glib::build_path
|
||||||
for ( unsigned int t = 0 ; t < devices .size() ; t++ )
|
for ( unsigned int t = 0 ; t < devices .size() ; t++ )
|
||||||
if ( devices[ t ] .readonly )
|
if ( devices[ t ] .readonly )
|
||||||
readonly_paths += "\n- " + devices[ t ] .path ;
|
readonly_paths += "\n- " + devices[ t ] .get_path() ;
|
||||||
|
|
||||||
if ( ! readonly_paths .empty() )
|
if ( ! readonly_paths .empty() )
|
||||||
{
|
{
|
||||||
|
@ -901,8 +895,8 @@ void Win_GParted::menu_gparted_refresh_devices( )
|
||||||
//but anyone who removes the sourcedevice before applying the operations gets what he/she deserves :-)
|
//but anyone who removes the sourcedevice before applying the operations gets what he/she deserves :-)
|
||||||
unsigned int i ;
|
unsigned int i ;
|
||||||
for ( unsigned int t = 0 ; t < operations .size() ; t++ )
|
for ( unsigned int t = 0 ; t < operations .size() ; t++ )
|
||||||
{
|
{//FIXME same as above, use Device::==
|
||||||
for ( i = 0 ; i < devices .size() && devices[ i ] .path != operations[ t ] .device .path ; i++ ) {}
|
for ( i = 0 ; i < devices .size() && devices[ i ] .get_path() != operations[ t ] .device .get_path() ; i++ ) {}
|
||||||
|
|
||||||
if ( i >= devices .size() )
|
if ( i >= devices .size() )
|
||||||
operations .erase( operations .begin() + t-- ) ;//decrease t bij one..
|
operations .erase( operations .begin() + t-- ) ;//decrease t bij one..
|
||||||
|
@ -1111,10 +1105,10 @@ bool Win_GParted::max_amount_prim_reached()
|
||||||
void Win_GParted::activate_resize()
|
void Win_GParted::activate_resize()
|
||||||
{
|
{
|
||||||
std::vector<Partition> partitions = devices[ current_device ] .partitions ;
|
std::vector<Partition> partitions = devices[ current_device ] .partitions ;
|
||||||
|
//FIXME use DEvice::==
|
||||||
if ( operations .size() )
|
if ( operations .size() )
|
||||||
for (unsigned int t = 0 ; t < operations .size() ; t++ )
|
for (unsigned int t = 0 ; t < operations .size() ; t++ )
|
||||||
if ( operations[ t ] .device .path == devices[ current_device ] .path )
|
if ( operations[ t ] .device .get_path() == devices[ current_device ] .get_path() )
|
||||||
operations[ t ] .Apply_Operation_To_Visual( partitions ) ;
|
operations[ t ] .Apply_Operation_To_Visual( partitions ) ;
|
||||||
|
|
||||||
Dialog_Partition_Resize_Move dialog( gparted_core .get_fs( selected_partition .filesystem ),
|
Dialog_Partition_Resize_Move dialog( gparted_core .get_fs( selected_partition .filesystem ),
|
||||||
|
@ -1142,7 +1136,7 @@ void Win_GParted::activate_resize()
|
||||||
//remove operation which creates this partition
|
//remove operation which creates this partition
|
||||||
for ( unsigned int t = 0 ; t < operations .size() ; t++ )
|
for ( unsigned int t = 0 ; t < operations .size() ; t++ )
|
||||||
{
|
{
|
||||||
if ( operations[ t ] .partition_new .partition == selected_partition .partition )
|
if ( operations[ t ] .partition_new == selected_partition )
|
||||||
{
|
{
|
||||||
operations.erase( operations .begin() + t ) ;
|
operations.erase( operations .begin() + t ) ;
|
||||||
|
|
||||||
|
@ -1225,7 +1219,7 @@ void Win_GParted::activate_delete()
|
||||||
selected_partition .partition_number < devices[ current_device ] .highest_busy )
|
selected_partition .partition_number < devices[ current_device ] .highest_busy )
|
||||||
{
|
{
|
||||||
Gtk::MessageDialog dialog( *this,
|
Gtk::MessageDialog dialog( *this,
|
||||||
String::ucompose( _( "Unable to delete %1!"), selected_partition .partition ),
|
String::ucompose( _( "Unable to delete %1!"), selected_partition .get_path() ),
|
||||||
false,
|
false,
|
||||||
Gtk::MESSAGE_ERROR,
|
Gtk::MESSAGE_ERROR,
|
||||||
Gtk::BUTTONS_OK,
|
Gtk::BUTTONS_OK,
|
||||||
|
@ -1239,12 +1233,12 @@ void Win_GParted::activate_delete()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//if partition is on the clipboard...
|
//if partition is on the clipboard...(NOTE: we can't use Partition::== here..)
|
||||||
if ( selected_partition .partition == copied_partition .partition )
|
if ( selected_partition .get_path() == copied_partition .get_path() )
|
||||||
{
|
{
|
||||||
Gtk::MessageDialog dialog( *this,
|
Gtk::MessageDialog dialog( *this,
|
||||||
String::ucompose( _( "Are you sure you want to delete %1?"),
|
String::ucompose( _( "Are you sure you want to delete %1?"),
|
||||||
selected_partition .partition ),
|
selected_partition .get_path() ),
|
||||||
false,
|
false,
|
||||||
Gtk::MESSAGE_QUESTION,
|
Gtk::MESSAGE_QUESTION,
|
||||||
Gtk::BUTTONS_NONE,
|
Gtk::BUTTONS_NONE,
|
||||||
|
@ -1254,7 +1248,7 @@ void Win_GParted::activate_delete()
|
||||||
|
|
||||||
/*TO TRANSLATORS: dialogtitle, looks like Delete /dev/hda2 (ntfs, 2345 MiB) */
|
/*TO TRANSLATORS: dialogtitle, looks like Delete /dev/hda2 (ntfs, 2345 MiB) */
|
||||||
dialog .set_title( String::ucompose( _("Delete %1 (%2, %3)"),
|
dialog .set_title( String::ucompose( _("Delete %1 (%2, %3)"),
|
||||||
selected_partition .partition,
|
selected_partition .get_path(),
|
||||||
Utils::Get_Filesystem_String( selected_partition .filesystem ),
|
Utils::Get_Filesystem_String( selected_partition .filesystem ),
|
||||||
Utils::format_size( selected_partition .get_length() ) ) );
|
Utils::format_size( selected_partition .get_length() ) ) );
|
||||||
dialog .add_button( Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL );
|
dialog .add_button( Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL );
|
||||||
|
@ -1267,7 +1261,7 @@ void Win_GParted::activate_delete()
|
||||||
}
|
}
|
||||||
|
|
||||||
//if deleted partition was on the clipboard we erase it...
|
//if deleted partition was on the clipboard we erase it...
|
||||||
if ( selected_partition .partition == copied_partition .partition )
|
if ( selected_partition .get_path() == copied_partition .get_path() )
|
||||||
copied_partition .Reset() ;
|
copied_partition .Reset() ;
|
||||||
|
|
||||||
/* if deleted one is NEW, it doesn't make sense to add it to the operationslist,
|
/* if deleted one is NEW, it doesn't make sense to add it to the operationslist,
|
||||||
|
@ -1277,7 +1271,7 @@ void Win_GParted::activate_delete()
|
||||||
{
|
{
|
||||||
//remove all operations done on this new partition (this includes creation)
|
//remove all operations done on this new partition (this includes creation)
|
||||||
for ( int t = 0 ; t < static_cast<int>( operations .size() ) ; t++ )
|
for ( int t = 0 ; t < static_cast<int>( operations .size() ) ; t++ )
|
||||||
if ( operations[ t ] .partition_new .partition == selected_partition .partition )
|
if ( operations[ t ] .partition_new .get_path() == selected_partition .get_path() )
|
||||||
operations.erase( operations .begin() + t-- ) ;
|
operations.erase( operations .begin() + t-- ) ;
|
||||||
|
|
||||||
//determine lowest possible new_count
|
//determine lowest possible new_count
|
||||||
|
@ -1337,9 +1331,9 @@ void Win_GParted::activate_format( GParted::FILESYSTEM new_fs )
|
||||||
}
|
}
|
||||||
|
|
||||||
//ok we made it. lets create an fitting partition object
|
//ok we made it. lets create an fitting partition object
|
||||||
Partition part_temp;
|
Partition part_temp ;
|
||||||
part_temp .Set( devices[ current_device ] .path,
|
part_temp .Set( devices[ current_device ] .get_path(),
|
||||||
selected_partition .partition,
|
selected_partition .get_path(),
|
||||||
selected_partition .partition_number,
|
selected_partition .partition_number,
|
||||||
selected_partition .type, new_fs,
|
selected_partition .type, new_fs,
|
||||||
selected_partition .sector_start,
|
selected_partition .sector_start,
|
||||||
|
@ -1355,7 +1349,7 @@ void Win_GParted::activate_format( GParted::FILESYSTEM new_fs )
|
||||||
//remove operation which creates this partition
|
//remove operation which creates this partition
|
||||||
for ( unsigned int t = 0 ; t < operations .size() ; t++ )
|
for ( unsigned int t = 0 ; t < operations .size() ; t++ )
|
||||||
{
|
{
|
||||||
if ( operations[ t ] .partition_new .partition == selected_partition .partition )
|
if ( operations[ t ] .partition_new == selected_partition )
|
||||||
{
|
{
|
||||||
operations .erase( operations .begin() +t ) ;
|
operations .erase( operations .begin() +t ) ;
|
||||||
|
|
||||||
|
@ -1413,7 +1407,7 @@ void Win_GParted::thread_mount_partition( bool * succes, Glib::ustring * error )
|
||||||
|
|
||||||
*succes = true ;
|
*succes = true ;
|
||||||
for ( unsigned int t = 0 ; t < selected_partition .mountpoints .size() ; t++ )
|
for ( unsigned int t = 0 ; t < selected_partition .mountpoints .size() ; t++ )
|
||||||
if ( Utils::execute_command( "mount -v " + selected_partition .partition + " " + selected_partition .mountpoints[ t ],
|
if ( Utils::execute_command( "mount -v " + selected_partition .get_path() + " " + selected_partition .mountpoints[ t ],
|
||||||
dummy,
|
dummy,
|
||||||
*error ) )
|
*error ) )
|
||||||
{
|
{
|
||||||
|
@ -1432,9 +1426,9 @@ void Win_GParted::thread_toggle_swap( bool * succes, Glib::ustring * error )
|
||||||
Glib::ustring dummy ;
|
Glib::ustring dummy ;
|
||||||
|
|
||||||
if ( selected_partition .busy )
|
if ( selected_partition .busy )
|
||||||
*succes = ! Utils::execute_command( "swapoff -v " + selected_partition .partition + " && sync", dummy, *error ) ;
|
*succes = ! Utils::execute_command( "swapoff -v " + selected_partition .get_path() + " && sync", dummy, *error ) ;
|
||||||
else
|
else
|
||||||
*succes = ! Utils::execute_command( "swapon -v " + selected_partition .partition + " && sync", dummy, *error ) ;
|
*succes = ! Utils::execute_command( "swapon -v " + selected_partition .get_path() + " && sync", dummy, *error ) ;
|
||||||
|
|
||||||
pulse = false ;
|
pulse = false ;
|
||||||
}
|
}
|
||||||
|
@ -1452,8 +1446,9 @@ void Win_GParted::toggle_swap_mount_state()
|
||||||
sigc::mem_fun( *this, &Win_GParted::thread_toggle_swap ), &succes, &error ), true ) ;
|
sigc::mem_fun( *this, &Win_GParted::thread_toggle_swap ), &succes, &error ), true ) ;
|
||||||
|
|
||||||
show_pulsebar(
|
show_pulsebar(
|
||||||
String::ucompose( selected_partition .busy ? _("Deactivating swap on %1") : _("Activating swap on %1"),
|
String::ucompose(
|
||||||
selected_partition .partition ) ) ;
|
selected_partition .busy ? _("Deactivating swap on %1") : _("Activating swap on %1"),
|
||||||
|
selected_partition .get_path() ) ) ;
|
||||||
|
|
||||||
if ( ! succes )
|
if ( ! succes )
|
||||||
{
|
{
|
||||||
|
@ -1477,14 +1472,14 @@ void Win_GParted::toggle_swap_mount_state()
|
||||||
thread = Glib::Thread::create( sigc::bind<bool *, Glib::ustring *>(
|
thread = Glib::Thread::create( sigc::bind<bool *, Glib::ustring *>(
|
||||||
sigc::mem_fun( *this, &Win_GParted::thread_unmount_partition ), &succes, &error ), true ) ;
|
sigc::mem_fun( *this, &Win_GParted::thread_unmount_partition ), &succes, &error ), true ) ;
|
||||||
|
|
||||||
show_pulsebar( String::ucompose( _("Unmounting %1"), selected_partition .partition ) ) ;
|
show_pulsebar( String::ucompose( _("Unmounting %1"), selected_partition .get_path() ) ) ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
thread = Glib::Thread::create( sigc::bind<bool *, Glib::ustring *>(
|
thread = Glib::Thread::create( sigc::bind<bool *, Glib::ustring *>(
|
||||||
sigc::mem_fun( *this, &Win_GParted::thread_mount_partition ), &succes, &error ), true ) ;
|
sigc::mem_fun( *this, &Win_GParted::thread_mount_partition ), &succes, &error ), true ) ;
|
||||||
|
|
||||||
show_pulsebar( String::ucompose( _("mounting %1"), selected_partition .partition ) ) ;
|
show_pulsebar( String::ucompose( _("mounting %1"), selected_partition .get_path() ) ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1492,7 +1487,7 @@ void Win_GParted::toggle_swap_mount_state()
|
||||||
{
|
{
|
||||||
Gtk::MessageDialog dialog( *this,
|
Gtk::MessageDialog dialog( *this,
|
||||||
String::ucompose( selected_partition .busy ? _("Could not unmount %1") : _("Could not mount %1"),
|
String::ucompose( selected_partition .busy ? _("Could not unmount %1") : _("Could not mount %1"),
|
||||||
selected_partition .partition ),
|
selected_partition .get_path() ),
|
||||||
false,
|
false,
|
||||||
Gtk::MESSAGE_ERROR,
|
Gtk::MESSAGE_ERROR,
|
||||||
Gtk::BUTTONS_OK,
|
Gtk::BUTTONS_OK,
|
||||||
|
@ -1509,7 +1504,7 @@ void Win_GParted::toggle_swap_mount_state()
|
||||||
|
|
||||||
void Win_GParted::activate_disklabel()
|
void Win_GParted::activate_disklabel()
|
||||||
{
|
{
|
||||||
Dialog_Disklabel dialog( devices[ current_device ] .path, gparted_core .get_disklabeltypes() ) ;
|
Dialog_Disklabel dialog( devices[ current_device ] .get_path(), gparted_core .get_disklabeltypes() ) ;
|
||||||
dialog .set_transient_for( *this );
|
dialog .set_transient_for( *this );
|
||||||
|
|
||||||
if ( dialog .run() == Gtk::RESPONSE_OK )
|
if ( dialog .run() == Gtk::RESPONSE_OK )
|
||||||
|
@ -1517,19 +1512,19 @@ void Win_GParted::activate_disklabel()
|
||||||
Gtk::MessageDialog m_dialog( *this,
|
Gtk::MessageDialog m_dialog( *this,
|
||||||
String::ucompose( _("Are you sure you want to create a %1 disklabel on %2?"),
|
String::ucompose( _("Are you sure you want to create a %1 disklabel on %2?"),
|
||||||
dialog .Get_Disklabel(),
|
dialog .Get_Disklabel(),
|
||||||
devices[ current_device ] .path ),
|
devices[ current_device ] .get_path() ),
|
||||||
false,
|
false,
|
||||||
Gtk::MESSAGE_QUESTION,
|
Gtk::MESSAGE_QUESTION,
|
||||||
Gtk::BUTTONS_CANCEL,
|
Gtk::BUTTONS_CANCEL,
|
||||||
true ) ;
|
true ) ;
|
||||||
|
|
||||||
m_dialog .set_secondary_text( String::ucompose( _("This operation will destroy all data on %1!"),
|
m_dialog .set_secondary_text( String::ucompose( _("This operation will destroy all data on %1!"),
|
||||||
devices[ current_device ] .path ) ) ;
|
devices[ current_device ] .get_path() ) ) ;
|
||||||
|
|
||||||
m_dialog .add_button( _("Create"), Gtk::RESPONSE_OK );
|
m_dialog .add_button( _("Create"), Gtk::RESPONSE_OK );
|
||||||
|
|
||||||
if ( m_dialog .run() == Gtk::RESPONSE_OK &&
|
if ( m_dialog .run() == Gtk::RESPONSE_OK &&
|
||||||
! gparted_core .Set_Disklabel( devices[ current_device ] .path, dialog .Get_Disklabel() ) )
|
! gparted_core .Set_Disklabel( devices[ current_device ] .get_path(), dialog .Get_Disklabel() ) )
|
||||||
{
|
{
|
||||||
Gtk::MessageDialog dialog( *this,
|
Gtk::MessageDialog dialog( *this,
|
||||||
_("Error while setting new disklabel"),
|
_("Error while setting new disklabel"),
|
||||||
|
|
12
src/ext2.cc
12
src/ext2.cc
|
@ -51,7 +51,7 @@ FS ext2::get_filesystem_support()
|
||||||
|
|
||||||
void ext2::Set_Used_Sectors( Partition & partition )
|
void ext2::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
if ( ! Utils::execute_command( "dumpe2fs -h " + partition .partition, output, error, true ) )
|
if ( ! Utils::execute_command( "dumpe2fs -h " + partition .get_path(), output, error, true ) )
|
||||||
{
|
{
|
||||||
index = output .find( "Free blocks:" ) ;
|
index = output .find( "Free blocks:" ) ;
|
||||||
if ( index >= output .length() ||
|
if ( index >= output .length() ||
|
||||||
|
@ -76,7 +76,7 @@ bool ext2::Create( const Partition & new_partition, std::vector<OperationDetails
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_EXT2 ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_EXT2 ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkfs.ext2 " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkfs.ext2 " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -97,7 +97,7 @@ bool ext2::Resize( const Partition & partition_new,
|
||||||
else
|
else
|
||||||
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
||||||
|
|
||||||
Glib::ustring str_temp = "resize2fs " + partition_new .partition ;
|
Glib::ustring str_temp = "resize2fs " + partition_new .get_path() ;
|
||||||
|
|
||||||
if ( ! fill_partition )
|
if ( ! fill_partition )
|
||||||
str_temp += " " + Utils::num_to_str( Utils::Round( Utils::sector_to_unit(
|
str_temp += " " + Utils::num_to_str( Utils::Round( Utils::sector_to_unit(
|
||||||
|
@ -127,9 +127,7 @@ bool ext2::Copy( const Glib::ustring & src_part_path,
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
||||||
Partition partition ;
|
return Resize( Partition( dest_part_path ), operation_details, true ) ;
|
||||||
partition .partition = dest_part_path ;
|
|
||||||
return Resize( partition, operation_details, true ) ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
operation_details .back() .status = OperationDetails::ERROR ;
|
operation_details .back() .status = OperationDetails::ERROR ;
|
||||||
|
@ -140,7 +138,7 @@ bool ext2::Check_Repair( const Partition & partition, std::vector<OperationDetai
|
||||||
{
|
{
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
|
||||||
if ( 1 >= execute_command( "e2fsck -f -y -v " + partition .partition,
|
if ( 1 >= execute_command( "e2fsck -f -y -v " + partition .get_path(),
|
||||||
operation_details .back() .sub_details ) >= 0 )
|
operation_details .back() .sub_details ) >= 0 )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
14
src/ext3.cc
14
src/ext3.cc
|
@ -52,7 +52,7 @@ FS ext3::get_filesystem_support()
|
||||||
|
|
||||||
void ext3::Set_Used_Sectors( Partition & partition )
|
void ext3::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
if ( ! Utils::execute_command( "dumpe2fs -h " + partition .partition, output, error, true ) )
|
if ( ! Utils::execute_command( "dumpe2fs -h " + partition .get_path(), output, error, true ) )
|
||||||
{
|
{
|
||||||
index = output .find( "Free blocks:" ) ;
|
index = output .find( "Free blocks:" ) ;
|
||||||
if ( index >= output .length() ||
|
if ( index >= output .length() ||
|
||||||
|
@ -77,7 +77,7 @@ bool ext3::Create( const Partition & new_partition, std::vector<OperationDetails
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_EXT3 ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_EXT3 ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkfs.ext3 " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkfs.ext3 " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -98,7 +98,7 @@ bool ext3::Resize( const Partition & partition_new,
|
||||||
else
|
else
|
||||||
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
||||||
|
|
||||||
Glib::ustring str_temp = "resize2fs " + partition_new .partition ;
|
Glib::ustring str_temp = "resize2fs " + partition_new .get_path() ;
|
||||||
|
|
||||||
if ( ! fill_partition )
|
if ( ! fill_partition )
|
||||||
str_temp += " " + Utils::num_to_str( Utils::Round( Utils::sector_to_unit(
|
str_temp += " " + Utils::num_to_str( Utils::Round( Utils::sector_to_unit(
|
||||||
|
@ -128,9 +128,7 @@ bool ext3::Copy( const Glib::ustring & src_part_path,
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
||||||
Partition partition ;
|
return Resize( Partition( dest_part_path ), operation_details, true ) ;
|
||||||
partition .partition = dest_part_path ;
|
|
||||||
return Resize( partition, operation_details, true ) ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
operation_details .back() .status = OperationDetails::ERROR ;
|
operation_details .back() .status = OperationDetails::ERROR ;
|
||||||
|
@ -140,9 +138,9 @@ bool ext3::Copy( const Glib::ustring & src_part_path,
|
||||||
bool ext3::Check_Repair( const Partition & partition, std::vector<OperationDetails> & operation_details )
|
bool ext3::Check_Repair( const Partition & partition, std::vector<OperationDetails> & operation_details )
|
||||||
{
|
{
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
//FIXME: i still need to check if the 1 >= x >= 0 structure actually works!
|
||||||
|
|
||||||
|
if ( 1 >= execute_command( "e2fsck -f -y -v " + partition .get_path(),
|
||||||
if ( 1 >= execute_command( "e2fsck -f -y -v " + partition .partition,
|
|
||||||
operation_details .back() .sub_details ) >= 0 )
|
operation_details .back() .sub_details ) >= 0 )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
11
src/fat16.cc
11
src/fat16.cc
|
@ -52,11 +52,12 @@ FS fat16::get_filesystem_support()
|
||||||
|
|
||||||
void fat16::Set_Used_Sectors( Partition & partition )
|
void fat16::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
exit_status = Utils::execute_command( "dosfsck -a -v " + partition .partition, output, error, true ) ;
|
exit_status = Utils::execute_command( "dosfsck -a -v " + partition .get_path(), output, error, true ) ;
|
||||||
if ( exit_status == 0 || exit_status == 1 )
|
if ( exit_status == 0 || exit_status == 1 )
|
||||||
{
|
{//FIXME: does the output of these commands always display the path we've used for the input?
|
||||||
|
//if not, we need to check for all paths in the output..
|
||||||
//free clusters
|
//free clusters
|
||||||
index = output .find( ",", output .find( partition .partition ) + partition .partition .length() ) +1 ;
|
index = output .find( ",", output .find( partition .get_path() ) + partition .get_path() .length() ) +1 ;
|
||||||
if ( index < output .length() && sscanf( output .substr( index ) .c_str(), "%Ld/%Ld", &S, &N ) == 2 )
|
if ( index < output .length() && sscanf( output .substr( index ) .c_str(), "%Ld/%Ld", &S, &N ) == 2 )
|
||||||
N -= S ;
|
N -= S ;
|
||||||
else
|
else
|
||||||
|
@ -80,7 +81,7 @@ bool fat16::Create( const Partition & new_partition, std::vector<OperationDetail
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_FAT16 ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_FAT16 ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkdosfs -F16 -v " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkdosfs -F16 -v " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -124,7 +125,7 @@ bool fat16::Check_Repair( const Partition & partition, std::vector<OperationDeta
|
||||||
{
|
{
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
|
||||||
exit_status = execute_command( "dosfsck -a -w -v " + partition .partition,
|
exit_status = execute_command( "dosfsck -a -w -v " + partition .get_path(),
|
||||||
operation_details .back() .sub_details ) ;
|
operation_details .back() .sub_details ) ;
|
||||||
if ( exit_status == 0 || exit_status == 1 )
|
if ( exit_status == 0 || exit_status == 1 )
|
||||||
{
|
{
|
||||||
|
|
10
src/fat32.cc
10
src/fat32.cc
|
@ -21,7 +21,7 @@
|
||||||
namespace GParted
|
namespace GParted
|
||||||
{
|
{
|
||||||
|
|
||||||
FS fat32::get_filesystem_support( )
|
FS fat32::get_filesystem_support()
|
||||||
{
|
{
|
||||||
FS fs ;
|
FS fs ;
|
||||||
fs .filesystem = GParted::FS_FAT32 ;
|
fs .filesystem = GParted::FS_FAT32 ;
|
||||||
|
@ -51,11 +51,11 @@ FS fat32::get_filesystem_support( )
|
||||||
|
|
||||||
void fat32::Set_Used_Sectors( Partition & partition )
|
void fat32::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
exit_status = Utils::execute_command( "dosfsck -a -v " + partition .partition, output, error, true ) ;
|
exit_status = Utils::execute_command( "dosfsck -a -v " + partition .get_path(), output, error, true ) ;
|
||||||
if ( exit_status == 0 || exit_status == 1 )
|
if ( exit_status == 0 || exit_status == 1 )
|
||||||
{
|
{
|
||||||
//free clusters
|
//free clusters
|
||||||
index = output .find( ",", output .find( partition .partition ) + partition .partition .length() ) +1 ;
|
index = output .find( ",", output .find( partition .get_path() ) + partition .get_path() .length() ) +1 ;
|
||||||
if ( index < output .length() && sscanf( output .substr( index ) .c_str(), "%Ld/%Ld", &S, &N ) == 2 )
|
if ( index < output .length() && sscanf( output .substr( index ) .c_str(), "%Ld/%Ld", &S, &N ) == 2 )
|
||||||
N -= S ;
|
N -= S ;
|
||||||
else
|
else
|
||||||
|
@ -79,7 +79,7 @@ bool fat32::Create( const Partition & new_partition, std::vector<OperationDetail
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_FAT32 ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_FAT32 ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkdosfs -F32 -v " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkdosfs -F32 -v " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -123,7 +123,7 @@ bool fat32::Check_Repair( const Partition & partition, std::vector<OperationDeta
|
||||||
{
|
{
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
|
||||||
exit_status = execute_command( "dosfsck -a -w -v " + partition .partition,
|
exit_status = execute_command( "dosfsck -a -w -v " + partition .get_path(),
|
||||||
operation_details .back() .sub_details ) ;
|
operation_details .back() .sub_details ) ;
|
||||||
if ( exit_status == 0 || exit_status == 1 )
|
if ( exit_status == 0 || exit_status == 1 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,7 +50,7 @@ bool hfs::Create( const Partition & new_partition, std::vector<OperationDetails>
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_HFS ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_HFS ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "hformat " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "hformat " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
|
22
src/jfs.cc
22
src/jfs.cc
|
@ -68,7 +68,7 @@ FS jfs::get_filesystem_support()
|
||||||
|
|
||||||
void jfs::Set_Used_Sectors( Partition & partition )
|
void jfs::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
if ( ! Utils::execute_command( "echo dm | jfs_debugfs " + partition .partition, output, error, true ) )
|
if ( ! Utils::execute_command( "echo dm | jfs_debugfs " + partition .get_path(), output, error, true ) )
|
||||||
{
|
{
|
||||||
//blocksize
|
//blocksize
|
||||||
index = output .find( "Block Size:" ) ;
|
index = output .find( "Block Size:" ) ;
|
||||||
|
@ -95,7 +95,7 @@ bool jfs::Create( const Partition & new_partition, std::vector<OperationDetails>
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_JFS ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_JFS ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkfs.jfs -q " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkfs.jfs -q " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -129,9 +129,9 @@ bool jfs::Resize( const Partition & partition_new,
|
||||||
|
|
||||||
//mount partition
|
//mount partition
|
||||||
operation_details .back() .sub_details .push_back(
|
operation_details .back() .sub_details .push_back(
|
||||||
OperationDetails( String::ucompose( _("mount %1 on %2"), partition_new .partition, TEMP_MP ) ) ) ;
|
OperationDetails( String::ucompose( _("mount %1 on %2"), partition_new .get_path(), TEMP_MP ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mount -v -t jfs " + partition_new .partition + " " + TEMP_MP,
|
if ( ! execute_command( "mount -v -t jfs " + partition_new .get_path() + " " + TEMP_MP,
|
||||||
operation_details .back() .sub_details .back() .sub_details ) )
|
operation_details .back() .sub_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
@ -139,9 +139,9 @@ bool jfs::Resize( const Partition & partition_new,
|
||||||
//remount the partition to resize the filesystem
|
//remount the partition to resize the filesystem
|
||||||
operation_details .back() .sub_details .push_back(
|
operation_details .back() .sub_details .push_back(
|
||||||
OperationDetails( String::ucompose( _("remount %1 on %2 with the 'resize' flag enabled"),
|
OperationDetails( String::ucompose( _("remount %1 on %2 with the 'resize' flag enabled"),
|
||||||
partition_new .partition, TEMP_MP ) ) ) ;
|
partition_new .get_path(), TEMP_MP ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mount -v -t jfs -o remount,resize " + partition_new .partition + " " + TEMP_MP,
|
if ( ! execute_command( "mount -v -t jfs -o remount,resize " + partition_new .get_path() + " " + TEMP_MP,
|
||||||
operation_details .back() .sub_details .back() .sub_details ) )
|
operation_details .back() .sub_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
@ -154,9 +154,9 @@ bool jfs::Resize( const Partition & partition_new,
|
||||||
|
|
||||||
//and unmount it...
|
//and unmount it...
|
||||||
operation_details .back() .sub_details .push_back(
|
operation_details .back() .sub_details .push_back(
|
||||||
OperationDetails( String::ucompose( _("unmount %1"), partition_new .partition ) ) ) ;
|
OperationDetails( String::ucompose( _("unmount %1"), partition_new .get_path() ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "umount -v " + partition_new .partition,
|
if ( ! execute_command( "umount -v " + partition_new .get_path(),
|
||||||
operation_details .back() .sub_details .back() .sub_details ) )
|
operation_details .back() .sub_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
@ -211,9 +211,7 @@ bool jfs::Copy( const Glib::ustring & src_part_path,
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
||||||
Partition partition ;
|
return Resize( Partition( dest_part_path ), operation_details, true ) ;
|
||||||
partition .partition = dest_part_path ;
|
|
||||||
return Resize( partition, operation_details, true ) ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
operation_details .back() .status = OperationDetails::ERROR ;
|
operation_details .back() .status = OperationDetails::ERROR ;
|
||||||
|
@ -224,7 +222,7 @@ bool jfs::Check_Repair( const Partition & partition, std::vector<OperationDetail
|
||||||
{
|
{
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
|
||||||
exit_status = execute_command( "jfs_fsck -f " + partition .partition, operation_details .back() .sub_details ) ;
|
exit_status = execute_command( "jfs_fsck -f " + partition .get_path(), operation_details .back() .sub_details ) ;
|
||||||
if ( exit_status == 0 || exit_status == 1 )
|
if ( exit_status == 0 || exit_status == 1 )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
|
@ -51,7 +51,7 @@ bool linux_swap::Create( const Partition & new_partition, std::vector<OperationD
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_LINUX_SWAP ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_LINUX_SWAP ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkswap " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkswap " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
|
12
src/ntfs.cc
12
src/ntfs.cc
|
@ -53,7 +53,7 @@ FS ntfs::get_filesystem_support()
|
||||||
|
|
||||||
void ntfs::Set_Used_Sectors( Partition & partition )
|
void ntfs::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
if ( ! Utils::execute_command( "ntfscluster --force " + partition .partition, output, error, true ) )
|
if ( ! Utils::execute_command( "ntfscluster --force " + partition .get_path(), output, error, true ) )
|
||||||
{
|
{
|
||||||
index = output .find( "sectors of free space" ) ;
|
index = output .find( "sectors of free space" ) ;
|
||||||
if ( index >= output .length() ||
|
if ( index >= output .length() ||
|
||||||
|
@ -73,7 +73,7 @@ bool ntfs::Create( const Partition & new_partition, std::vector<OperationDetails
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_NTFS ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_NTFS ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkntfs -Q -vv " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkntfs -Q -vv " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -95,7 +95,7 @@ bool ntfs::Resize( const Partition & partition_new,
|
||||||
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
||||||
|
|
||||||
bool return_value = false ;
|
bool return_value = false ;
|
||||||
Glib::ustring str_temp = "ntfsresize -P --force --force " + partition_new .partition ;
|
Glib::ustring str_temp = "ntfsresize -P --force --force " + partition_new .get_path() ;
|
||||||
|
|
||||||
if ( ! fill_partition )
|
if ( ! fill_partition )
|
||||||
{
|
{
|
||||||
|
@ -146,9 +146,7 @@ bool ntfs::Copy( const Glib::ustring & src_part_path,
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
||||||
Partition partition ;
|
return Resize( Partition( dest_part_path ), operation_details, true ) ;
|
||||||
partition .partition = dest_part_path ;
|
|
||||||
return Resize( partition, operation_details, true ) ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
operation_details .back() .status = OperationDetails::ERROR ;
|
operation_details .back() .status = OperationDetails::ERROR ;
|
||||||
|
@ -159,7 +157,7 @@ bool ntfs::Check_Repair( const Partition & partition, std::vector<OperationDetai
|
||||||
{
|
{
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "ntfsresize -P -i -f -v " + partition .partition,
|
if ( ! execute_command( "ntfsresize -P -i -f -v " + partition .get_path(),
|
||||||
operation_details .back() .sub_details ) )
|
operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
|
@ -45,7 +45,7 @@ FS reiser4::get_filesystem_support()
|
||||||
|
|
||||||
void reiser4::Set_Used_Sectors( Partition & partition )
|
void reiser4::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
if ( ! Utils::execute_command( "debugfs.reiser4 " + partition .partition, output, error, true ) )
|
if ( ! Utils::execute_command( "debugfs.reiser4 " + partition .get_path(), output, error, true ) )
|
||||||
{
|
{
|
||||||
index = output .find( "free blocks" ) ;
|
index = output .find( "free blocks" ) ;
|
||||||
if ( index >= output .length() ||
|
if ( index >= output .length() ||
|
||||||
|
@ -70,7 +70,7 @@ bool reiser4::Create( const Partition & new_partition, std::vector<OperationDeta
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_REISER4 ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_REISER4 ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkfs.reiser4 --yes " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkfs.reiser4 --yes " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -100,7 +100,7 @@ bool reiser4::Check_Repair( const Partition & partition, std::vector<OperationDe
|
||||||
{
|
{
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "fsck.reiser4 --yes --fix " + partition .partition,
|
if ( ! execute_command( "fsck.reiser4 --yes --fix " + partition .get_path(),
|
||||||
operation_details .back() .sub_details ) )
|
operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
|
@ -55,7 +55,7 @@ FS reiserfs::get_filesystem_support()
|
||||||
|
|
||||||
void reiserfs::Set_Used_Sectors( Partition & partition )
|
void reiserfs::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
if ( ! Utils::execute_command( "debugreiserfs " + partition .partition, output, error, true ) )
|
if ( ! Utils::execute_command( "debugreiserfs " + partition .get_path(), output, error, true ) )
|
||||||
{
|
{
|
||||||
index = output .find( "Blocksize" ) ;
|
index = output .find( "Blocksize" ) ;
|
||||||
if ( index >= output .length() ||
|
if ( index >= output .length() ||
|
||||||
|
@ -80,7 +80,7 @@ bool reiserfs::Create( const Partition & new_partition, std::vector<OperationDet
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_REISERFS ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_REISERFS ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkreiserfs -f " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkreiserfs -f " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -101,7 +101,7 @@ bool reiserfs::Resize( const Partition & partition_new,
|
||||||
else
|
else
|
||||||
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
||||||
|
|
||||||
Glib::ustring str_temp = "echo y | resize_reiserfs " + partition_new .partition ;
|
Glib::ustring str_temp = "echo y | resize_reiserfs " + partition_new .get_path() ;
|
||||||
|
|
||||||
if ( ! fill_partition )
|
if ( ! fill_partition )
|
||||||
{
|
{
|
||||||
|
@ -134,9 +134,7 @@ bool reiserfs::Copy( const Glib::ustring & src_part_path,
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
|
||||||
Partition partition ;
|
return Resize( Partition( dest_part_path ), operation_details, true ) ;
|
||||||
partition .partition = dest_part_path ;
|
|
||||||
return Resize( partition, operation_details, true ) ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
operation_details .back() .status = OperationDetails::ERROR ;
|
operation_details .back() .status = OperationDetails::ERROR ;
|
||||||
|
@ -145,9 +143,10 @@ bool reiserfs::Copy( const Glib::ustring & src_part_path,
|
||||||
|
|
||||||
bool reiserfs::Check_Repair( const Partition & partition, std::vector<OperationDetails> & operation_details )
|
bool reiserfs::Check_Repair( const Partition & partition, std::vector<OperationDetails> & operation_details )
|
||||||
{
|
{
|
||||||
|
//FIXME: change this description to 'check filesystem on /dev/blabla for er.. etc..'
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
|
||||||
exit_status = execute_command( "reiserfsck --y --fix-fixable " + partition .partition,
|
exit_status = execute_command( "reiserfsck --y --fix-fixable " + partition .get_path(),
|
||||||
operation_details .back() .sub_details ) ;
|
operation_details .back() .sub_details ) ;
|
||||||
if ( exit_status == 0 || exit_status == 1 || exit_status == 256 )
|
if ( exit_status == 0 || exit_status == 1 || exit_status == 256 )
|
||||||
{
|
{
|
||||||
|
|
17
src/xfs.cc
17
src/xfs.cc
|
@ -70,7 +70,7 @@ FS xfs::get_filesystem_support()
|
||||||
void xfs::Set_Used_Sectors( Partition & partition )
|
void xfs::Set_Used_Sectors( Partition & partition )
|
||||||
{
|
{
|
||||||
if ( ! Utils::execute_command(
|
if ( ! Utils::execute_command(
|
||||||
"xfs_db -c 'sb 0' -c 'print blocksize' -c 'print fdblocks' -r " + partition .partition,
|
"xfs_db -c 'sb 0' -c 'print blocksize' -c 'print fdblocks' -r " + partition .get_path(),
|
||||||
output,
|
output,
|
||||||
error,
|
error,
|
||||||
true ) )
|
true ) )
|
||||||
|
@ -97,7 +97,7 @@ bool xfs::Create( const Partition & new_partition, std::vector<OperationDetails>
|
||||||
_("create new %1 filesystem"),
|
_("create new %1 filesystem"),
|
||||||
Utils::Get_Filesystem_String( GParted::FS_XFS ) ) ) ) ;
|
Utils::Get_Filesystem_String( GParted::FS_XFS ) ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mkfs.xfs -f " + new_partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command( "mkfs.xfs -f " + new_partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -131,9 +131,9 @@ bool xfs::Resize( const Partition & partition_new,
|
||||||
|
|
||||||
//mount partition
|
//mount partition
|
||||||
operation_details .back() .sub_details .push_back(
|
operation_details .back() .sub_details .push_back(
|
||||||
OperationDetails( String::ucompose( _("mount %1 on %2"), partition_new .partition, TEMP_MP ) ) ) ;
|
OperationDetails( String::ucompose( _("mount %1 on %2"), partition_new .get_path(), TEMP_MP ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "mount -v -t xfs " + partition_new .partition + " " + TEMP_MP,
|
if ( ! execute_command( "mount -v -t xfs " + partition_new .get_path() + " " + TEMP_MP,
|
||||||
operation_details .back() .sub_details .back() .sub_details ) )
|
operation_details .back() .sub_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
@ -154,9 +154,9 @@ bool xfs::Resize( const Partition & partition_new,
|
||||||
|
|
||||||
//and unmount it...
|
//and unmount it...
|
||||||
operation_details .back() .sub_details .push_back(
|
operation_details .back() .sub_details .push_back(
|
||||||
OperationDetails( String::ucompose( _("unmount %1"), partition_new .partition ) ) ) ;
|
OperationDetails( String::ucompose( _("unmount %1"), partition_new .get_path() ) ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command( "umount -v " + partition_new .partition,
|
if ( ! execute_command( "umount -v " + partition_new .get_path(),
|
||||||
operation_details .back() .sub_details .back() .sub_details ) )
|
operation_details .back() .sub_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
@ -212,8 +212,7 @@ bool xfs::Copy( const Glib::ustring & src_part_path,
|
||||||
Glib::ustring DST = Glib::get_tmp_dir() + "/gparted_tmp_xfs_dest_mountpoint" ;
|
Glib::ustring DST = Glib::get_tmp_dir() + "/gparted_tmp_xfs_dest_mountpoint" ;
|
||||||
|
|
||||||
//create xfs filesystem on destination..
|
//create xfs filesystem on destination..
|
||||||
Partition partition ;
|
Partition partition( dest_part_path ) ;
|
||||||
partition .partition = dest_part_path ;
|
|
||||||
if ( Create( partition, operation_details .back() .sub_details ) )
|
if ( Create( partition, operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
//create source mountpoint...
|
//create source mountpoint...
|
||||||
|
@ -358,7 +357,7 @@ bool xfs::Check_Repair( const Partition & partition, std::vector<OperationDetail
|
||||||
{
|
{
|
||||||
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
operation_details .push_back( OperationDetails( _("check filesystem for errors and (if possible) fix them") ) ) ;
|
||||||
|
|
||||||
if ( ! execute_command ( "xfs_repair -v " + partition .partition, operation_details .back() .sub_details ) )
|
if ( ! execute_command ( "xfs_repair -v " + partition .get_path(), operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
return true ;
|
||||||
|
|
Loading…
Reference in New Issue