Source code

Revision control

Copy as Markdown

Other Tools

// Common/C_FileIO.cpp↩
#include "C_FileIO.h"
#include <fcntl.h>↩
#ifdef _WIN32↩
#include <io.h>↩
#else
#include <unistd.h>↩
#endif
namespace NC {↩
namespace NFile {↩
namespace NIO {↩
bool CFileBase::OpenBinary(const char *name, int flags)↩
{↩
#ifdef O_BINARY↩
flags |= O_BINARY;↩
#endif
Close();↩
_handle = ::open(name, flags, 0666);↩
return _handle != -1;↩
}↩
bool CFileBase::Close()↩
{↩
if (_handle == -1)↩
return true;↩
if (close(_handle) != 0)↩
return false;↩
_handle = -1;↩
return true;↩
}↩
bool CFileBase::GetLength(UInt64 &length) const
{↩
off_t curPos = Seek(0, SEEK_CUR);↩
off_t lengthTemp = Seek(0, SEEK_END);↩
Seek(curPos, SEEK_SET);↩
length = (UInt64)lengthTemp;↩
return true;↩
}↩
off_t CFileBase::Seek(off_t distanceToMove, int moveMethod) const
{↩
return ::lseek(_handle, distanceToMove, moveMethod);↩
}↩
/////////////////////////↩
// CInFile↩
bool CInFile::Open(const char *name)↩
{↩
return CFileBase::OpenBinary(name, O_RDONLY);↩
}↩
bool CInFile::OpenShared(const char *name, bool)↩
{↩
return Open(name);↩
}↩
ssize_t CInFile::Read(void *data, size_t size)↩
{↩
return read(_handle, data, size);↩
}↩
/////////////////////////↩
// COutFile↩
bool COutFile::Create(const char *name, bool createAlways)↩
{↩
if (createAlways)↩
{↩
Close();↩
_handle = ::creat(name, 0666);↩
return _handle != -1;↩
}↩
return OpenBinary(name, O_CREAT | O_EXCL | O_WRONLY);↩
}↩
bool COutFile::Open(const char *name, DWORD creationDisposition)↩
{↩
return Create(name, false);↩
}↩
ssize_t COutFile::Write(const void *data, size_t size)↩
{↩
return write(_handle, data, size);↩
}↩
}}}↩