[Scummvm-git-logs] scummvm master -> a78571655eee9c1538a0d711967cf4c21159221b

sev- noreply at scummvm.org
Sat Oct 11 21:02:36 UTC 2025


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
0d5c7484b2 DIRECTOR: Put all path resolving debug output to separate channel
dd129a4817 DIRECTOR: Added '@/' as a legit root folder designation
10c3329d0c DIRECTOR: Added more path-related debug output
f24ce7d34e DIRECTOR: Treat '/' as a path separator for D5+
a78571655e WINTERMUTE: Fix compilation


Commit: 0d5c7484b2ff745fdb267a828038f81f980a1718
    https://github.com/scummvm/scummvm/commit/0d5c7484b2ff745fdb267a828038f81f980a1718
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-10-11T22:59:16+02:00

Commit Message:
DIRECTOR: Put all path resolving debug output to separate channel

Changed paths:
    engines/director/detection.cpp
    engines/director/director.h
    engines/director/util.cpp


diff --git a/engines/director/detection.cpp b/engines/director/detection.cpp
index 57a2fcf7056..560a1578b80 100644
--- a/engines/director/detection.cpp
+++ b/engines/director/detection.cpp
@@ -79,6 +79,7 @@ static const DebugChannelDef debugFlagList[] = {
 	{Director::kDebugPaused, "paused", "Pause first movie right after start"},
 	{Director::kDebugPauseOnLoad, "pauseonload", "Pause every movie right after loading"},
 	{Director::kDebugSaving, "saving", "Show Debug output while saving movies"},
+	{Director::kDebugPaths, "paths", "Show path resolving"},
 	DEBUG_CHANNEL_END
 };
 
diff --git a/engines/director/director.h b/engines/director/director.h
index 120e68900df..902b0fb7794 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -94,6 +94,7 @@ enum {
 	kDebugPaused,
 	kDebugPauseOnLoad,
 	kDebugSaving,
+	kDebugPaths,
 };
 
 enum {
diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index 5cb44392ebd..5743b7aed77 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -509,7 +509,7 @@ Common::String rectifyRelativePath(const Common::String &path, const Common::Pat
 		}
 	}
 	Common::String result = "@:" + Common::Path::joinComponents(components).toString(g_director->_dirSeparator);
-	debug(9, "rectifyRelativePath(): '%s' + '%s' => '%s'", base.toString(g_director->_dirSeparator).c_str(), path.c_str(), result.c_str());
+	debugC(1, kDebugPaths, "rectifyRelativePath(): '%s' + '%s' => '%s'", base.toString(g_director->_dirSeparator).c_str(), path.c_str(), result.c_str());
 	warning("rectifyRelativePath(): '%s' + '%s' => '%s'", base.toString(g_director->_dirSeparator).c_str(), path.c_str(), result.c_str());
 	return result;
 }
@@ -689,8 +689,8 @@ Common::Path resolveFSPath(const Common::String &path, const Common::Path &base,
 	}
 
 	if (exists) {
-		debugN(9, "%s", recIndent());
-		debug(9, "resolveFSPath(): Found filesystem match for %s -> %s", path.c_str(), newPath.toString().c_str());
+		debugCN(1, kDebugPaths, "%s", recIndent());
+		debugC(1, kDebugPaths, "resolveFSPath(): Found filesystem match for %s -> %s", path.c_str(), newPath.toString().c_str());
 		return newPath;
 	}
 
@@ -711,14 +711,14 @@ Common::Path resolvePathInner(const Common::String &path, const Common::Path &ba
 	if (!directory) {
 		// Check SearchMan
 		if (SearchMan.hasFile(newPath)) {
-			debugN(9, "%s", recIndent());
-			debug(9, "resolvePath(): Found SearchMan match for %s -> %s", path.c_str(), newPath.toString().c_str());
+			debugCN(1, kDebugPaths, "%s", recIndent());
+			debugC(1, kDebugPaths, "resolvePath(): Found SearchMan match for %s -> %s", path.c_str(), newPath.toString().c_str());
 			return newPath;
 		}
 		// Check MacResArchive
 		if (Common::MacResManager::exists(newPath)) {
-			debugN(9, "%s", recIndent());
-			debug(9, "resolvePath(): Found MacResManager match for %s -> %s", path.c_str(), newPath.toString().c_str());
+			debugCN(1, kDebugPaths, "%s", recIndent());
+			debugC(1, kDebugPaths, "resolvePath(): Found MacResManager match for %s -> %s", path.c_str(), newPath.toString().c_str());
 			return newPath;
 		}
 	} else {
@@ -746,16 +746,16 @@ Common::Path resolvePathInner(const Common::String &path, const Common::Path &ba
 				}
 			}
 			if (match) {
-				debugN(9, "%s", recIndent());
-				debug(9, "resolvePath(): Found SearchMan match for %s -> %s", path.c_str(), testParent.toString().c_str());
+				debugCN(1, kDebugPaths, "%s", recIndent());
+				debugC(1, kDebugPaths, "resolvePath(): Found SearchMan match for %s -> %s", path.c_str(), testParent.toString().c_str());
 				return testParent;
 			}
 
 		}
 	}
 
-	debugN(9, "%s", recIndent());
-	debug(9, "resolvePath(): No match found for %s", path.c_str());
+	debugCN(1, kDebugPaths, "%s", recIndent());
+	debugC(1, kDebugPaths, "resolvePath(): No match found for %s", path.c_str());
 	return Common::Path();
 }
 
@@ -849,12 +849,12 @@ Common::Path resolvePartialPathWithFuzz(const Common::String &path, const Common
 Common::Path findAbsolutePath(const Common::String &path, bool directory, const char **exts) {
 	Common::Path result, base;
 	if (isAbsolutePath(path)) {
-		debugN(9, "%s", recIndent());
-		debug(9, "findAbsolutePath(): searching absolute path");
+		debugCN(1, kDebugPaths, "%s", recIndent());
+		debugC(1, kDebugPaths, "findAbsolutePath(): searching absolute path");
 		result = resolvePathWithFuzz(path, base, directory, exts);
 		if (!result.empty()) {
-			debugN(9, "%s", recIndent());
-			debug(9, "findAbsolutePath(): resolved \"%s\" -> \"%s\"", path.c_str(), result.toString().c_str());
+			debugCN(1, kDebugPaths, "%s", recIndent());
+			debugC(1, kDebugPaths, "findAbsolutePath(): resolved \"%s\" -> \"%s\"", path.c_str(), result.toString().c_str());
 		}
 	}
 	return result;
@@ -866,8 +866,8 @@ Common::Path findPath(const Common::Path &path, bool currentFolder, bool searchP
 
 Common::Path findPath(const Common::String &path, bool currentFolder, bool searchPaths, bool directory, const char **exts) {
 	Common::Path result, base;
-	debugN(9, "%s", recIndent());
-	debug(9, "findPath(): beginning search for \"%s\"", path.c_str());
+	debugCN(1, kDebugPaths, "%s", recIndent());
+	debugC(1, kDebugPaths, "findPath(): beginning search for \"%s\"", path.c_str());
 
 	Common::String currentPath = g_director->getCurrentPath();
 	Common::Path current = resolvePath(currentPath, base, true, exts);
@@ -885,25 +885,25 @@ Common::Path findPath(const Common::String &path, bool currentFolder, bool searc
 	}
 
 	if (currentFolder) {
-		debugN(9, "%s", recIndent());
-		debug(9, "findPath(): searching current folder %s", current.toString().c_str());
+		debugCN(1, kDebugPaths, "%s", recIndent());
+		debugC(1, kDebugPaths, "findPath(): searching current folder %s", current.toString().c_str());
 		base = current;
 		result = resolvePartialPathWithFuzz(testPath, base, directory, exts);
 		if (!result.empty()) {
-			debugN(9, "%s", recIndent());
-			debug(9, "findPath(): resolved \"%s\" -> \"%s\"", testPath.c_str(), result.toString().c_str());
+			debugCN(1, kDebugPaths, "%s", recIndent());
+			debugC(1, kDebugPaths, "findPath(): resolved \"%s\" -> \"%s\"", testPath.c_str(), result.toString().c_str());
 			return result;
 		}
 	}
 
 	// Fall back to checking the game root path
-	debugN(9, "%s", recIndent());
-	debug(9, "findPath(): searching game root path");
+	debugCN(1, kDebugPaths, "%s", recIndent());
+	debugC(1, kDebugPaths, "findPath(): searching game root path");
 	base = Common::Path();
 	result = resolvePartialPathWithFuzz(testPath, base, directory, exts);
 	if (!result.empty()) {
-		debugN(9, "%s", recIndent());
-		debug(9, "findPath(): resolved \"%s\" -> \"%s\"", testPath.c_str(), result.toString().c_str());
+		debugCN(1, kDebugPaths, "%s", recIndent());
+		debugC(1, kDebugPaths, "findPath(): resolved \"%s\" -> \"%s\"", testPath.c_str(), result.toString().c_str());
 		return result;
 	}
 
@@ -923,23 +923,23 @@ Common::Path findPath(const Common::String &path, bool currentFolder, bool searc
 			base = Common::Path();
 			base = resolvePathWithFuzz(searchIn, base, true, exts);
 			if (base.empty()) {
-				debugN(9, "%s", recIndent());
-				debug(9, "findPath(): couldn't resolve search path folder %s, skipping", searchIn.c_str());
+				debugCN(1, kDebugPaths, "%s", recIndent());
+				debugC(1, kDebugPaths, "findPath(): couldn't resolve search path folder %s, skipping", searchIn.c_str());
 				continue;
 			}
-			debugN(9, "%s", recIndent());
-			debug(9, "findPath(): searching search path folder %s", searchIn.c_str());
+			debugCN(1, kDebugPaths, "%s", recIndent());
+			debugC(1, kDebugPaths, "findPath(): searching search path folder %s", searchIn.c_str());
 			result = resolvePartialPathWithFuzz(testPath, base, directory, exts);
 			if (!result.empty()) {
-				debugN(9, "%s", recIndent());
-				debug(9, "findPath(): resolved \"%s\" -> \"%s\"", testPath.c_str(), result.toString().c_str());
+				debugCN(1, kDebugPaths, "%s", recIndent());
+				debugC(1, kDebugPaths, "findPath(): resolved \"%s\" -> \"%s\"", testPath.c_str(), result.toString().c_str());
 				return result;
 			}
 		}
 	}
 
 	// Return empty path
-	debug(9, "findPath(): failed to resolve \"%s\"", path.c_str());
+	debugC(1, kDebugPaths, "findPath(): failed to resolve \"%s\"", path.c_str());
 	return Common::Path();
 }
 


Commit: dd129a48171fc2c535b9c9c1dc4a407b2cd55bbc
    https://github.com/scummvm/scummvm/commit/dd129a48171fc2c535b9c9c1dc4a407b2cd55bbc
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-10-11T22:59:20+02:00

Commit Message:
DIRECTOR: Added '@/' as a legit root folder designation

Changed paths:
    engines/director/util.cpp


diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index 5743b7aed77..64769a3c78e 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -447,7 +447,8 @@ const char *recIndent() {
 bool isAbsolutePath(const Common::String &path) {
 	// Starts with Mac directory notation for the game root
 	if (path.hasPrefix(Common::String("@:")) ||
-		path.hasPrefix(Common::String("@\\"))) {
+		path.hasPrefix(Common::String("@\\")) ||
+		path.hasPrefix(Common::String("@/"))) {
 		return true;
 	}
 	// Starts with a Windows drive letter
@@ -548,7 +549,8 @@ Common::String convertPath(const Common::String &path) {
 	if (path.hasPrefix("::")) { // Parent directory
 		idx = 2;
 	} else if (path.hasPrefix(Common::String("@:")) ||
-				path.hasPrefix(Common::String("@\\"))) { // Root of the game
+				path.hasPrefix(Common::String("@\\")) ||
+				path.hasPrefix(Common::String("@/"))) { // Root of the game
 		idx = 2;
 	} else if (path.size() >= 3
 					&& Common::isAlpha(path[0])


Commit: 10c3329d0c220fdf319ece8c17a8520d39e37661
    https://github.com/scummvm/scummvm/commit/10c3329d0c220fdf319ece8c17a8520d39e37661
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-10-11T22:59:20+02:00

Commit Message:
DIRECTOR: Added more path-related debug output

Changed paths:
    engines/director/util.cpp


diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index 64769a3c78e..195a37c4fa9 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -633,6 +633,7 @@ Common::String convert83Path(const Common::String &path) {
 Common::Path resolveFSPath(const Common::String &path, const Common::Path &base, bool directory) {
 	// Path is the raw input from Director. Scrub it to be a clean relative path.
 	Common::String converted = convertPath(path);
+	debugC(2, kDebugPaths, "  convertPath(): '%s' => '%s'", path.c_str(), converted.c_str());
 
 	// Absolute path to the game directory
 	Common::Path gamePath = Common::Path(g_director->getGameDataDir()->getPath());
@@ -714,13 +715,13 @@ Common::Path resolvePathInner(const Common::String &path, const Common::Path &ba
 		// Check SearchMan
 		if (SearchMan.hasFile(newPath)) {
 			debugCN(1, kDebugPaths, "%s", recIndent());
-			debugC(1, kDebugPaths, "resolvePath(): Found SearchMan match for %s -> %s", path.c_str(), newPath.toString().c_str());
+			debugC(1, kDebugPaths, "resolvePathInner(): Found SearchMan match for %s -> %s", path.c_str(), newPath.toString().c_str());
 			return newPath;
 		}
 		// Check MacResArchive
 		if (Common::MacResManager::exists(newPath)) {
 			debugCN(1, kDebugPaths, "%s", recIndent());
-			debugC(1, kDebugPaths, "resolvePath(): Found MacResManager match for %s -> %s", path.c_str(), newPath.toString().c_str());
+			debugC(1, kDebugPaths, "resolvePathInner(): Found MacResManager match for %s -> %s", path.c_str(), newPath.toString().c_str());
 			return newPath;
 		}
 	} else {
@@ -749,7 +750,7 @@ Common::Path resolvePathInner(const Common::String &path, const Common::Path &ba
 			}
 			if (match) {
 				debugCN(1, kDebugPaths, "%s", recIndent());
-				debugC(1, kDebugPaths, "resolvePath(): Found SearchMan match for %s -> %s", path.c_str(), testParent.toString().c_str());
+				debugC(1, kDebugPaths, "resolvePathInner(): Found SearchMan match for %s -> %s", path.c_str(), testParent.toString().c_str());
 				return testParent;
 			}
 
@@ -757,7 +758,7 @@ Common::Path resolvePathInner(const Common::String &path, const Common::Path &ba
 	}
 
 	debugCN(1, kDebugPaths, "%s", recIndent());
-	debugC(1, kDebugPaths, "resolvePath(): No match found for %s", path.c_str());
+	debugC(1, kDebugPaths, "resolvePathInner(): No match found for %s", path.c_str());
 	return Common::Path();
 }
 
@@ -779,6 +780,7 @@ Common::Path resolvePath(const Common::String &path, const Common::Path &base, b
 
 Common::Path resolvePartialPath(const Common::String &path, const Common::Path &base, bool directory, const char **exts) {
 	Common::String converted = convertPath(path);
+	debugC(2, kDebugPaths, "  convertPath(): '%s' => '%s'", path.c_str(), converted.c_str());
 	Common::Path result;
 
 	Common::StringArray baseTokens = base.splitComponents();


Commit: f24ce7d34e6e76e8cae1175f57a5d09bed6b7295
    https://github.com/scummvm/scummvm/commit/f24ce7d34e6e76e8cae1175f57a5d09bed6b7295
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-10-11T22:59:20+02:00

Commit Message:
DIRECTOR: Treat '/' as a path separator for D5+

We consider and hope that by this time they went away from having
'/' in the file names. Thus, we convert it right away to the
current pathSeparator.

Fixes melements' attempt to load "@/DATA/INTRO/INTRO"

Changed paths:
    engines/director/util.cpp


diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index 195a37c4fa9..9e9cec7ef9a 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -539,7 +539,8 @@ Common::String convertPath(const Common::String &path) {
 	if (path.empty())
 		return path;
 
-	if (!path.contains(':') && !path.contains('\\') && !path.contains('@')) {
+	if (!path.contains(':') && !path.contains('\\') && !path.contains('@')
+			&& (g_director->getVersion() >= 500 && !path.contains('/'))) {
 		return path;
 	}
 
@@ -562,7 +563,7 @@ Common::String convertPath(const Common::String &path) {
 	}
 
 	while (idx < path.size()) {
-		if (path[idx] == ':' || path[idx] == '\\')
+		if (path[idx] == ':' || path[idx] == '\\' || (g_director->getVersion() >= 500 && path[idx] == '/'))
 			res += g_director->_dirSeparator;
 		else
 			res += path[idx];


Commit: a78571655eee9c1538a0d711967cf4c21159221b
    https://github.com/scummvm/scummvm/commit/a78571655eee9c1538a0d711967cf4c21159221b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-10-11T23:02:18+02:00

Commit Message:
WINTERMUTE: Fix compilation

Changed paths:
    engines/wintermute/detection_tables.h


diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index ad7059e81e5..efc1bb7bf82 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -1934,7 +1934,7 @@ static const WMEGameDescription gameDescriptions[] = {
 
 	// Operacion: Bomba
 	WME_WINENTRY("operacionbomba", "",
-		WME_ENTRY1s("data.dcp", "4f5168a95b5ca46889221c5e9dabe691", 4176238), Common::ES_ESP, WME_1_8_11),
+		WME_ENTRY1s("data.dcp", "4f5168a95b5ca46889221c5e9dabe691", 4176238), Common::ES_ESP, ADGF_NO_FLAGS, WME_1_8_11),
 
 	// Paintaria
 	WME_WINENTRY("paintaria", "",




More information about the Scummvm-git-logs mailing list