summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/NFSBlob.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2023-10-01 11:39:37 -0400
committerGitHub <noreply@github.com>2023-10-01 11:39:37 -0400
commitcd366c4f46dad509b959a05afad3847218ffe5f6 (patch)
treef8baa6b501072d3402ad9462a6c556e419b75a0b /Source/Core/DiscIO/NFSBlob.cpp
parentd55d878b178b57f1aa4b0eb6235194d44c6c6f6b (diff)
parent335cf4f2db4160ebbf387aeb19dc637182c91c5a (diff)
Merge pull request #12036 from LillyJadeKatrin/deep-copy-volume
Added CopyReader to BlobReader and all subclasses
Diffstat (limited to 'Source/Core/DiscIO/NFSBlob.cpp')
-rw-r--r--Source/Core/DiscIO/NFSBlob.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/Source/Core/DiscIO/NFSBlob.cpp b/Source/Core/DiscIO/NFSBlob.cpp
index 3960fff75e..4b33596802 100644
--- a/Source/Core/DiscIO/NFSBlob.cpp
+++ b/Source/Core/DiscIO/NFSBlob.cpp
@@ -160,11 +160,20 @@ std::unique_ptr<NFSFileReader> NFSFileReader::Create(File::IOFile first_file,
NFSFileReader::NFSFileReader(std::vector<NFSLBARange> lba_ranges, std::vector<File::IOFile> files,
Key key, u64 raw_size)
: m_lba_ranges(std::move(lba_ranges)), m_files(std::move(files)),
- m_aes_context(Common::AES::CreateContextDecrypt(key.data())), m_raw_size(raw_size)
+ m_aes_context(Common::AES::CreateContextDecrypt(key.data())), m_raw_size(raw_size), m_key(key)
{
m_data_size = CalculateExpectedDataSize(m_lba_ranges);
}
+std::unique_ptr<BlobReader> NFSFileReader::CopyReader() const
+{
+ std::vector<File::IOFile> new_files{};
+ for (const File::IOFile& file : m_files)
+ new_files.push_back(file.Duplicate("rb"));
+ return std::unique_ptr<NFSFileReader>(
+ new NFSFileReader(m_lba_ranges, std::move(new_files), m_key, m_raw_size));
+}
+
u64 NFSFileReader::GetDataSize() const
{
return m_data_size;