aboutsummaryrefslogtreecommitdiff
path: root/engines/advancedDetector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/advancedDetector.cpp')
-rw-r--r--engines/advancedDetector.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp
index 8b6dc0c0d9..64f462a936 100644
--- a/engines/advancedDetector.cpp
+++ b/engines/advancedDetector.cpp
@@ -345,7 +345,7 @@ void AdvancedMetaEngine::reportUnknown(const Common::FSNode &path, const ADFileP
g_system->logMessage(LogMessageType::kInfo, report.c_str());
}
-void AdvancedMetaEngine::composeFileHashMap(FileMap &allFiles, const Common::FSList &fslist, int depth) const {
+void AdvancedMetaEngine::composeFileHashMap(FileMap &allFiles, const Common::FSList &fslist, int depth, const Common::String &parentName) const {
if (depth <= 0)
return;
@@ -353,6 +353,8 @@ void AdvancedMetaEngine::composeFileHashMap(FileMap &allFiles, const Common::FSL
return;
for (Common::FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
+ Common::String tstr = (_matchFullPaths && !parentName.empty() ? parentName + "/" : "") + file->getName();
+
if (file->isDirectory()) {
Common::FSList files;
@@ -372,11 +374,9 @@ void AdvancedMetaEngine::composeFileHashMap(FileMap &allFiles, const Common::FSL
if (!file->getChildren(files, Common::FSNode::kListAll))
continue;
- composeFileHashMap(allFiles, files, depth - 1);
+ composeFileHashMap(allFiles, files, depth - 1, tstr);
}
- Common::String tstr = file->getName();
-
// Strip any trailing dot
if (tstr.lastChar() == '.')
tstr.deleteLastChar();
@@ -625,6 +625,7 @@ AdvancedMetaEngine::AdvancedMetaEngine(const void *descs, uint descItemSize, con
_guiOptions = GUIO_NONE;
_maxScanDepth = 1;
_directoryGlobs = NULL;
+ _matchFullPaths = false;
}
void AdvancedMetaEngine::initSubSystems(const ADGameDescription *gameDesc) const {