build-remote: Don't use C++ streams to read the conf file

This commit is contained in:
Shea Levy 2017-01-10 10:36:26 -05:00
parent d771c28613
commit 28db297862

View file

@ -1,8 +1,6 @@
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <fstream>
#include <sstream>
#include <set>
#include <memory>
#include <tuple>
@ -71,10 +69,14 @@ static std::vector<machine> read_conf() {
auto conf = getEnv("NIX_REMOTE_SYSTEMS", SYSCONFDIR "/nix/machines");
auto machines = std::vector<machine>{};
auto confFile = std::ifstream{conf};
if (confFile.good()) {
confFile.exceptions(std::ifstream::badbit);
for (string line; getline(confFile, line);) {
auto lines = std::vector<string>{};
try {
lines = tokenizeString<std::vector<string>>(readFile(conf), "\n");
} catch (const SysError & e) {
if (e.errNo != ENOENT)
throw;
}
for (auto line : lines) {
chomp(line);
line.erase(std::find(line.begin(), line.end(), '#'), line.end());
if (line.empty()) {
@ -98,8 +100,6 @@ static std::vector<machine> read_conf() {
tokenizeString<std::set<string>>(tokens[6], ",") :
std::set<string>{});
}
}
confFile.close();
return machines;
}