Annotation of elwix/tools/oldlzma/SRC/Common/C_FileIO.cpp, revision 1.1.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>