[Scummvm-cvs-logs] scummvm master -> 4990bdfbe5a0da69e10de478eab32829ea06114f
bluegr
bluegr at gmail.com
Sat Mar 30 20:22:36 CET 2013
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
4990bdfbe5 WINTERMUTE: Add a console command, "dump_file", to dump resource files to disk
Commit: 4990bdfbe5a0da69e10de478eab32829ea06114f
https://github.com/scummvm/scummvm/commit/4990bdfbe5a0da69e10de478eab32829ea06114f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-03-30T12:21:51-07:00
Commit Message:
WINTERMUTE: Add a console command, "dump_file", to dump resource files to disk
Changed paths:
engines/wintermute/debugger.cpp
engines/wintermute/debugger.h
diff --git a/engines/wintermute/debugger.cpp b/engines/wintermute/debugger.cpp
index 1160a16..0dab753 100644
--- a/engines/wintermute/debugger.cpp
+++ b/engines/wintermute/debugger.cpp
@@ -22,12 +22,15 @@
#include "engines/wintermute/debugger.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/base/base_engine.h"
+#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/base/base_game.h"
namespace Wintermute {
Console::Console(WintermuteEngine *vm) : GUI::Debugger(), _engineRef(vm) {
DCmd_Register("show_fps", WRAP_METHOD(Console, Cmd_ShowFps));
+ DCmd_Register("dump_file", WRAP_METHOD(Console, Cmd_DumpFile));
}
Console::~Console(void) {
@@ -44,5 +47,38 @@ bool Console::Cmd_ShowFps(int argc, const char **argv) {
}
return true;
}
-
+
+bool Console::Cmd_DumpFile(int argc, const char **argv) {
+ if (argc != 3) {
+ DebugPrintf("Usage: %s <file path> <output file name>\n", argv[0]);
+ return true;
+ }
+
+ Common::String filePath = argv[1];
+ Common::String outFileName = argv[2];
+
+ BaseFileManager *fileManager = BaseEngine::instance().getFileManager();
+ Common::SeekableReadStream *inFile = fileManager->openFile(filePath);
+ if (!inFile) {
+ DebugPrintf("File '%s' not found\n", argv[1]);
+ return true;
+ }
+
+ Common::DumpFile *outFile = new Common::DumpFile();
+ outFile->open(outFileName);
+
+ byte *data = new byte[inFile->size()];
+ inFile->read(data, inFile->size());
+ outFile->write(data, inFile->size());
+ outFile->finalize();
+ outFile->close();
+ delete[] data;
+
+ delete outFile;
+ delete inFile;
+
+ DebugPrintf("Resource file '%s' dumped to file '%s'\n", argv[1], argv[2]);
+ return true;
+}
+
} // end of namespace Wintermute
diff --git a/engines/wintermute/debugger.h b/engines/wintermute/debugger.h
index 0699803..588b81a 100644
--- a/engines/wintermute/debugger.h
+++ b/engines/wintermute/debugger.h
@@ -34,6 +34,7 @@ public:
virtual ~Console();
bool Cmd_ShowFps(int argc, const char **argv);
+ bool Cmd_DumpFile(int argc, const char **argv);
private:
WintermuteEngine *_engineRef;
};
More information about the Scummvm-git-logs
mailing list