2 * Copyright 2014, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
23 BFdIO::BFdIO(int fd
, bool keepFd
)
39 BFdIO::SetTo(int fd
, bool keepFd
)
51 if (fOwnsFd
&& fFd
>= 0)
60 BFdIO::Read(void* buffer
, size_t size
)
62 ssize_t bytesRead
= read(fFd
, buffer
, size
);
63 return bytesRead
>= 0 ? bytesRead
: errno
;
68 BFdIO::Write(const void* buffer
, size_t size
)
70 ssize_t bytesWritten
= write(fFd
, buffer
, size
);
71 return bytesWritten
>= 0 ? bytesWritten
: errno
;
76 BFdIO::ReadAt(off_t position
, void* buffer
, size_t size
)
78 ssize_t bytesRead
= pread(fFd
, buffer
, size
, position
);
79 return bytesRead
>= 0 ? bytesRead
: errno
;
84 BFdIO::WriteAt(off_t position
, const void* buffer
, size_t size
)
86 ssize_t bytesWritten
= pwrite(fFd
, buffer
, size
, position
);
87 return bytesWritten
>= 0 ? bytesWritten
: errno
;
92 BFdIO::Seek(off_t position
, uint32 seekMode
)
94 off_t newPosition
= lseek(fFd
, position
, seekMode
);
95 return newPosition
>= 0 ? newPosition
: errno
;
100 BFdIO::Position() const
102 return const_cast<BFdIO
*>(this)->BFdIO::Seek(0, SEEK_CUR
);
107 BFdIO::SetSize(off_t size
)
109 return ftruncate(fFd
, size
) == 0 ? B_OK
: errno
;
114 BFdIO::GetSize(off_t
* _size
) const
117 if (fstat(fFd
, &st
) != 0)