about summary refs log tree commit diff
path: root/src/libutil
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/util.cc10
-rw-r--r--src/libutil/util.hh3
2 files changed, 11 insertions, 2 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index bf2954f5342a..399233983d62 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -29,6 +29,13 @@ SysError::SysError(const format & f)
 }
 
 
+string getEnv(const string & key, const string & def)
+{
+    char * value = getenv(key.c_str());
+    return value ? string(value) : def;
+}
+
+
 Path absPath(Path path, Path dir)
 {
     if (path[0] != '/') {
@@ -206,8 +213,7 @@ void makePathReadOnly(const Path & path)
 static Path tempName()
 {
     static int counter = 0;
-    char * s = getenv("TMPDIR");
-    Path tmpRoot = s ? canonPath(Path(s)) : "/tmp";
+    Path tmpRoot = canonPath(getEnv("TMPDIR", "/tmp"));
     return (format("%1%/nix-%2%-%3%") % tmpRoot % getpid() % counter++).str();
 }
 
diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index 1b0600006a29..d9ca1dac2222 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -55,6 +55,9 @@ typedef set<Path> PathSet;
 extern string thisSystem;
 
 
+/* Return an environment variable. */
+string getEnv(const string & key, const string & def = "");
+
 /* Return an absolutized path, resolving paths relative to the
    specified directory, or the current directory otherwise.  The path
    is also canonicalised. */