diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2018-02-26T17·29+0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2018-02-26T17·29+0100 |
commit | 24ec7500032c2434e450b7bc3f77ff4c1f12c41c (patch) | |
tree | e3223f8f682d89f612aeb0f2c5ad8efe4472c9c4 /src/libutil | |
parent | 9432f3fb7d3614bf121399cdd83c82065efedbb2 (diff) |
nix run: Fix segfault on macOS
Note that clearenv() is not available on macOS. Fixes #1907.
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/util.cc | 7 | ||||
-rw-r--r-- | src/libutil/util.hh | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc index 341dedfdf038..2391e14a94bd 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -73,6 +73,13 @@ std::map<std::string, std::string> getEnv() } +void clearEnv() +{ + for (auto & name : getEnv()) + unsetenv(name.first.c_str()); +} + + Path absPath(Path path, Path dir) { if (path[0] != '/') { diff --git a/src/libutil/util.hh b/src/libutil/util.hh index 47e02bc898a6..c5c537ee63d8 100644 --- a/src/libutil/util.hh +++ b/src/libutil/util.hh @@ -32,6 +32,9 @@ string getEnv(const string & key, const string & def = ""); /* Get the entire environment. */ std::map<std::string, std::string> getEnv(); +/* Clear the environment. */ +void clearEnv(); + /* Return an absolutized path, resolving paths relative to the specified directory, or the current directory otherwise. The path is also canonicalised. */ |