configuration: initialize undefined variables after all files were parsed

This commit is contained in:
Andrzej Rybczak
2015-01-27 20:17:50 +01:00
parent 27cd86e063
commit d7998ef144
3 changed files with 8 additions and 2 deletions

View File

@@ -678,7 +678,7 @@ bool Configuration::read(const std::vector<std::string> &config_paths)
std::clog << "Reading configuration from " << config_path << "...\n"; std::clog << "Reading configuration from " << config_path << "...\n";
return p.run(f); return p.run(f);
} }
); ) && p.initialize_undefined();
} }
/* vim: set tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab : */ /* vim: set tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab : */

View File

@@ -66,6 +66,11 @@ bool option_parser::run(std::istream &is)
} }
} }
} }
return true;
}
bool option_parser::initialize_undefined()
{
for (auto &p : m_parsers) for (auto &p : m_parsers)
{ {
if (!p.second.defined()) if (!p.second.defined())
@@ -73,7 +78,7 @@ bool option_parser::run(std::istream &is)
try { try {
p.second.run_default(); p.second.run_default();
} catch (std::exception &e) { } catch (std::exception &e) {
std::cerr << "Error while finalizing option \"" << p.first << "\": " << e.what() << "\n"; std::cerr << "Error while initializing option \"" << p.first << "\": " << e.what() << "\n";
return false; return false;
} }
} }

View File

@@ -140,6 +140,7 @@ struct option_parser
} }
bool run(std::istream &is); bool run(std::istream &is);
bool initialize_undefined();
private: private:
std::unordered_map<std::string, worker> m_parsers; std::unordered_map<std::string, worker> m_parsers;