Skip to content

Commit

Permalink
Added try->catch for get_zfs_stat_file() to avoid fs error
Browse files Browse the repository at this point in the history
  • Loading branch information
aristocratos committed Dec 12, 2023
1 parent 6282f36 commit e770ccc
Showing 1 changed file with 21 additions and 18 deletions.
39 changes: 21 additions & 18 deletions src/linux/btop_collect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1936,29 +1936,32 @@ namespace Mem {
}

// looking through all files that start with 'objset' to find the one containing `device_name` object stats
for (const auto& file: fs::directory_iterator(zfs_pool_stat_path)) {
filename = file.path().filename();
if (filename.starts_with("objset")) {
filestream.open(file.path());
if (filestream.good()) {
// skip first two lines
for (int i = 0; i < 2; i++) filestream.ignore(numeric_limits<streamsize>::max(), '\n');
// skip characters until '7' is reached, indicating data type 7, next value will be object name
filestream.ignore(numeric_limits<streamsize>::max(), '7');
filestream >> name_compare;
if (name_compare == device_name) {
filestream.close();
if (access(file.path().c_str(), R_OK) == 0) {
return file.path();
} else {
Logger::debug("Can't access file: " + file.path().string());
return "";
try {
for (const auto& file: fs::directory_iterator(zfs_pool_stat_path)) {
filename = file.path().filename();
if (filename.starts_with("objset")) {
filestream.open(file.path());
if (filestream.good()) {
// skip first two lines
for (int i = 0; i < 2; i++) filestream.ignore(numeric_limits<streamsize>::max(), '\n');
// skip characters until '7' is reached, indicating data type 7, next value will be object name
filestream.ignore(numeric_limits<streamsize>::max(), '7');
filestream >> name_compare;
if (name_compare == device_name) {
filestream.close();
if (access(file.path().c_str(), R_OK) == 0) {
return file.path();
} else {
Logger::debug("Can't access file: " + file.path().string());
return "";
}
}
}
filestream.close();
}
filestream.close();
}
}
catch (fs::filesystem_error& e) {}

Logger::debug("Could not read directory: " + zfs_pool_stat_path.string());
return "";
Expand Down

0 comments on commit e770ccc

Please sign in to comment.