Added FUnixPlatformFile::CopyFile() that differs from the generic implementation in that it also copies the file permission bits.

This is similar to CL 2421073, 2424491 for FApplePlatformFile.

[at]Brandon.Schaefer, [at]Robert.Seiver
[FYI] Will.Damon
#jira none
#preflight trivial

#ROBOMERGE-AUTHOR: michael.sartain
#ROBOMERGE-SOURCE: CL 18604349 in //UE5/Release-5.0/... via CL 18604376 via CL 18604394
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18604413 by michael sartain in ue5-main branch]
This commit is contained in:
michael sartain
2022-01-13 15:57:24 -05:00
parent 439c6d0248
commit fc8351a183
2 changed files with 17 additions and 0 deletions

View File

@@ -1148,6 +1148,21 @@ bool FUnixPlatformFile::IterateDirectoryCommon(const TCHAR* Directory, const TFu
return Result;
}
bool FUnixPlatformFile::CopyFile(const TCHAR* To, const TCHAR* From, EPlatformFileRead ReadFlags, EPlatformFileWrite WriteFlags)
{
bool Result = IPlatformFile::CopyFile(To, From, ReadFlags, WriteFlags);
if (Result)
{
struct stat FileInfo;
if (stat(TCHAR_TO_UTF8(*NormalizeFilename(From, false)), &FileInfo) == 0)
{
FileInfo.st_mode |= S_IWUSR;
chmod(TCHAR_TO_UTF8(*NormalizeFilename(To, true)), FileInfo.st_mode);
}
}
return Result;
}
bool FUnixPlatformFile::CreateDirectoriesFromPath(const TCHAR* Path)
{
// if the file already exists, then directories exist.

View File

@@ -54,6 +54,8 @@ public:
virtual bool IterateDirectory(const TCHAR* Directory, FDirectoryVisitor& Visitor) override;
virtual bool IterateDirectoryStat(const TCHAR* Directory, FDirectoryStatVisitor& Visitor) override;
virtual bool CopyFile(const TCHAR* To, const TCHAR* From, EPlatformFileRead ReadFlags = EPlatformFileRead::None, EPlatformFileWrite WriteFlags = EPlatformFileWrite::None) override;
protected:
bool IterateDirectoryCommon(const TCHAR* Directory, const TFunctionRef<bool(struct dirent*)>& Visitor);