diff options
| author | Martin Ridgers <[email protected]> | 2021-10-18 11:21:32 +0200 |
|---|---|---|
| committer | Martin Ridgers <[email protected]> | 2021-10-18 11:21:32 +0200 |
| commit | de043ca777d6dfc3af7557a484e2bd52883a6353 (patch) | |
| tree | b8e74f6016d44699827896a20c96951d399c0ef0 /zencore/iobuffer.cpp | |
| parent | Merged main (diff) | |
| download | zen-de043ca777d6dfc3af7557a484e2bd52883a6353.tar.xz zen-de043ca777d6dfc3af7557a484e2bd52883a6353.zip | |
Implemented ReadFromFileMaybe() for POSIX
Diffstat (limited to 'zencore/iobuffer.cpp')
| -rw-r--r-- | zencore/iobuffer.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/zencore/iobuffer.cpp b/zencore/iobuffer.cpp index 63d5ac98d..04ea7c26b 100644 --- a/zencore/iobuffer.cpp +++ b/zencore/iobuffer.cpp @@ -391,18 +391,22 @@ IoBufferBuilder::ReadFromFileMaybe(IoBuffer& InBuffer) DWORD dwNumberOfBytesRead = 0; BOOL Success = ::ReadFile(FileRef.FileHandle, OutBuffer.MutableData(), DWORD(NumberOfBytesToRead), &dwNumberOfBytesRead, &Ovl); +#else + int Fd = int(intptr_t(FileRef.FileHandle)); + int Result = pread(Fd, OutBuffer.MutableData(), size_t(FileRef.FileChunkSize), off_t(FileRef.FileChunkOffset)); + bool Success = (Result < 0); + + uint32_t dwNumberOfBytesRead = uint32_t(Result); +#endif if (!Success) { ThrowLastError("ReadFile failed in IoBufferBuilder::ReadFromFileMaybe"); } - ZEN_ASSERT(dwNumberOfBytesRead == NumberOfBytesToRead); + ZEN_ASSERT(dwNumberOfBytesRead == FileRef.FileChunkSize); return OutBuffer; -#else -# error Needs implementation -#endif } else { |