[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