aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-02-15 14:48:38 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-02-15 15:01:26 +0100
commitc8f4d89a345cc06b64b0137e15567ec41c00881c (patch)
tree20e7211ba624e404fa8226be6d40b9f7f4526cf9
parente03d6e09983bb5ad99352933c4d2f21b139294d2 (diff)
Expose the export magic value and move LocalStore::queryReferences to Store
-rw-r--r--src/libstore/local-store.cc17
-rw-r--r--src/libstore/local-store.hh2
-rw-r--r--src/libstore/store-api.cc7
-rw-r--r--src/libstore/store-api.hh15
4 files changed, 19 insertions, 22 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index 7c5945b2a..0b84e7027 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -953,14 +953,6 @@ PathSet LocalStore::queryAllValidPaths()
}
-void LocalStore::queryReferences(const Path & path,
- PathSet & references)
-{
- ValidPathInfo info = queryPathInfo(path);
- references.insert(info.references.begin(), info.references.end());
-}
-
-
void LocalStore::queryReferrers_(const Path & path, PathSet & referrers)
{
SQLiteStmtUse use(stmtQueryReferrers);
@@ -1493,9 +1485,6 @@ struct HashAndWriteSink : Sink
};
-#define EXPORT_MAGIC 0x4558494e
-
-
static void checkSecrecy(const Path & path)
{
struct stat st;
@@ -1532,7 +1521,7 @@ void LocalStore::exportPath(const Path & path, bool sign,
PathSet references;
queryReferences(path, references);
- hashAndWriteSink << EXPORT_MAGIC << path << references << queryDeriver(path);
+ hashAndWriteSink << exportMagic << path << references << queryDeriver(path);
if (sign) {
Hash hash = hashAndWriteSink.currentHash();
@@ -1608,8 +1597,8 @@ Path LocalStore::importPath(bool requireSignature, Source & source)
restorePath(unpacked, hashAndReadSource);
- unsigned int magic = readInt(hashAndReadSource);
- if (magic != EXPORT_MAGIC)
+ uint32_t magic = readInt(hashAndReadSource);
+ if (magic != exportMagic)
throw Error("Nix archive cannot be imported; wrong format");
Path dstPath = readStorePath(hashAndReadSource);
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index b6d39d345..a96000d9f 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -108,8 +108,6 @@ public:
Hash queryPathHash(const Path & path) override;
- void queryReferences(const Path & path, PathSet & references) override;
-
void queryReferrers(const Path & path, PathSet & referrers) override;
Path queryDeriver(const Path & path) override;
diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc
index 2f4440182..54b6c2b5c 100644
--- a/src/libstore/store-api.cc
+++ b/src/libstore/store-api.cc
@@ -224,6 +224,13 @@ Path computeStorePathForText(const string & name, const string & s,
}
+void Store::queryReferences(const Path & path, PathSet & references)
+{
+ ValidPathInfo info = queryPathInfo(path);
+ references.insert(info.references.begin(), info.references.end());
+}
+
+
/* Return a string accepted by decodeValidPathInfo() that
registers the specified paths as valid. Note: it's the
responsibility of the caller to provide a closure. */
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index f6fb6c834..54029bc13 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -12,6 +12,13 @@
namespace nix {
+/* Size of the hash part of store paths, in base-32 characters. */
+const size_t storePathHashLen = 32; // i.e. 160 bits
+
+/* Magic header of exportPath() output. */
+const uint32_t exportMagic = 0x4558494e;
+
+
typedef std::map<Path, Path> Roots;
@@ -156,10 +163,9 @@ public:
/* Query the hash of a valid path. */
virtual Hash queryPathHash(const Path & path) = 0;
- /* Query the set of outgoing FS references for a store path. The
+ /* Query the set of outgoing FS references for a store path. The
result is not cleared. */
- virtual void queryReferences(const Path & path,
- PathSet & references) = 0;
+ virtual void queryReferences(const Path & path, PathSet & references);
/* Queries the set of incoming FS references for a store path.
The result is not cleared. */
@@ -339,9 +345,6 @@ public:
};
-const size_t storePathHashLen = 32; // base-32 characters, i.e. 160 bits
-
-
/* !!! These should be part of the store API, I guess. */
/* Throw an exception if `path' is not directly in the Nix store. */