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

sev- noreply at scummvm.org
Sat Jul 2 20:44:55 UTC 2022


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

Summary:
d9d86b01ce DIRECTOR: LINGO: Implement traceLogFile Lingo Property
61ff6cf6d5 DIRECTOR: LINGO: Add check for writable file path in traceLogFile lingo property
ca35334399 DIRECTOR: LINGO: Implement showResFile and showXlib Lingo commands for debugging


Commit: d9d86b01ce01ba019a4459aa529370cbe077a762
    https://github.com/scummvm/scummvm/commit/d9d86b01ce01ba019a4459aa529370cbe077a762
Author: Pragyansh Chaturvedi (r41k0u) (pragyanshchaturvedi18 at gmail.com)
Date: 2022-07-02T22:44:51+02:00

Commit Message:
DIRECTOR: LINGO: Implement traceLogFile Lingo Property

Changed paths:
    engines/director/debugger.cpp
    engines/director/debugger.h
    engines/director/director.h
    engines/director/lingo/lingo-the.cpp


diff --git a/engines/director/debugger.cpp b/engines/director/debugger.cpp
index 6726b2f5d77..0d2d4ce3e70 100644
--- a/engines/director/debugger.cpp
+++ b/engines/director/debugger.cpp
@@ -61,4 +61,17 @@ bool Debugger::lingoCommandProcessor(const char *inputOrig) {
 	return true;
 }
 
+void Debugger::debugLogFile(Common::String logs) {
+	debugPrintf("%s", logs.c_str());
+	if (!g_director->_traceLogFile.empty()) {
+		const Common::String filename = g_director->_traceLogFile;
+		if (out.open(filename, true)) {
+			out.seek(out.size());
+			out.write(logs.c_str(), logs.size());
+			out.flush();
+			out.close();
+		}
+	}
+}
+
 } // End of namespace Director
diff --git a/engines/director/debugger.h b/engines/director/debugger.h
index 4cdf1e5bbe0..145e8f843c2 100644
--- a/engines/director/debugger.h
+++ b/engines/director/debugger.h
@@ -30,11 +30,14 @@ namespace Director {
 class Debugger : public GUI::Debugger {
 public:
 	Debugger();
+	void debugLogFile(Common::String logs);
 
 private:
 	bool cmd_lingo(int argc, const char **argv);
 
 	bool lingoCommandProcessor(const char *inputOrig);
+
+	Common::DumpFile out;
 };
 
 
diff --git a/engines/director/director.h b/engines/director/director.h
index 2b4a471ed00..9e82a6baaf4 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -259,6 +259,7 @@ private:
 
 public:
 	int _tickBaseline;
+	Common::String _traceLogFile;
 };
 
 // An extension of MacPlotData for interfacing with inks and patterns without
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 15f8cdeb0ba..feffc898f29 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -19,6 +19,8 @@
  *
  */
 
+#include "common/config-manager.h"
+#include "common/fs.h"
 #include "graphics/macgui/macbutton.h"
 #include "graphics/macgui/macmenu.h"
 
@@ -951,7 +953,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		d.u.i = g_lingo->_traceLoad;
 		break;
 	case kTheTraceLogFile:
-		getTheEntitySTUB(kTheTraceLogFile);
+		d.type = STRING;
+		d.u.s = new Common::String(g_director->_traceLogFile);
 		break;
 	case kTheUpdateMovieEnabled:
 		d.type = INT;
@@ -1240,7 +1243,15 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 		g_lingo->_traceLoad = d.asInt();
 		break;
 	case kTheTraceLogFile:
-		setTheEntitySTUB(kTheTraceLogFile);
+	{
+		if (d.asString().size()) {
+			Common::String logPath = ConfMan.get("path") + "/" + d.asString();
+			if (Common::FSNode(logPath).isWritable())
+				g_director->_traceLogFile = logPath;
+		} else {
+			g_director->_traceLogFile.clear();
+		}
+	}
 		break;
 	case kTheUpdateMovieEnabled:
 		g_lingo->_updateMovieEnabled = bool(d.asInt());


Commit: 61ff6cf6d5bbc396a0d05571d13c7b4ef649105a
    https://github.com/scummvm/scummvm/commit/61ff6cf6d5bbc396a0d05571d13c7b4ef649105a
Author: Pragyansh Chaturvedi (r41k0u) (pragyanshchaturvedi18 at gmail.com)
Date: 2022-07-02T22:44:51+02:00

Commit Message:
DIRECTOR: LINGO: Add check for writable file path in traceLogFile lingo property

Changed paths:
    engines/director/debugger.cpp
    engines/director/debugger.h
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-the.cpp


diff --git a/engines/director/debugger.cpp b/engines/director/debugger.cpp
index 0d2d4ce3e70..7aebfe6e2b5 100644
--- a/engines/director/debugger.cpp
+++ b/engines/director/debugger.cpp
@@ -37,6 +37,11 @@ Debugger::Debugger(): GUI::Debugger() {
 	registerCmd("lingo", WRAP_METHOD(Debugger, cmd_lingo));
 }
 
+Debugger::~Debugger() {
+	if (_out.isOpen())
+		_out.close();
+}
+
 bool Debugger::cmd_lingo(int argc, const char **argv) {
 	if (argc == 2 && !strcmp(argv[1], "on")) {
 		registerDefaultCmd(WRAP_DEFAULTCOMMAND(Debugger, lingoCommandProcessor));
@@ -61,15 +66,27 @@ bool Debugger::lingoCommandProcessor(const char *inputOrig) {
 	return true;
 }
 
-void Debugger::debugLogFile(Common::String logs) {
-	debugPrintf("%s", logs.c_str());
-	if (!g_director->_traceLogFile.empty()) {
-		const Common::String filename = g_director->_traceLogFile;
-		if (out.open(filename, true)) {
-			out.seek(out.size());
-			out.write(logs.c_str(), logs.size());
-			out.flush();
-			out.close();
+void Debugger::debugLogFile(Common::String logs, bool prompt) {
+	if (prompt)
+		debugPrintf("-- %s", logs.c_str());
+	else
+		debugPrintf("%s", logs.c_str());
+	if (g_director->_traceLogFile.empty()) {
+		if (_out.isOpen())
+			_out.close();
+		_outName.clear();
+	} else {
+		if (_outName != g_director->_traceLogFile) {
+			if (_out.isOpen())
+				_out.close();
+			if (!_out.open(g_director->_traceLogFile, true))
+				return;
+			_outName = g_director->_traceLogFile;
+		}
+		if(_out.isOpen()) {
+			_out.seek(_out.size());
+			_out.write(logs.c_str(), logs.size());
+			_out.flush();
 		}
 	}
 }
diff --git a/engines/director/debugger.h b/engines/director/debugger.h
index 145e8f843c2..b61fc737253 100644
--- a/engines/director/debugger.h
+++ b/engines/director/debugger.h
@@ -30,14 +30,16 @@ namespace Director {
 class Debugger : public GUI::Debugger {
 public:
 	Debugger();
-	void debugLogFile(Common::String logs);
+	~Debugger();
+	void debugLogFile(Common::String logs, bool prompt);
 
 private:
 	bool cmd_lingo(int argc, const char **argv);
 
 	bool lingoCommandProcessor(const char *inputOrig);
 
-	Common::DumpFile out;
+	Common::DumpFile _out;
+	Common::String _outName;
 };
 
 
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 7ac3b88033f..82f55202b8a 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1683,7 +1683,7 @@ void LB::b_put(int nargs) {
 			output += " ";
 	}
 	if (g_debugger->isActive()) {
-		g_debugger->debugPrintf("-- %s\n", output.c_str());
+		g_debugger->debugLogFile(output, true);
 	} else {
 		debug("-- %s", output.c_str());
 	}
@@ -1702,7 +1702,7 @@ void LB::b_showGlobals(int nargs) {
 			}
 		}
 	}
-	g_debugger->debugPrintf("%s", global_out.c_str());
+	g_debugger->debugLogFile(global_out, false);
 }
 
 void LB::b_showLocals(int nargs) {
@@ -1712,7 +1712,7 @@ void LB::b_showLocals(int nargs) {
 			local_out += it->_key + " = " + it->_value.asString() + "\n";
 		}
 	}
-	g_debugger->debugPrintf("%s", local_out.c_str());
+	g_debugger->debugLogFile(local_out, false);
 }
 
 ///////////////////
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index feffc898f29..3263946c49b 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -1246,7 +1246,10 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 	{
 		if (d.asString().size()) {
 			Common::String logPath = ConfMan.get("path") + "/" + d.asString();
-			if (Common::FSNode(logPath).isWritable())
+			Common::FSNode out(logPath);
+			if (!out.exists())
+				out.createWriteStream();
+			if (out.isWritable())
 				g_director->_traceLogFile = logPath;
 		} else {
 			g_director->_traceLogFile.clear();


Commit: ca3533439961017f5ec54b84d2dc639badcd9ac9
    https://github.com/scummvm/scummvm/commit/ca3533439961017f5ec54b84d2dc639badcd9ac9
Author: Pragyansh Chaturvedi (pragyanshchaturvedi18 at gmail.com)
Date: 2022-07-02T22:44:51+02:00

Commit Message:
DIRECTOR: LINGO: Implement showResFile and showXlib Lingo commands for debugging

Changed paths:
    engines/director/lingo/lingo-builtins.cpp


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 82f55202b8a..5430b5b0aea 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1191,13 +1191,21 @@ void LB::b_setCallBack(int nargs) {
 }
 
 void LB::b_showResFile(int nargs) {
-	g_lingo->dropStack(nargs);
-	warning("LB: b_showResFile: showResFile is not supported by ScummVM");
+	if (nargs)
+		g_lingo->pop();
+	Common::String out;
+	for (auto it = g_director->_openResFiles.begin(); it != g_director->_openResFiles.end(); it++)
+		out += it->_key + "\n";
+	g_debugger->debugLogFile(out, false);
 }
 
 void LB::b_showXlib(int nargs) {
-	g_lingo->dropStack(nargs);
-	warning("LB: b_showXlib: showXlib is not supported by ScummVM");
+	if (nargs)
+		g_lingo->pop();
+	Common::String out;
+	for (auto it = g_lingo->_openXLibs.begin(); it != g_lingo->_openXLibs.end(); it++)
+		out += it->_key + "\n";
+	g_debugger->debugLogFile(out, false);
 }
 
 void LB::b_xFactoryList(int nargs) {




More information about the Scummvm-git-logs mailing list