Correctly parse extra config textpbs as textpbs, not binarypbs.

This commit is contained in:
David Given
2021-08-01 13:56:31 +02:00
parent 86d49d563e
commit 516d43d7a8

View File

@@ -183,9 +183,13 @@ void FlagGroup::parseFlagsWithConfigFiles(int argc, const char* argv[],
parseFlags(argc, argv,
[&](const auto& filename) {
const auto& it = configFiles.find(filename);
std::string data;
if (it != configFiles.end())
data = it->second;
{
ConfigProto newConfig;
if (!newConfig.ParseFromString(it->second))
Error() << "couldn't load built-in config proto";
config.MergeFrom(newConfig);
}
else
{
std::ifstream f(filename, std::ios::out);
@@ -194,13 +198,10 @@ void FlagGroup::parseFlagsWithConfigFiles(int argc, const char* argv[],
std::ostringstream ss;
ss << f.rdbuf();
data = ss.str();
}
ConfigProto newConfig;
if (!newConfig.ParseFromString(data))
Error() << "couldn't load config proto";
config.MergeFrom(newConfig);
if (!google::protobuf::TextFormat::MergeFromString(ss.str(), &config))
Error() << "couldn't load external config proto";
}
return true;
}