aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libstore/gc.cc26
-rw-r--r--src/libstore/local-store.cc9
-rw-r--r--src/libstore/local-store.hh4
3 files changed, 13 insertions, 26 deletions
diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc
index ebee4859f..0806430ef 100644
--- a/src/libstore/gc.cc
+++ b/src/libstore/gc.cc
@@ -145,11 +145,6 @@ Path addPermRoot(StoreAPI & store, const Path & _storePath,
}
-/* The file to which we write our temporary roots. */
-static Path fnTempRoots;
-static AutoCloseFD fdTempRoots;
-
-
void LocalStore::addTempRoot(const Path & path)
{
/* Create the temporary roots file for this process. */
@@ -204,27 +199,6 @@ void LocalStore::addTempRoot(const Path & path)
}
-void removeTempRoots()
-{
- if (fdTempRoots != -1) {
- fdTempRoots.close();
- unlink(fnTempRoots.c_str());
- }
-}
-
-
-/* Automatically clean up the temporary roots file when we exit. */
-struct RemoveTempRoots
-{
- ~RemoveTempRoots()
- {
- removeTempRoots();
- }
-};
-
-static RemoveTempRoots autoRemoveTempRoots __attribute__((unused));
-
-
typedef std::shared_ptr<AutoCloseFD> FDPtr;
typedef list<FDPtr> FDs;
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index f08c877fe..fc48c0405 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -363,6 +363,15 @@ LocalStore::~LocalStore()
} catch (...) {
ignoreException();
}
+
+ try {
+ if (fdTempRoots != -1) {
+ fdTempRoots.close();
+ unlink(fnTempRoots.c_str());
+ }
+ } catch (...) {
+ ignoreException();
+ }
}
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index dccdba533..e0aabdba4 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -244,6 +244,10 @@ private:
bool didSetSubstituterEnv;
+ /* The file to which we write our temporary roots. */
+ Path fnTempRoots;
+ AutoCloseFD fdTempRoots;
+
int getSchema();
void openDB(bool create);