From: Todd Lipcon Date: Wed, 12 Oct 2016 17:23:42 +0000 (-0700) Subject: Convert dashes to underscores for unknown flags (#177) X-Git-Tag: accepted/tizen/5.0/unified/20181102.024438~40 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=14c0e93755d5a32c3d2029d83094564b8823b7b4;p=platform%2Fupstream%2Fgflags.git Convert dashes to underscores for unknown flags (#177) --- diff --git a/src/gflags.cc b/src/gflags.cc index fe5300f..42dcd04 100644 --- a/src/gflags.cc +++ b/src/gflags.cc @@ -771,7 +771,12 @@ void FlagRegistry::RegisterFlag(CommandLineFlag* flag) { 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; } diff --git a/test/gflags_unittest.cc b/test/gflags_unittest.cc index 47dfd3c..9a922ef 100755 --- a/test/gflags_unittest.cc +++ b/test/gflags_unittest.cc @@ -357,6 +357,19 @@ TEST(FlagFileTest, ReadFlagsFromString) { 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