mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-24 13:13:58 +00:00
* Implemented a default matchPattern for Archive subclasses (courtesy of Fingolfin).
* Fixed bug in FSDirectory::matchPattern. svn-id: r34359
This commit is contained in:
parent
0ae32fe32c
commit
87d67be832
@ -25,12 +25,34 @@
|
||||
|
||||
#include "common/archive.h"
|
||||
#include "common/fs.h"
|
||||
#include "common/file.h"
|
||||
#include "common/util.h"
|
||||
|
||||
namespace Common {
|
||||
|
||||
|
||||
int Archive::matchPattern(StringList &list, const String &pattern) {
|
||||
// Get all "names" (TODO: "files" ?)
|
||||
StringList allNames;
|
||||
getAllNames(allNames);
|
||||
|
||||
int matches = 0;
|
||||
|
||||
// need to match lowercase key
|
||||
String lowercasePattern = pattern;
|
||||
lowercasePattern.toLowercase();
|
||||
|
||||
StringList::iterator it = allNames.begin();
|
||||
for ( ; it != allNames.end(); it++) {
|
||||
if (matchString(it->c_str(), lowercasePattern.c_str())) {
|
||||
list.push_back(*it);
|
||||
matches++;
|
||||
}
|
||||
}
|
||||
|
||||
return matches;
|
||||
}
|
||||
|
||||
|
||||
FSDirectory::FSDirectory(const FilesystemNode &node, int depth)
|
||||
: _node(node), _cached(false), _depth(depth) {
|
||||
}
|
||||
@ -158,7 +180,8 @@ int FSDirectory::matchPattern(StringList &list, const String &pattern) {
|
||||
NodeCache::iterator it = _fileCache.begin();
|
||||
for ( ; it != _fileCache.end(); it++) {
|
||||
if (matchString((*it)._key.c_str(), lowercasePattern.c_str())) {
|
||||
list.push_back((*it)._key.c_str());
|
||||
list.push_back((*it)._key);
|
||||
matches++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -283,5 +306,4 @@ SeekableReadStream *SearchSet::openFile(const String &name) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
} // namespace Common
|
||||
|
@ -62,7 +62,7 @@ public:
|
||||
*
|
||||
* @return The number of names added to list.
|
||||
*/
|
||||
virtual int matchPattern(StringList &list, const String &pattern) = 0;
|
||||
virtual int matchPattern(StringList &list, const String &pattern);
|
||||
|
||||
/**
|
||||
* Add all the names present in the Archive. Returned
|
||||
@ -144,7 +144,6 @@ public:
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* SearchSet enables access to a group of Archives through the Archive interface.
|
||||
* Its intended usage is a situation in which there are no name clashes among names in the
|
||||
|
Loading…
x
Reference in New Issue
Block a user