CommandLineFlag* FlagRegistry::FindFlagLocked(const char* name) {
FlagConstIterator i = flags_.find(name);
if (i == flags_.end()) {
- return NULL;
+ // If the name has dashes in it, try again after replacing with
+ // underscores.
+ if (strchr(name, '-') == NULL) return NULL;
+ string name_rep = name;
+ std::replace(name_rep.begin(), name_rep.end(), '-', '_');
+ return FindFlagLocked(name_rep.c_str());
} else {
return i->second;
}
false,
123,
123.0);
+
+ // Test that flags can use dashes instead of underscores.
+ TestFlagString(
+ // Flag string
+ "-test-string=initial\n"
+ "--test-bool=false\n"
+ "--test-int32=123\n"
+ "--test-double=123.0\n",
+ // Expected values
+ "initial",
+ false,
+ 123,
+ 123.0);
}
// Tests the filename part of the flagfile