configuration: add 'ignore-config-errors' switch
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
|
||||
#include "utility/option_parser.h"
|
||||
|
||||
bool option_parser::run(std::istream &is)
|
||||
bool option_parser::run(std::istream &is, bool ignore_errors)
|
||||
{
|
||||
// quoted value. leftmost and rightmost quotation marks are the delimiters.
|
||||
boost::regex quoted("(\\w+)\\h*=\\h*\"(.*)\"[^\"]*");
|
||||
@@ -56,13 +56,15 @@ bool option_parser::run(std::istream &is)
|
||||
it->second.parse(match[2]);
|
||||
} catch (std::exception &e) {
|
||||
std::cerr << "Error while processing option \"" << option << "\": " << e.what() << "\n";
|
||||
return false;
|
||||
if (!ignore_errors)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Unknown option: " << option << "\n";
|
||||
return false;
|
||||
if (!ignore_errors)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,7 +76,8 @@ bool option_parser::run(std::istream &is)
|
||||
p.second.run_default();
|
||||
} catch (std::exception &e) {
|
||||
std::cerr << "Error while finalizing option \"" << p.first << "\": " << e.what() << "\n";
|
||||
return false;
|
||||
if (ignore_errors)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ struct option_parser
|
||||
m_parsers[option] = std::forward<WorkerT>(w);
|
||||
}
|
||||
|
||||
bool run(std::istream &is);
|
||||
bool run(std::istream &is, bool ignore_errors);
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, worker> m_parsers;
|
||||
|
||||
Reference in New Issue
Block a user