aboutsummaryrefslogtreecommitdiff
path: root/src/store.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/store.cc')
-rw-r--r--src/store.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/store.cc b/src/store.cc
index 7f10c6377..2d223313b 100644
--- a/src/store.cc
+++ b/src/store.cc
@@ -175,7 +175,8 @@ void registerSuccessor(const Transaction & txn,
Paths revs;
nixDB.queryStrings(txn, dbSuccessorsRev, sucPath, revs);
- revs.push_back(srcPath);
+ if (find(revs.begin(), revs.end(), srcPath) == revs.end())
+ revs.push_back(srcPath);
nixDB.setString(txn, dbSuccessors, srcPath, sucPath);
nixDB.setStrings(txn, dbSuccessorsRev, sucPath, revs);
@@ -212,7 +213,8 @@ void registerSubstitute(const Path & srcPath, const Path & subPath)
Paths revs;
nixDB.queryStrings(txn, dbSubstitutesRev, subPath, revs);
- revs.push_back(srcPath);
+ if (find(revs.begin(), revs.end(), srcPath) == revs.end())
+ revs.push_back(srcPath);
nixDB.setStrings(txn, dbSubstitutes, srcPath, subs);
nixDB.setStrings(txn, dbSubstitutesRev, subPath, revs);
@@ -221,6 +223,14 @@ void registerSubstitute(const Path & srcPath, const Path & subPath)
}
+Paths querySubstitutes(const Path & srcPath)
+{
+ Paths subPaths;
+ nixDB.queryStrings(noTxn, dbSubstitutes, srcPath, subPaths);
+ return subPaths;
+}
+
+
void registerValidPath(const Transaction & txn, const Path & _path)
{
Path path(canonPath(_path));