Refactor run_blkid_load_cache() into if fail return early (#131)

... code pattern.  Simplifies the code a little.

Closes #131 - GParted hangs when non-named device is hung
This commit is contained in:
Mike Fleetwood 2021-01-24 14:13:14 +00:00 committed by Curtis Gedak
parent 884cd5a352
commit 75bda733bb
1 changed files with 21 additions and 16 deletions

View File

@ -252,36 +252,41 @@ bool FS_Info::run_blkid_load_cache( const Glib::ustring & path )
// /dev/sdb1: LABEL="test-ext3" UUID="f218c3b8-237e-4fbe-92c5-76623bba4062" SEC_TYPE="ext2" TYPE="ext3" PARTUUID="71b3e059-30c5-492e-a526-9251dff7bbeb" // /dev/sdb1: LABEL="test-ext3" UUID="f218c3b8-237e-4fbe-92c5-76623bba4062" SEC_TYPE="ext2" TYPE="ext3" PARTUUID="71b3e059-30c5-492e-a526-9251dff7bbeb"
// /dev/sdb2: SEC_TYPE="msdos" LABEL="TEST-FAT16" UUID="9F87-1061" TYPE="vfat" PARTUUID="9d07ad9a-d468-428f-9bfd-724f5efae4fb" // /dev/sdb2: SEC_TYPE="msdos" LABEL="TEST-FAT16" UUID="9F87-1061" TYPE="vfat" PARTUUID="9d07ad9a-d468-428f-9bfd-724f5efae4fb"
// /dev/sdb3: PARTUUID="bb8438e1-d9f1-45d3-9888-e990b598900d" // /dev/sdb3: PARTUUID="bb8438e1-d9f1-45d3-9888-e990b598900d"
if (! blkid_found)
return false;
Glib::ustring cmd = "blkid"; Glib::ustring cmd = "blkid";
if ( path.size() ) if ( path.size() )
cmd = cmd + " " + Glib::shell_quote( path ); cmd = cmd + " " + Glib::shell_quote( path );
Glib::ustring output; Glib::ustring output;
Glib::ustring error; Glib::ustring error;
if (Utils::execute_command(cmd, output, error, true) != 0)
return false;
bool loaded_entries = false; bool loaded_entries = false;
if ( blkid_found && std::vector<Glib::ustring> lines;
! Utils::execute_command( cmd, output, error, true ) ) Utils::split(output, lines, "\n");
for (unsigned int i = 0; i < lines.size(); i++)
{ {
std::vector<Glib::ustring> lines; FS_Entry fs_entry = {BlockSpecial(), "", "", "", false, ""};
Utils::split( output, lines, "\n" ); Glib::ustring entry_path = Utils::regexp_label(lines[i], "^(.*): ");
for ( unsigned int i = 0 ; i < lines.size() ; i ++ ) if (entry_path.length() > 0)
{ {
FS_Entry fs_entry = {BlockSpecial(), "", "", "", false, ""}; fs_entry.path = BlockSpecial(entry_path);
Glib::ustring entry_path = Utils::regexp_label( lines[i], "^(.*): " ); fs_entry.type = Utils::regexp_label(lines[i], " TYPE=\"([^\"]*)\"");
if ( entry_path.length() > 0 ) fs_entry.sec_type = Utils::regexp_label(lines[i], " SEC_TYPE=\"([^\"]*)\"");
{ fs_entry.uuid = Utils::regexp_label(lines[i], " UUID=\"([^\"]*)\"");
fs_entry.path = BlockSpecial( entry_path ); fs_info_cache.push_back(fs_entry);
fs_entry.type = Utils::regexp_label( lines[i], " TYPE=\"([^\"]*)\"" ); loaded_entries = true;
fs_entry.sec_type = Utils::regexp_label( lines[i], " SEC_TYPE=\"([^\"]*)\"" );
fs_entry.uuid = Utils::regexp_label( lines[i], " UUID=\"([^\"]*)\"" );
fs_info_cache.push_back( fs_entry );
loaded_entries = true;
}
} }
} }
return loaded_entries; return loaded_entries;
} }
void FS_Info::update_fs_info_cache_all_labels() void FS_Info::update_fs_info_cache_all_labels()
{ {
if ( ! blkid_found ) if ( ! blkid_found )