aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/gc.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/gc.cc')
-rw-r--r--src/libstore/gc.cc17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc
index e1075d025..7f0b07946 100644
--- a/src/libstore/gc.cc
+++ b/src/libstore/gc.cc
@@ -43,16 +43,6 @@ static int openGCLock(LockType lockType)
}
-static void createDirs(const Path & path)
-{
- if (path == "") return;
- createDirs(dirOf(path));
- if (!pathExists(path))
- if (mkdir(path.c_str(), 0777) == -1)
- throw SysError(format("creating directory `%1%'") % path);
-}
-
-
void createSymlink(const Path & link, const Path & target, bool careful)
{
/* Create directories up to `gcRoot'. */
@@ -122,8 +112,11 @@ void addTempRoot(const Path & path)
if (fdTempRoots == -1) {
while (1) {
- fnTempRoots = (format("%1%/%2%/%3%")
- % nixStateDir % tempRootsDir % getpid()).str();
+ Path dir = (format("%1%/%2%") % nixStateDir % tempRootsDir).str();
+ createDirs(dir);
+
+ fnTempRoots = (format("%1%/%2%")
+ % dir % getpid()).str();
AutoCloseFD fdGCLock = openGCLock(ltRead);