From f98dfd8f2f853aeb33eff572a9658f2993cc17bb Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Mon, 21 Mar 2022 10:06:10 +0100 Subject: Move MarkAsDeleteOnClose to BasicFile --- zenstore/basicfile.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'zenstore/basicfile.cpp') diff --git a/zenstore/basicfile.cpp b/zenstore/basicfile.cpp index 17a57309d..efa91f107 100644 --- a/zenstore/basicfile.cpp +++ b/zenstore/basicfile.cpp @@ -296,6 +296,31 @@ BasicFile::SetFileSize(uint64_t FileSize) #endif } +void +BasicFile::MarkAsDeleteOnClose(std::error_code& Ec) +{ + Ec.clear(); +#if ZEN_PLATFORM_WINDOWS + FILE_DISPOSITION_INFO Fdi{}; + Fdi.DeleteFile = TRUE; + BOOL Success = SetFileInformationByHandle(m_FileHandle, FileDispositionInfo, &Fdi, sizeof Fdi); + if (!Success) + { + Ec = MakeErrorCodeFromLastError(); + } +#elif ZEN_PLATFORM_LINUX || ZEN_PLATFORM_MAC + std::filesystem::path SourcePath = PathFromHandle(FileRef.FileHandle); + if (unlink(SourcePath.c_str()) < 0) + { + int UnlinkError = zen::GetLastError(); + if (UnlinkError != ENOENT) + { + Ec = MakeErrorCode(UnlinkError); + } + } +#endif +} + ////////////////////////////////////////////////////////////////////////// TemporaryFile::~TemporaryFile() -- cgit v1.2.3