about summary refs log tree commit diff
path: root/third_party/nix/src/libexpr
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-11-22T15·06+0100
committerglittershark <grfn@gws.fyi>2020-09-01T02·21+0000
commit785cb3a75476033ba6eec2fef334d47d8e64388a (patch)
tree676d53868e29e0ab28443b9d13019c54754012f7 /third_party/nix/src/libexpr
parentc5f3b12f0484cd1a5152b6c64a336e9852d7c484 (diff)
refactor(tvix): getEnv(): Return std::optional r/1756
This allows distinguishing between an empty value and no value.

Patch ported from upstream at
https://github.com/NixOS/nix/commit/ba87b08f8529e4d9f8c58d8c625152058ceadb75

Change-Id: I061cc8e16b1a7a0341adfc3b0edca1c0c51d5c97
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1884
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Diffstat (limited to 'third_party/nix/src/libexpr')
-rw-r--r--third_party/nix/src/libexpr/eval.cc8
-rw-r--r--third_party/nix/src/libexpr/primops.cc2
2 files changed, 5 insertions, 5 deletions
diff --git a/third_party/nix/src/libexpr/eval.cc b/third_party/nix/src/libexpr/eval.cc
index b735495f2132..28ae46bdfd8c 100644
--- a/third_party/nix/src/libexpr/eval.cc
+++ b/third_party/nix/src/libexpr/eval.cc
@@ -287,11 +287,11 @@ EvalState::EvalState(const Strings& _searchPath, const ref<Store>& store)
       staticBaseEnv(false, nullptr) {
   expr::InitGC();
 
-  countCalls = getEnv("NIX_COUNT_CALLS", "0") != "0";
+  countCalls = getEnv("NIX_COUNT_CALLS").value_or("0") != "0";
 
   /* Initialise the Nix expression search path. */
   if (!evalSettings.pureEval) {
-    Strings paths = parseNixPath(getEnv("NIX_PATH", ""));
+    Strings paths = parseNixPath(getEnv("NIX_PATH").value_or(""));
     for (auto& i : _searchPath) {
       addToSearchPath(i);
     }
@@ -1644,7 +1644,7 @@ bool EvalState::eqValues(Value& v1, Value& v2) {
 }
 
 void EvalState::printStats() {
-  bool showStats = getEnv("NIX_SHOW_STATS", "0") != "0";
+  bool showStats = getEnv("NIX_SHOW_STATS").value_or("0") != "0";
 
   struct rusage buf;
   getrusage(RUSAGE_SELF, &buf);
@@ -1658,7 +1658,7 @@ void EvalState::printStats() {
       nrAttrsets * sizeof(Bindings) + nrAttrsInAttrsets * sizeof(Attr);
 
   if (showStats) {
-    auto outPath = getEnv("NIX_SHOW_STATS_PATH", "-");
+    auto outPath = getEnv("NIX_SHOW_STATS_PATH").value_or("-");
     std::fstream fs;
     if (outPath != "-") {
       fs.open(outPath, std::fstream::out);
diff --git a/third_party/nix/src/libexpr/primops.cc b/third_party/nix/src/libexpr/primops.cc
index 04a44311a259..dd8a509df32d 100644
--- a/third_party/nix/src/libexpr/primops.cc
+++ b/third_party/nix/src/libexpr/primops.cc
@@ -413,7 +413,7 @@ static void prim_getEnv(EvalState& state, const Pos& pos, Value** args,
   std::string name = state.forceStringNoCtx(*args[0], pos);
   mkString(v, evalSettings.restrictEval || evalSettings.pureEval
                   ? ""
-                  : getEnv(name));
+                  : getEnv(name).value_or(""));
 }
 
 /* Evaluate the first argument, then return the second argument. */