[VFS/STFS] Use xe::filesystem::OpenFile instead of memory-mapping

Adds StfsDirectoryEntry / StfsDirectoryBlock to make it easier to fread()
This commit is contained in:
emoose
2021-05-11 03:26:39 +01:00
committed by Rick Gibbed
parent 2659b70c90
commit 478bb90922
6 changed files with 312 additions and 172 deletions

View File

@@ -47,13 +47,14 @@ X_STATUS StfsContainerFile::ReadSync(void* buffer, size_t buffer_length,
continue;
}
uint8_t* src = entry_->mmap()->at(record.file)->data();
size_t read_offset =
(byte_offset > src_offset) ? byte_offset - src_offset : 0;
size_t read_length =
std::min(record.length - read_offset, remaining_length);
std::memcpy(p, src + record.offset + read_offset, read_length);
auto& file = entry_->files()->at(record.file);
xe::filesystem::Seek(file, record.offset + read_offset, SEEK_SET);
fread(p, 1, read_length, file);
p += read_length;
src_offset += record.length;