[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