added include/Utils.h replaced get_sym_path with get_short_path for
* po/POTFILES.in: added include/Utils.h * include/GParted_Core.h, src/GParted_Core.cc: replaced get_sym_path with get_short_path for cleaner code and better performance.
This commit is contained in:
parent
a6a47c7df5
commit
391f802577
|
@ -1,3 +1,10 @@
|
||||||
|
2005-12-11 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||||
|
|
||||||
|
* po/POTFILES.in: added include/Utils.h
|
||||||
|
* include/GParted_Core.h,
|
||||||
|
src/GParted_Core.cc: replaced get_sym_path with get_short_path for
|
||||||
|
cleaner code and better performance.
|
||||||
|
|
||||||
2005-12-11 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
2005-12-11 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||||
|
|
||||||
* include/GParted_Core.h,
|
* include/GParted_Core.h,
|
||||||
|
|
|
@ -70,7 +70,7 @@ private:
|
||||||
void set_mountpoints( std::vector<Partition> & partitions, bool first_time = true ) ;
|
void set_mountpoints( std::vector<Partition> & partitions, bool first_time = true ) ;
|
||||||
void set_used_sectors( std::vector<Partition> & partitions ) ;
|
void set_used_sectors( std::vector<Partition> & partitions ) ;
|
||||||
void Insert_Unallocated( const Glib::ustring & device_path, std::vector<Partition> & partitions, Sector start, Sector end, bool inside_extended ) ;
|
void Insert_Unallocated( const Glib::ustring & device_path, std::vector<Partition> & partitions, Sector start, Sector end, bool inside_extended ) ;
|
||||||
Glib::ustring get_sym_path( const Glib::ustring & real_path ) ;
|
Glib::ustring get_short_path( const Glib::ustring & real_path ) ;
|
||||||
void LP_Set_Used_Sectors( Partition & partition );
|
void LP_Set_Used_Sectors( Partition & partition );
|
||||||
Glib::ustring Get_Flags( ) ;
|
Glib::ustring Get_Flags( ) ;
|
||||||
int Create_Empty_Partition( Partition & new_partition, bool copy = false ) ;
|
int Create_Empty_Partition( Partition & new_partition, bool copy = false ) ;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# List of source files containing translatable strings.
|
# List of source files containing translatable strings.
|
||||||
# Please keep this file sorted alphabetically.
|
# Please keep this file sorted alphabetically.
|
||||||
gparted.desktop.in
|
gparted.desktop.in
|
||||||
|
include/Utils.h
|
||||||
src/Dialog_Base_Partition.cc
|
src/Dialog_Base_Partition.cc
|
||||||
src/Dialog_Disklabel.cc
|
src/Dialog_Disklabel.cc
|
||||||
src/Dialog_Filesystems.cc
|
src/Dialog_Filesystems.cc
|
||||||
|
|
|
@ -88,7 +88,7 @@ void GParted_Core::get_devices( std::vector<Device> & devices )
|
||||||
while ( lp_device && strlen( lp_device ->path ) > 6 && static_cast<Glib::ustring>( lp_device ->path ) .is_ascii( ) )
|
while ( lp_device && strlen( lp_device ->path ) > 6 && static_cast<Glib::ustring>( lp_device ->path ) .is_ascii( ) )
|
||||||
{
|
{
|
||||||
if ( open_device( lp_device ->path ) )
|
if ( open_device( lp_device ->path ) )
|
||||||
device_paths .push_back( get_sym_path( lp_device ->path ) ) ;
|
device_paths .push_back( get_short_path( lp_device ->path ) ) ;
|
||||||
|
|
||||||
lp_device = ped_device_get_next( lp_device ) ;
|
lp_device = ped_device_get_next( lp_device ) ;
|
||||||
}
|
}
|
||||||
|
@ -625,33 +625,34 @@ std::vector<Glib::ustring> GParted_Core::get_disklabeltypes( )
|
||||||
return disklabeltypes ;
|
return disklabeltypes ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Glib::ustring GParted_Core::get_sym_path( const Glib::ustring & real_path )
|
Glib::ustring GParted_Core::get_short_path( const Glib::ustring & real_path )
|
||||||
{
|
{
|
||||||
int major, minor, size;
|
int major, minor ;
|
||||||
char temp[4096], device_name[4096], short_path[4096] ;
|
char resolved_path[255] ;
|
||||||
|
Glib::ustring short_path = real_path ;
|
||||||
FILE* proc_part_file = fopen ( "/proc/partitions", "r" );
|
|
||||||
if ( ! proc_part_file )
|
|
||||||
return real_path;
|
|
||||||
|
|
||||||
//skip first 2 useless rules of /proc/partitions
|
|
||||||
fgets( temp, 256, proc_part_file ); fgets( temp, 256, proc_part_file );
|
|
||||||
|
|
||||||
while ( fgets( temp, 4096, proc_part_file ) && sscanf(temp, "%d %d %d %255s", &major, &minor, &size, device_name ) == 4 )
|
std::string line ;
|
||||||
|
std::ifstream input( "/proc/partitions" ) ;
|
||||||
|
|
||||||
|
if ( input )
|
||||||
{
|
{
|
||||||
strcpy( short_path, "/dev/" ); strcat( short_path, device_name );
|
while ( getline( input, line ) )
|
||||||
realpath( short_path, device_name );
|
{
|
||||||
|
if ( sscanf( line .c_str(), "%d %d", &major, &minor ) == 2 && minor == 0 )
|
||||||
if ( real_path == device_name ) {
|
{
|
||||||
fclose ( proc_part_file );
|
line = "/dev/" + line .substr( line .find_last_of( ' ', line .length() ) +1 ) ;
|
||||||
return ( Glib::ustring( short_path ) );
|
if ( realpath( line .c_str(), resolved_path ) && real_path == resolved_path )
|
||||||
|
{
|
||||||
|
short_path = resolved_path ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input .close() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//paranoia modus :)
|
return short_path ;
|
||||||
fclose ( proc_part_file );
|
|
||||||
return real_path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GParted_Core::LP_Set_Used_Sectors( Partition & partition )
|
void GParted_Core::LP_Set_Used_Sectors( Partition & partition )
|
||||||
|
|
Loading…
Reference in New Issue