Implement file fallback for archives

svn-id: r32476
This commit is contained in:
Eugene Sandulenko 2008-06-01 21:10:29 +00:00
parent ba5cebfaf8
commit 452d46b3bf
2 changed files with 21 additions and 2 deletions

View file

@ -78,6 +78,7 @@ static uint32 GetCRC(byte *data, int len) {
ArjFile::ArjFile() {
InitCRC();
_isOpen = false;
_fallBack = false;
}
ArjFile::~ArjFile() {
@ -234,6 +235,15 @@ bool ArjFile::open(const Common::String &filename, AccessMode mode) {
_isOpen = false;
if (_fallBack) {
_currArchive.open(filename);
if (_currArchive.isOpen()) {
_isOpen = true;
_uncompressed = &_currArchive;
return true;
}
}
if (!_fileMap.contains(filename))
return false;
@ -279,7 +289,12 @@ bool ArjFile::open(const Common::String &filename, AccessMode mode) {
void ArjFile::close() {
_isOpen = false;
delete _uncompressed;
if (_fallBack) {
_currArchive.close();
} else {
delete _uncompressed;
}
_uncompressed = NULL;
free(_uncompressedData);