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 @@
 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 @@
       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