[lldb/Reproducers] Extract function for reading environment override (NFC)
authorJonas Devlieghere <jonas@devlieghere.com>
Thu, 16 Jan 2020 03:12:50 +0000 (19:12 -0800)
committerJonas Devlieghere <jonas@devlieghere.com>
Thu, 16 Jan 2020 03:14:28 +0000 (19:14 -0800)
Create a helper function for reading reproducer overrides from
environment variables.

lldb/source/Utility/Reproducer.cpp

index b11e1a5..e243d78 100644 (file)
@@ -18,6 +18,15 @@ using namespace lldb_private::repro;
 using namespace llvm;
 using namespace llvm::yaml;
 
+static llvm::Optional<bool> GetEnv(const char *var) {
+  std::string val = llvm::StringRef(getenv(var)).lower();
+  if (val == "0" || val == "off")
+    return false;
+  if (val == "1" || val == "on")
+    return true;
+  return {};
+}
+
 Reproducer &Reproducer::Instance() { return *InstanceImpl(); }
 
 llvm::Error Reproducer::Initialize(ReproducerMode mode,
@@ -27,12 +36,12 @@ llvm::Error Reproducer::Initialize(ReproducerMode mode,
 
   // The environment can override the capture mode.
   if (mode != ReproducerMode::Replay) {
-    std::string env =
-        llvm::StringRef(getenv("LLDB_CAPTURE_REPRODUCER")).lower();
-    if (env == "0" || env == "off")
-      mode = ReproducerMode::Off;
-    else if (env == "1" || env == "on")
-      mode = ReproducerMode::Capture;
+    if (llvm::Optional<bool> override = GetEnv("LLDB_CAPTURE_REPRODUCER")) {
+      if (*override)
+        mode = ReproducerMode::Capture;
+      else
+        mode = ReproducerMode::Off;
+    }
   }
 
   switch (mode) {