Minor tidyup in load_proc_partitions_info_cache()

Minor issues:
1) In the while loop reading from /proc/partitions into variable line,
   just after the sscanf() call the variable was re-purposed to hold the
   device name making the code unnecessarily hard to follow.
2) Variable c_str was a fixed sized buffer holding the device name read
   from /proc/partitions.
3) Variable c_str name provides no meaning as to what data it holds.
4) Return value from all the Utils::regexp_label() calls is converted
   from Glib::ustring to std::string to be stored in device variable.

Resolve by using Utils::regexp_label() to extract the device name from
each line in /proc/partitions and store in the variable device, already
used for this purpose and now changed to type Glib::ustring.
This commit is contained in:
Mike Fleetwood 2016-03-22 16:26:38 +00:00 committed by Curtis Gedak
parent d04826cc27
commit e0a208576d
1 changed files with 9 additions and 12 deletions

View File

@ -84,8 +84,7 @@ void Proc_Partitions_Info::load_proc_partitions_info_cache()
if ( proc_partitions )
{
std::string line ;
std::string device ;
char c_str[4096+1] ;
Glib::ustring device;
while ( getline( proc_partitions, line ) )
{
@ -128,25 +127,23 @@ void Proc_Partitions_Info::load_proc_partitions_info_cache()
}
//Build cache of potential alternate paths
if ( sscanf( line .c_str(), "%*d %*d %*d %4096s", c_str ) == 1 )
device = Utils::regexp_label( line, "^[ ]*[0-9]+[ ]+[0-9]+[ ]+[0-9]+[ ]+([[:graph:]]+)$" );
if ( device != "" )
{
line = "/dev/" ;
line += c_str ;
device = "/dev/" + device;
char * rpath = NULL;
if ( file_test( line, Glib::FILE_TEST_EXISTS )
&& ( ( rpath = realpath( line.c_str(), NULL ) ) != NULL )
//&& line != c_str
if ( file_test( device, Glib::FILE_TEST_EXISTS )
&& ( ( rpath = realpath( device.c_str(), NULL ) ) != NULL )
//&& device != rpath
)
{
//Because we can make no assumption about which path libparted will
//detect, we add all combinations.
alternate_paths_cache[rpath] = line;
alternate_paths_cache[line] = rpath;
alternate_paths_cache[rpath] = device;
alternate_paths_cache[device] = rpath;
free( rpath );
}
}
}
proc_partitions .close() ;
}