diff options
Diffstat (limited to 'lib/common/FileStream.cpp')
-rw-r--r-- | lib/common/FileStream.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/lib/common/FileStream.cpp b/lib/common/FileStream.cpp index 5be8237c..68209b15 100644 --- a/lib/common/FileStream.cpp +++ b/lib/common/FileStream.cpp @@ -190,6 +190,7 @@ int FileStream::Read(void *pBuffer, int NBytes, int Timeout) } else { +<<<<<<< HEAD BOX_LOG_WIN_ERROR("Failed to read from file: " << mFileName); r = -1; } @@ -205,6 +206,24 @@ int FileStream::Read(void *pBuffer, int NBytes, int Timeout) { THROW_EXCEPTION(CommonException, OSFileReadError) } +======= + THROW_WIN_FILE_ERROR("Failed to read from file", mFileName, + CommonException, OSFileReadError); + } + + if(r == -1) + { + THROW_EXCEPTION(CommonException, OSFileReadError) + } +#else + int r = ::read(mOSFileHandle, pBuffer, NBytes); + if(r == -1) + { + THROW_SYS_FILE_ERROR("Failed to read from file", mFileName, + CommonException, OSFileReadError); + } +#endif +>>>>>>> 0.12 if(r == 0) { @@ -228,7 +247,11 @@ IOStream::pos_type FileStream::BytesLeftToRead() EMU_STRUCT_STAT st; if(EMU_FSTAT(mOSFileHandle, &st) != 0) { +<<<<<<< HEAD THROW_EXCEPTION(CommonException, OSFileError) +======= + BOX_LOG_SYS_ERROR(BOX_FILE_MESSAGE("Failed to stat file", mFileName)); +>>>>>>> 0.12 } return st.st_size - GetPosition(); @@ -262,14 +285,24 @@ void FileStream::Write(const void *pBuffer, int NBytes) if ((res == 0) || (numBytesWritten != (DWORD)NBytes)) { +<<<<<<< HEAD // DWORD err = GetLastError(); THROW_EXCEPTION(CommonException, OSFileWriteError) +======= + THROW_WIN_FILE_ERROR("Failed to write to file", mFileName, + CommonException, OSFileWriteError); +>>>>>>> 0.12 } #else if(::write(mOSFileHandle, pBuffer, NBytes) != NBytes) { +<<<<<<< HEAD BOX_LOG_SYS_ERROR("Failed to write to file: " << mFileName); THROW_EXCEPTION(CommonException, OSFileWriteError) +======= + THROW_SYS_FILE_ERROR("Failed to write to file", mFileName, + CommonException, OSFileWriteError); +>>>>>>> 0.12 } #endif } @@ -292,18 +325,35 @@ IOStream::pos_type FileStream::GetPosition() const #ifdef WIN32 LARGE_INTEGER conv; +<<<<<<< HEAD conv.HighPart = 0; conv.LowPart = 0; conv.LowPart = SetFilePointer(this->mOSFileHandle, 0, &conv.HighPart, FILE_CURRENT); +======= + conv.HighPart = 0; + conv.LowPart = SetFilePointer(this->mOSFileHandle, 0, &conv.HighPart, FILE_CURRENT); + + if(conv.LowPart == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) + { + THROW_WIN_FILE_ERROR("Failed to seek in file", mFileName, + CommonException, OSFileError); + } + +>>>>>>> 0.12 return (IOStream::pos_type)conv.QuadPart; #else // ! WIN32 off_t p = ::lseek(mOSFileHandle, 0, SEEK_CUR); if(p == -1) { +<<<<<<< HEAD THROW_EXCEPTION(CommonException, OSFileError) +======= + THROW_SYS_FILE_ERROR("Failed to seek in file", mFileName, + CommonException, OSFileError); +>>>>>>> 0.12 } return (IOStream::pos_type)p; @@ -328,18 +378,31 @@ void FileStream::Seek(IOStream::pos_type Offset, int SeekType) #ifdef WIN32 LARGE_INTEGER conv; +<<<<<<< HEAD +======= +>>>>>>> 0.12 conv.QuadPart = Offset; DWORD retVal = SetFilePointer(this->mOSFileHandle, conv.LowPart, &conv.HighPart, ConvertSeekTypeToOSWhence(SeekType)); if(retVal == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) { +<<<<<<< HEAD THROW_EXCEPTION(CommonException, OSFileError) +======= + THROW_WIN_FILE_ERROR("Failed to seek in file", mFileName, + CommonException, OSFileError); +>>>>>>> 0.12 } #else // ! WIN32 if(::lseek(mOSFileHandle, Offset, ConvertSeekTypeToOSWhence(SeekType)) == -1) { +<<<<<<< HEAD THROW_EXCEPTION(CommonException, OSFileError) +======= + THROW_SYS_FILE_ERROR("Failed to seek in file", mFileName, + CommonException, OSFileError); +>>>>>>> 0.12 } #endif // WIN32 @@ -365,12 +428,26 @@ void FileStream::Close() #ifdef WIN32 if(::CloseHandle(mOSFileHandle) == 0) +<<<<<<< HEAD #else if(::close(mOSFileHandle) != 0) #endif { THROW_EXCEPTION(CommonException, OSFileCloseError) } +======= + { + THROW_WIN_FILE_ERROR("Failed to close file", mFileName, + CommonException, OSFileCloseError); + } +#else // ! WIN32 + if(::close(mOSFileHandle) != 0) + { + THROW_SYS_FILE_ERROR("Failed to close file", mFileName, + CommonException, OSFileCloseError); + } +#endif // WIN32 +>>>>>>> 0.12 mOSFileHandle = INVALID_FILE; mIsEOF = true; @@ -401,7 +478,11 @@ bool FileStream::StreamDataLeft() // -------------------------------------------------------------------------- bool FileStream::StreamClosed() { +<<<<<<< HEAD return mIsEOF; +======= + return (mOSFileHandle == INVALID_FILE); +>>>>>>> 0.12 } // -------------------------------------------------------------------------- |