cleanups use ntfsfix for scanning. run a simulation before performing an
* src/main.cc: cleanups * src/ntfs.cc: use ntfsfix for scanning. run a simulation before performing an actual resize. more detailed feedback.
This commit is contained in:
parent
4f7ba716e7
commit
9da25b136d
|
@ -1,3 +1,10 @@
|
||||||
|
2006-01-21 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||||
|
|
||||||
|
* src/main.cc: cleanups
|
||||||
|
* src/ntfs.cc: use ntfsfix for scanning.
|
||||||
|
run a simulation before performing an actual resize. more detailed
|
||||||
|
feedback.
|
||||||
|
|
||||||
2006-01-20 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
2006-01-20 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||||
|
|
||||||
* src/xfs.cc: updated copy to provide detailed feedback.
|
* src/xfs.cc: updated copy to provide detailed feedback.
|
||||||
|
|
28
src/main.cc
28
src/main.cc
|
@ -19,30 +19,32 @@
|
||||||
|
|
||||||
#include <gtkmm/messagedialog.h>
|
#include <gtkmm/messagedialog.h>
|
||||||
|
|
||||||
int main( int argc, char *argv[ ] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
//initialize thread system
|
//initialize thread system
|
||||||
Glib::thread_init( );
|
Glib::thread_init() ;
|
||||||
|
|
||||||
Gtk::Main kit( argc, argv );
|
Gtk::Main kit( argc, argv ) ;
|
||||||
|
|
||||||
//i18n
|
//i18n
|
||||||
bindtextdomain( GETTEXT_PACKAGE, GNOMELOCALEDIR );
|
bindtextdomain( GETTEXT_PACKAGE, GNOMELOCALEDIR ) ;
|
||||||
bind_textdomain_codeset( GETTEXT_PACKAGE, "UTF-8" );
|
bind_textdomain_codeset( GETTEXT_PACKAGE, "UTF-8" ) ;
|
||||||
textdomain( GETTEXT_PACKAGE );
|
textdomain( GETTEXT_PACKAGE ) ;
|
||||||
|
|
||||||
//check UID
|
//check UID
|
||||||
if ( getuid( ) != 0 )
|
if ( getuid() != 0 )
|
||||||
{
|
{
|
||||||
Gtk::MessageDialog dialog( "<span weight=\"bold\" size=\"larger\">" + (Glib::ustring) _( "Root privileges are required for running GParted" ) + "</span>\n\n" + (Glib::ustring) _( "Since GParted can be a weapon of mass destruction only root may run it.") ,true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
|
Gtk::MessageDialog dialog( _("Root privileges are required for running GParted"), false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK ) ;
|
||||||
dialog .run( ) ;
|
dialog .set_secondary_text( _( "Since GParted can be a weapon of mass destruction only root may run it.") ) ;
|
||||||
exit( 0 );
|
|
||||||
|
dialog .run() ;
|
||||||
|
exit( 0 ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
GParted::Win_GParted win_gparted;
|
GParted::Win_GParted win_gparted ;
|
||||||
Gtk::Main::run( win_gparted );
|
Gtk::Main::run( win_gparted ) ;
|
||||||
|
|
||||||
return 0;
|
return 0 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
53
src/ntfs.cc
53
src/ntfs.cc
|
@ -102,29 +102,52 @@ bool ntfs::Create( const Partition & new_partition, std::vector<OperationDetails
|
||||||
bool ntfs::Resize( const Partition & partition_new,
|
bool ntfs::Resize( const Partition & partition_new,
|
||||||
std::vector<OperationDetails> & operation_details,
|
std::vector<OperationDetails> & operation_details,
|
||||||
bool fill_partition )
|
bool fill_partition )
|
||||||
{//FIXME probeer dmv piping y the echoen in ntfsresize
|
{
|
||||||
//-contact szaka en probeer een --yes oid in de API te krijgen
|
|
||||||
//-perform eerst testruns e.d. in ntfsresize te bouwen..
|
|
||||||
if ( fill_partition )
|
if ( fill_partition )
|
||||||
operation_details .push_back( OperationDetails( _("grow filesystem to fill the partition") ) ) ;
|
operation_details .push_back( OperationDetails( _("grow filesystem to fill the partition") ) ) ;
|
||||||
else
|
else
|
||||||
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
operation_details .push_back( OperationDetails( _("resize the filesystem") ) ) ;
|
||||||
|
|
||||||
Glib::ustring str_temp = "echo y | ntfsresize -f " + partition_new .partition ;
|
bool return_value = false ;
|
||||||
|
Glib::ustring str_temp = "echo y | ntfsresize -P --force " + partition_new .partition ;
|
||||||
|
|
||||||
if ( ! fill_partition )
|
if ( ! fill_partition )
|
||||||
str_temp += " -s " + Utils::num_to_str( partition_new .Get_Length_MB( ) - cylinder_size, true ) + "M" ;
|
str_temp += " -s " + Utils::num_to_str( partition_new .Get_Length_MB() - cylinder_size, true ) + "M" ;
|
||||||
|
|
||||||
if ( ! Execute_Command( str_temp ) )
|
//simulation..
|
||||||
|
operation_details .back() .sub_details .push_back( OperationDetails( _("run simulation") ) ) ;
|
||||||
|
|
||||||
|
argv .clear() ;
|
||||||
|
argv .push_back( "sh" ) ;
|
||||||
|
argv .push_back( "-c" ) ;
|
||||||
|
argv .push_back( str_temp + " --no-action" ) ;
|
||||||
|
if ( ! execute_command( argv, operation_details .back() .sub_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
||||||
return true ;
|
|
||||||
|
//real resize (use description from 'main' operation)
|
||||||
|
operation_details .back() .sub_details .push_back(
|
||||||
|
OperationDetails( operation_details .back() .description ) ) ;
|
||||||
|
|
||||||
|
argv .erase( argv .end() ) ;
|
||||||
|
argv .push_back( str_temp ) ;
|
||||||
|
if ( ! execute_command( argv, operation_details .back() .sub_details .back() .sub_details ) )
|
||||||
|
{
|
||||||
|
operation_details .back() .sub_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
return_value = true ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
operation_details .back() .sub_details .back() .status = OperationDetails::ERROR ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::ERROR ;
|
operation_details .back() .sub_details .back() .status = OperationDetails::ERROR ;
|
||||||
return false ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
operation_details .back() .status = return_value ? OperationDetails::SUCCES : OperationDetails::ERROR ;
|
||||||
|
return return_value ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ntfs::Copy( const Glib::ustring & src_part_path,
|
bool ntfs::Copy( const Glib::ustring & src_part_path,
|
||||||
|
@ -140,7 +163,6 @@ bool ntfs::Copy( const Glib::ustring & src_part_path,
|
||||||
argv .push_back( "--overwrite" ) ;
|
argv .push_back( "--overwrite" ) ;
|
||||||
argv .push_back( dest_part_path ) ;
|
argv .push_back( dest_part_path ) ;
|
||||||
argv .push_back( src_part_path ) ;
|
argv .push_back( src_part_path ) ;
|
||||||
|
|
||||||
if ( ! execute_command( argv, operation_details .back() .sub_details ) )
|
if ( ! execute_command( argv, operation_details .back() .sub_details ) )
|
||||||
{
|
{
|
||||||
operation_details .back() .status = OperationDetails::SUCCES ;
|
operation_details .back() .status = OperationDetails::SUCCES ;
|
||||||
|
@ -156,11 +178,12 @@ bool ntfs::Copy( const Glib::ustring & src_part_path,
|
||||||
|
|
||||||
bool ntfs::Check_Repair( const Partition & partition, std::vector<OperationDetails> & operation_details )
|
bool ntfs::Check_Repair( const Partition & partition, std::vector<OperationDetails> & operation_details )
|
||||||
{
|
{
|
||||||
//according to Szaka it's best to use ntfsresize to check the partition for errors
|
|
||||||
//since --info is read-only i'll leave it out. just calling ntfsresize --force has also a tendency of fixing stuff :)
|
|
||||||
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.. ook hier kan eea verbeterd/verduidelijkt..
|
|
||||||
if ( Resize( partition, operation_details .back() .sub_details, true ) )
|
argv .clear() ;
|
||||||
|
argv .push_back( "ntfsfix" ) ;
|
||||||
|
argv .push_back( partition .partition ) ;
|
||||||
|
if ( ! execute_command( argv, 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