Expose the export magic value and move LocalStore::queryReferences to Store
This commit is contained in:
		
							parent
							
								
									e03d6e0998
								
							
						
					
					
						commit
						c8f4d89a34
					
				
					 4 changed files with 19 additions and 22 deletions
				
			
		|  | @ -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); | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
|  | @ -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. */ | ||||
|  |  | |||
|  | @ -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; | ||||
| 
 | ||||
| 
 | ||||
|  | @ -158,8 +165,7 @@ public: | |||
| 
 | ||||
|     /* 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. */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue