CDImage: Work around cue parser requiring new line at end

This commit is contained in:
Connor McLaughlin
2020-08-05 03:14:06 +10:00
parent 466e4099d4
commit a7dbb9ab28
3 changed files with 41 additions and 4 deletions

View File

@ -452,6 +452,26 @@ std::optional<std::vector<u8>> ReadBinaryFile(const char* filename)
return res;
}
std::optional<std::string> ReadFileToString(const char* filename)
{
ManagedCFilePtr fp = OpenManagedCFile(filename, "rb");
if (!fp)
return std::nullopt;
std::fseek(fp.get(), 0, SEEK_END);
long size = std::ftell(fp.get());
std::fseek(fp.get(), 0, SEEK_SET);
if (size < 0)
return std::nullopt;
std::string res;
res.resize(static_cast<size_t>(size));
if (size > 0 && std::fread(res.data(), 1u, static_cast<size_t>(size), fp.get()) != static_cast<size_t>(size))
return std::nullopt;
return res;
}
bool WriteBinaryFile(const char* filename, const void* data, size_t data_length)
{
ManagedCFilePtr fp = OpenManagedCFile(filename, "wb");
@ -464,6 +484,18 @@ bool WriteBinaryFile(const char* filename, const void* data, size_t data_length)
return true;
}
bool WriteFileToString(const char* filename, const std::string_view& sv)
{
ManagedCFilePtr fp = OpenManagedCFile(filename, "wb");
if (!fp)
return false;
if (sv.length() > 0 && std::fwrite(sv.data(), 1u, sv.length(), fp.get()) != sv.length())
return false;
return true;
}
void BuildOSPath(char* Destination, u32 cbDestination, const char* Path)
{
u32 i;