From 39ebb982ea423ed69ef354561fc2941637462bf1 Mon Sep 17 00:00:00 2001 From: Emily Date: Mon, 4 Aug 2025 15:10:28 +0100 Subject: [PATCH] libutil: add `makeTempSiblingPath` helper The prospective callers of this should probably be doing something smarter or more abstracted to begin with, but this is useful as an incremental improvement for call sites with existing `makeTempPath` logic in the face of filename length limits. Change-Id: I6a6a69644292f5bbf984a1df90192e06c6022b53 --- lix/libutil/file-system.cc | 5 +++++ lix/libutil/file-system.hh | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/lix/libutil/file-system.cc b/lix/libutil/file-system.cc index ebb46549e..36fe09748 100644 --- a/lix/libutil/file-system.cc +++ b/lix/libutil/file-system.cc @@ -706,6 +706,11 @@ Path makeTempPath(const Path & root, const Path & suffix) return fmt("%1%%2%-%3%-%4%", root, suffix, getpid(), counter.fetch_add(1, std::memory_order_relaxed)); } +Path makeTempSiblingPath(const Path & path) +{ + return makeTempPath(fs::path(path).remove_filename()); +} + void createSymlink(const Path & target, const Path & link) { if (sys::symlink(target, link)) { diff --git a/lix/libutil/file-system.hh b/lix/libutil/file-system.hh index 8b9100bdc..395eed0ea 100644 --- a/lix/libutil/file-system.hh +++ b/lix/libutil/file-system.hh @@ -318,6 +318,11 @@ Path createTempSubdir(const Path & parent, const Path & prefix = "nix", */ Path makeTempPath(const Path & root, const Path & suffix = ".tmp"); +/** + * Return temporary path in the same directory as a given path. + */ +Path makeTempSiblingPath(const Path & path); + /** * Used in various places. */