Changed Archive::openFile to return a SeekableReadStream* instead of a FilePtr

svn-id: r34312
This commit is contained in:
Max Horn 2008-09-03 17:07:13 +00:00
parent 18fb6348dd
commit e1918341af
2 changed files with 15 additions and 11 deletions

View file

@ -70,19 +70,19 @@ bool FSDirectory::hasFile(const String &name) {
return node.exists();
}
FilePtr FSDirectory::openFile(const String &name) {
SeekableReadStream *FSDirectory::openFile(const String &name) {
if (name.empty() || !_node.isDirectory()) {
return FilePtr();
return 0;
}
FilesystemNode node = lookupCache(_fileCache, name);
if (!node.exists()) {
warning("FSDirectory::openFile: Trying to open a FilesystemNode which does not exist");
return FilePtr();
return 0;
} else if (node.isDirectory()) {
warning("FSDirectory::openFile: Trying to open a FilesystemNode which is a directory");
return FilePtr();
return 0;
}
SeekableReadStream *stream = node.openForReading();
@ -90,7 +90,7 @@ FilePtr FSDirectory::openFile(const String &name) {
warning("FSDirectory::openFile: Can't create stream for file '%s'", name.c_str());
}
return FilePtr(stream);
return stream;
}
SharedPtr<FSDirectory> FSDirectory::getSubDirectory(const String &name) {
@ -269,9 +269,9 @@ int SearchSet::matchPattern(StringList &list, const String &pattern) {
return matches;
}
FilePtr SearchSet::openFile(const String &name) {
SeekableReadStream *SearchSet::openFile(const String &name) {
if (name.empty()) {
return FilePtr();
return 0;
}
ArchiveList::iterator it = _list.begin();
@ -281,7 +281,7 @@ FilePtr SearchSet::openFile(const String &name) {
}
}
return FilePtr();
return 0;
}

View file

@ -35,6 +35,10 @@
namespace Common {
/**
* FilePtr is a convenient way to keep track of a SeekableReadStream without
* having to worry about releasing its memory.
*/
typedef SharedPtr<SeekableReadStream> FilePtr;
/**
@ -75,7 +79,7 @@ public:
* Create a stream bound to a file in the archive.
* @return The newly created input stream.
*/
virtual FilePtr openFile(const String &name) = 0;
virtual SeekableReadStream *openFile(const String &name) = 0;
};
@ -136,7 +140,7 @@ public:
virtual bool hasFile(const String &name);
virtual int matchPattern(StringList &list, const String &pattern);
virtual FilePtr openFile(const String &name);
virtual SeekableReadStream *openFile(const String &name);
};
@ -193,7 +197,7 @@ public:
* Implements openFile from Archive base class. The current policy is
* opening the first file encountered that matches the name.
*/
virtual FilePtr openFile(const String &name);
virtual SeekableReadStream *openFile(const String &name);
};
} // namespace Common