Kaydet (Commit) 52ad6005 authored tarafından Riccardo Magliocchetti's avatar Riccardo Magliocchetti

sal: use pread / pwrite on every *nix

pread / pwrite don't look as a Linux and Solaris privilege.

Change-Id: Ifb2e88445d4064c13a406007bfd523ae0caa38e5
üst c40cd8a4
...@@ -379,8 +379,6 @@ oslFileError FileHandle_Impl::readAt ( ...@@ -379,8 +379,6 @@ oslFileError FileHandle_Impl::readAt (
return osl_File_E_None; return osl_File_E_None;
} }
#if defined(LINUX) || defined(SOLARIS)
ssize_t nBytes = ::pread (m_fd, pBuffer, nBytesRequested, nOffset); ssize_t nBytes = ::pread (m_fd, pBuffer, nBytesRequested, nOffset);
if ((-1 == nBytes) && (EOVERFLOW == errno)) if ((-1 == nBytes) && (EOVERFLOW == errno))
{ {
...@@ -393,22 +391,6 @@ oslFileError FileHandle_Impl::readAt ( ...@@ -393,22 +391,6 @@ oslFileError FileHandle_Impl::readAt (
if (-1 == nBytes) if (-1 == nBytes)
return oslTranslateFileError (OSL_FET_ERROR, errno); return oslTranslateFileError (OSL_FET_ERROR, errno);
#else /* !(LINUX || SOLARIS) */
if (nOffset != m_offset)
{
if (-1 == ::lseek (m_fd, nOffset, SEEK_SET))
return oslTranslateFileError (OSL_FET_ERROR, errno);
m_offset = nOffset;
}
ssize_t nBytes = ::read (m_fd, pBuffer, nBytesRequested);
if (-1 == nBytes)
return oslTranslateFileError (OSL_FET_ERROR, errno);
m_offset += nBytes;
#endif /* !(LINUX || SOLARIS) */
OSL_FILE_TRACE("FileHandle_Impl::readAt(%d, %lld, %ld)", m_fd, nOffset, nBytes); OSL_FILE_TRACE("FileHandle_Impl::readAt(%d, %lld, %ld)", m_fd, nOffset, nBytes);
*pBytesRead = nBytes; *pBytesRead = nBytes;
return osl_File_E_None; return osl_File_E_None;
...@@ -428,28 +410,10 @@ oslFileError FileHandle_Impl::writeAt ( ...@@ -428,28 +410,10 @@ oslFileError FileHandle_Impl::writeAt (
if (!(m_state & STATE_WRITEABLE)) if (!(m_state & STATE_WRITEABLE))
return osl_File_E_BADF; return osl_File_E_BADF;
#if defined(LINUX) || defined(SOLARIS)
ssize_t nBytes = ::pwrite (m_fd, pBuffer, nBytesToWrite, nOffset); ssize_t nBytes = ::pwrite (m_fd, pBuffer, nBytesToWrite, nOffset);
if (-1 == nBytes) if (-1 == nBytes)
return oslTranslateFileError (OSL_FET_ERROR, errno); return oslTranslateFileError (OSL_FET_ERROR, errno);
#else /* !(LINUX || SOLARIS) */
if (nOffset != m_offset)
{
if (-1 == ::lseek (m_fd, nOffset, SEEK_SET))
return oslTranslateFileError (OSL_FET_ERROR, errno);
m_offset = nOffset;
}
ssize_t nBytes = ::write (m_fd, pBuffer, nBytesToWrite);
if (-1 == nBytes)
return oslTranslateFileError (OSL_FET_ERROR, errno);
m_offset += nBytes;
#endif /* !(LINUX || SOLARIS) */
OSL_FILE_TRACE("FileHandle_Impl::writeAt(%d, %lld, %ld)", m_fd, nOffset, nBytes); OSL_FILE_TRACE("FileHandle_Impl::writeAt(%d, %lld, %ld)", m_fd, nOffset, nBytes);
m_size = std::max (m_size, sal::static_int_cast< sal_uInt64 >(nOffset + nBytes)); m_size = std::max (m_size, sal::static_int_cast< sal_uInt64 >(nOffset + nBytes));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment