Files
FlaxEngine/Source/Engine/Utilities/AnsiPathTempFile.h

38 lines
937 B
C

// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Core/Types/String.h"
#include "Engine/Platform/FileSystem.h"
// Small utility that uses temporary file to properly handle non-ANSI paths for 3rd party libs.
struct AnsiPathTempFile
{
StringAnsi Path;
String TempPath;
bool Temp;
AnsiPathTempFile(const String& path)
{
if (path.IsANSI() == false)
{
// Use temporary file
FileSystem::GetTempFilePath(TempPath);
if (TempPath.IsANSI() && !FileSystem::CopyFile(TempPath, path))
{
Path = TempPath.ToStringAnsi();
return;
}
TempPath.Clear();
}
Path = path.ToStringAnsi();
}
~AnsiPathTempFile()
{
// Cleanup temporary file after use
if (TempPath.HasChars())
FileSystem::DeleteFile(TempPath);
}
};