home *** CD-ROM | disk | FTP | other *** search
- //**********************************************************************************
- // REJECT.EXE - Reject data table builder for DOOM
- // Copyright (C) 1994 L.M.WITEK
- //
- // This program is free software; you can redistribute it and/or modify
- // it under the terms of the GNU General Public License as published by
- // the Free Software Foundation; either version 1, or (at your option)
- // any later version.
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- //
- // You should have received a copy of the GNU General Public License
- // along with this program; if not, write to the Free Software
- // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- //**********************************************************************************
-
- #include "fileio.hpp"
-
- BOOLEAN CFile::SetError (int exp)
- {
- if (exp)
- {
- errorcode = errno;
- return (bFALSE);
- }
- else
- {
- errorcode = 0;
- return (bTRUE);
- }
- }
-
- void CFile::Close ()
- {
- if (fh != -1)
- close (fh);
- }
-
- BOOLEAN CFile::Open (XString name, int oflag)
- {
- fh = open (name, oflag, S_IWRITE | S_IREAD);
- return SetError (fh == -1);
- }
-
- long CFile::Tell ()
- {
- long pos = tell (fh);
- SetError (pos == -1);
- return pos;
- }
-
- long CFile::Size ()
- {
- long sz = filelength (fh);
- SetError (sz == -1);
- return sz;
- }
-
- long CFile::Seek (long pos)
- {
- long newpos = lseek (fh, pos, SEEK_SET);
- SetError (newpos == -1);
- return newpos;
- }
-
- BOOLEAN CFile::IsOpen ()
- {
- if (fh == -1)
- return (bFALSE);
- else
- return (bTRUE);
- }
-
- int CFile::Read (void *buffer, size_t size)
- {
- int r = read (fh, buffer, size);
- SetError (r == -1);
- return r;
- }
-
- MemHandle CFile::Read (size_t size)
- {
- MemHandle buffer (size);
- int r = read (fh, buffer, size);
- SetError (r == -1);
- if (r < size)
- buffer.Shrink (r);
- return buffer;
- }
-
- int CFile::Write (MemHandle buffer)
- {
- int written = write (fh, buffer, buffer.Size ());
- SetError (written == -1);
- return written;
- }
-