diff options
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/util.cc | 10 | ||||
-rw-r--r-- | src/libutil/util.hh | 3 |
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. */ |