diff options
Diffstat (limited to 'scumm/smush/chunk.cpp')
-rw-r--r-- | scumm/smush/chunk.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/scumm/smush/chunk.cpp b/scumm/smush/chunk.cpp index 1c70919c01..efc3d61953 100644 --- a/scumm/smush/chunk.cpp +++ b/scumm/smush/chunk.cpp @@ -34,33 +34,33 @@ */ class FilePtr { char * _filename; - FILE * _ifs; + File _ifs; int32 _refcount; int32 _curPos; public: - FilePtr(const char * fname) : _refcount(1), _curPos(0) { + FilePtr(const char * fname, const char * directory) : _refcount(1), _curPos(0) { debug(9, "FilePtr created for %s", fname); _filename = strdup(fname); - _ifs = fopen_nocase(fname, "rb"); - if(_ifs == NULL) error("FilePtr unable to read file \"%s\"", fname); + _ifs.open(fname, directory); + if(_ifs.isOpen() == false) error("FilePtr unable to read file %s", fname); } ~FilePtr() { debug(9, "FilePtr destroyed for %s", _filename); free(_filename); - fclose(_ifs); + _ifs.close(); } int32 tell() { return _curPos; } bool seek(int32 pos) { if(pos != _curPos) { - fseek(_ifs, pos, SEEK_SET); + _ifs.seek(pos, SEEK_SET); _curPos = pos; } return true; } bool read(void * ptr, int32 size) { - fread(ptr, size, 1, _ifs); + _ifs.read(ptr, size); _curPos += size; return true; } @@ -90,8 +90,8 @@ FileChunk::~FileChunk() { if(_data) _data->decRef(); } -FileChunk::FileChunk(const char * fname) { - _data = new FilePtr(fname); +FileChunk::FileChunk(const char * fname, const char * directory) { + _data = new FilePtr(fname, directory); _data->read(&_type, 4); _type = TO_BE_32(_type); _data->read(&_size, 4); |