fix(battery): use path for the / operator

This commit is contained in:
Alex
2019-05-12 19:53:14 +02:00
parent 84728f6fab
commit 80e9ea746b
7 changed files with 22 additions and 20 deletions

View File

@ -7,9 +7,11 @@ waybar::IModule* waybar::Factory::makeModule(const std::string& name) const {
auto hash_pos = name.find('#');
auto ref = name.substr(0, hash_pos);
auto id = hash_pos != std::string::npos ? name.substr(hash_pos + 1) : "";
#ifndef NO_FILESYSTEM
if (ref == "battery") {
return new waybar::modules::Battery(id, config_[name]);
}
#endif
#ifdef HAVE_SWAY
if (ref == "sway/mode") {
return new waybar::modules::sway::Mode(id, config_[name]);
@ -33,7 +35,7 @@ waybar::IModule* waybar::Factory::makeModule(const std::string& name) const {
if (ref == "clock") {
return new waybar::modules::Clock(id, config_[name]);
}
#ifdef HAVE_DBUSMENU
#if defined(HAVE_DBUSMENU) && !defined(NO_FILESYSTEM)
if (ref == "tray") {
return new waybar::modules::SNI::Tray(id, bar_, config_[name]);
}

View File

@ -47,21 +47,21 @@ void waybar::modules::Battery::worker() {
void waybar::modules::Battery::getBatteries() {
try {
for (auto const& node : fs::directory_iterator(data_dir_)) {
for (auto& node : fs::directory_iterator(data_dir_)) {
if (!fs::is_directory(node)) {
continue;
}
auto dir_name = node.path().filename();
auto bat_defined = config_["bat"].isString();
if (((bat_defined && dir_name == config_["bat"].asString()) || !bat_defined) &&
fs::exists(node / "capacity") && fs::exists(node / "uevent") &&
fs::exists(node / "status")) {
batteries_.push_back(node);
fs::exists(node.path() / "capacity") && fs::exists(node.path() / "uevent") &&
fs::exists(node.path() / "status")) {
batteries_.push_back(node.path());
}
auto adap_defined = config_["adapter"].isString();
if (((adap_defined && dir_name == config_["adapter"].asString()) || !adap_defined) &&
fs::exists(node / "online")) {
adapter_ = node;
fs::exists(node.path() / "online")) {
adapter_ = node.path();
}
}
} catch (fs::filesystem_error& e) {

View File

@ -8,11 +8,8 @@ waybar::modules::Temperature::Temperature(const std::string& id, const Json::Val
auto zone = config_["thermal-zone"].isInt() ? config_["thermal-zone"].asInt() : 0;
file_path_ = fmt::format("/sys/class/thermal/thermal_zone{}/temp", zone);
}
#ifdef FILESYSTEM_EXPERIMENTAL
if (!std::experimental::filesystem::exists(file_path_)) {
#else
if (!std::filesystem::exists(file_path_)) {
#endif
std::ifstream temp(file_path_);
if (!temp.is_open()) {
throw std::runtime_error("Can't open " + file_path_);
}
label_.set_name("temperature");