diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2025-10-29 20:26:47 -0500 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2025-11-09 03:08:14 -0600 |
| commit | 239330017c97fa3f6b4b2670ab570e822d6affb0 (patch) | |
| tree | fca744551834dc4788eab4d32bb969073b3a2157 /Source/Core/DiscIO/DirectoryBlob.cpp | |
| parent | b98acb9a37a80b22a0da1bee7be0c4c44adadb56 (diff) | |
DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe.
Diffstat (limited to 'Source/Core/DiscIO/DirectoryBlob.cpp')
| -rw-r--r-- | Source/Core/DiscIO/DirectoryBlob.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/Source/Core/DiscIO/DirectoryBlob.cpp b/Source/Core/DiscIO/DirectoryBlob.cpp index d0ee8bf803..11acc8eb41 100644 --- a/Source/Core/DiscIO/DirectoryBlob.cpp +++ b/Source/Core/DiscIO/DirectoryBlob.cpp @@ -4,9 +4,7 @@ #include "DiscIO/DirectoryBlob.h" #include <algorithm> -#include <array> #include <cstring> -#include <locale> #include <map> #include <memory> #include <set> @@ -17,14 +15,12 @@ #include "Common/Align.h" #include "Common/Assert.h" -#include "Common/CommonPaths.h" #include "Common/CommonTypes.h" +#include "Common/DirectIOFile.h" #include "Common/FileUtil.h" -#include "Common/IOFile.h" #include "Common/Logging/Log.h" #include "Common/StringUtil.h" #include "Common/Swap.h" -#include "Core/Boot/DolReader.h" #include "Core/IOS/ES/Formats.h" #include "DiscIO/Blob.h" #include "DiscIO/DiscUtils.h" @@ -97,9 +93,8 @@ bool DiscContent::Read(u64* offset, u64* length, u8** buffer, DirectoryBlobReade if (std::holds_alternative<ContentFile>(m_content_source)) { const auto& content = std::get<ContentFile>(m_content_source); - File::IOFile file(content.m_filename, "rb"); - if (!file.Seek(content.m_offset + offset_in_content, File::SeekOrigin::Begin) || - !file.ReadBytes(*buffer, bytes_to_read)) + File::DirectIOFile file(content.m_filename, File::AccessMode::Read); + if (!file.OffsetRead(content.m_offset + offset_in_content, *buffer, bytes_to_read)) { return false; } @@ -1013,9 +1008,9 @@ void DirectoryBlobPartition::SetBI2(std::vector<u8> bi2) u64 DirectoryBlobPartition::SetApploaderFromFile(const std::string& path) { - File::IOFile file(path, "rb"); + File::DirectIOFile file(path, File::AccessMode::Read); std::vector<u8> apploader(file.GetSize()); - file.ReadBytes(apploader.data(), apploader.size()); + file.Read(apploader); return SetApploader(std::move(apploader), path); } @@ -1256,10 +1251,9 @@ void DirectoryBlobPartition::WriteDirectory(std::vector<u8>* fst_data, static size_t ReadFileToVector(const std::string& path, std::vector<u8>* vector) { - File::IOFile file(path, "rb"); - size_t bytes_read; - file.ReadArray<u8>(vector->data(), std::min<u64>(file.GetSize(), vector->size()), &bytes_read); - return bytes_read; + File::DirectIOFile file(path, File::AccessMode::Read); + file.Read(vector->data(), std::min<u64>(file.GetSize(), vector->size())); + return file.Tell(); } static void PadToAddress(u64 start_address, u64* address, u64* length, u8** buffer) |
