Annotation of elwix/tools/oldlzma/SRC/Common/C_FileIO.cpp, revision 1.1
1.1 ! misho 1: // Common/C_FileIO.h
! 2:
! 3: #include "C_FileIO.h"
! 4:
! 5: #include <fcntl.h>
! 6: #include <unistd.h>
! 7:
! 8: namespace NC {
! 9: namespace NFile {
! 10: namespace NIO {
! 11:
! 12: bool CFileBase::OpenBinary(const char *name, int flags)
! 13: {
! 14: #ifdef O_BINARY
! 15: flags |= O_BINARY;
! 16: #endif
! 17: Close();
! 18: _handle = ::open(name, flags, 0666);
! 19: return _handle != -1;
! 20: }
! 21:
! 22: bool CFileBase::Close()
! 23: {
! 24: if(_handle == -1)
! 25: return true;
! 26: if (close(_handle) != 0)
! 27: return false;
! 28: _handle = -1;
! 29: return true;
! 30: }
! 31:
! 32: bool CFileBase::GetLength(UInt64 &length) const
! 33: {
! 34: off_t curPos = Seek(0, SEEK_CUR);
! 35: off_t lengthTemp = Seek(0, SEEK_END);
! 36: Seek(curPos, SEEK_SET);
! 37: length = (UInt64)lengthTemp;
! 38: return true;
! 39: }
! 40:
! 41: off_t CFileBase::Seek(off_t distanceToMove, int moveMethod) const
! 42: {
! 43: return ::lseek(_handle, distanceToMove, moveMethod);
! 44: }
! 45:
! 46: /////////////////////////
! 47: // CInFile
! 48:
! 49: bool CInFile::Open(const char *name)
! 50: {
! 51: return CFileBase::OpenBinary(name, O_RDONLY);
! 52: }
! 53:
! 54: ssize_t CInFile::Read(void *data, size_t size)
! 55: {
! 56: return read(_handle, data, size);
! 57: }
! 58:
! 59: /////////////////////////
! 60: // COutFile
! 61:
! 62: bool COutFile::Create(const char *name, bool createAlways)
! 63: {
! 64: if (createAlways)
! 65: {
! 66: Close();
! 67: _handle = ::creat(name, 0666);
! 68: return _handle != -1;
! 69: }
! 70: return OpenBinary(name, O_CREAT | O_EXCL | O_WRONLY);
! 71: }
! 72:
! 73: ssize_t COutFile::Write(const void *data, size_t size)
! 74: {
! 75: return write(_handle, data, size);
! 76: }
! 77:
! 78: }}}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>