From ee822d85d6de7db85416190cf843ad74147519cf Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Sat, 14 Mar 2020 20:58:55 +0100 Subject: util: use stronger-guarantee rename method Use std::filesystem::rename() instead of std::rename(). We rely on the destination to be overwritten if it exists, but std::rename()'s behavior is implementation-defined in this case. --- src/util/system.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/util/system.h') diff --git a/src/util/system.h b/src/util/system.h index 6b7bd38cc2..a72ba3f3ed 100644 --- a/src/util/system.h +++ b/src/util/system.h @@ -69,7 +69,13 @@ void DirectoryCommit(const fs::path &dirname); bool TruncateFile(FILE *file, unsigned int length); int RaiseFileDescriptorLimit(int nMinFD); void AllocateFileRange(FILE *file, unsigned int offset, unsigned int length); + +/** + * Rename src to dest. + * @return true if the rename was successful. + */ [[nodiscard]] bool RenameOver(fs::path src, fs::path dest); + bool LockDirectory(const fs::path& directory, const std::string lockfile_name, bool probe_only=false); void UnlockDirectory(const fs::path& directory, const std::string& lockfile_name); bool DirIsWritable(const fs::path& directory); -- cgit v1.2.3