libstore: simplify makeTemp{,Sibling}Path callers

There is now no risk of race conditions on a system with a functioning
entropy source, and the bespoke prefixes are either redundant to the
default or unnecessary.

Change-Id: I6a6a69641211c6bb979ea48ad30aecb1a53d03f0
This commit is contained in:
Emily
2025-11-14 14:58:15 +01:00
committed by Qyriad
parent d03b1eca57
commit 0b2fcd1bcd
3 changed files with 3 additions and 8 deletions
+1 -5
View File
@@ -769,11 +769,7 @@ void replaceValidPath(const Path & storePath, const Path & tmpPath)
we're repairing (say) Glibc, we end up with a broken system. */
Path oldPath;
if (pathExists(storePath)) {
do {
oldPath = makeTempSiblingPath(storePath);
// store paths are often directories so we can't just unlink() it
// let's make sure the path doesn't exist before we try to use it
} while (pathExists(oldPath));
oldPath = makeTempSiblingPath(storePath);
movePath(storePath, oldPath);
}
+1 -1
View File
@@ -98,7 +98,7 @@ void LocalStore::createTempRootsFile()
/* Create the temporary roots file for this process. */
while (true) {
auto tmp = makeTempPath(fnTempRoots, ".tmp");
auto tmp = makeTempPath(fnTempRoots);
AutoCloseFD fd{sys::open(tmp, O_RDWR | O_CREAT | O_EXCL | O_CLOEXEC, 0600)};
if (!fd && errno != EEXIST) {
throw SysError("opening lock file '%1%'", tmp);
+1 -2
View File
@@ -227,8 +227,7 @@ std::optional<struct ::stat> LocalStore::optimisePath_(
its timestamp back to 0. */
MakeReadOnly makeReadOnly(mustToggle ? dirOfPath : "");
Path tempLink = makeTempPath(config().realStoreDir, "/.tmp-link");
(void) sys::unlink(tempLink); // just in case; ignore errors
Path tempLink = makeTempPath(config().realStoreDir + "/");
if (sys::link(linkPath, tempLink) == -1) {
if (errno == EMLINK) {