fix: process last line, restart-interval

This commit is contained in:
Alex 2020-03-26 09:18:47 +01:00
parent 9acf5587fa
commit 10b152ac3e
1 changed files with 11 additions and 7 deletions

View File

@ -49,6 +49,7 @@ void waybar::modules::Custom::continuousWorker() {
thread_ = [&] { thread_ = [&] {
char* buff = nullptr; char* buff = nullptr;
size_t len = 0; size_t len = 0;
bool restart = false;
if (getline(&buff, &len, fp_) == -1) { if (getline(&buff, &len, fp_) == -1) {
int exit_code = 1; int exit_code = 1;
if (fp_) { if (fp_) {
@ -61,17 +62,12 @@ void waybar::modules::Custom::continuousWorker() {
spdlog::error("{} stopped unexpectedly, is it endless?", name_); spdlog::error("{} stopped unexpectedly, is it endless?", name_);
} }
if (config_["restart-interval"].isUInt()) { if (config_["restart-interval"].isUInt()) {
pid_ = -1; restart = true;
fp_ = util::command::open(cmd, pid_);
if (!fp_) {
throw std::runtime_error("Unable to open " + cmd);
}
thread_.sleep_for(std::chrono::seconds(config_["restart-interval"].asUInt()));
} else { } else {
thread_.stop(); thread_.stop();
}
return; return;
} }
}
std::string output = buff; std::string output = buff;
// Remove last newline // Remove last newline
@ -80,6 +76,14 @@ void waybar::modules::Custom::continuousWorker() {
} }
output_ = {0, output}; output_ = {0, output};
dp.emit(); dp.emit();
if (restart) {
pid_ = -1;
fp_ = util::command::open(cmd, pid_);
if (!fp_) {
throw std::runtime_error("Unable to open " + cmd);
}
thread_.sleep_for(std::chrono::seconds(config_["restart-interval"].asUInt()));
}
}; };
} }