diff options
| author | Filippos Karapetis | 2013-03-30 21:21:21 +0200 | 
|---|---|---|
| committer | Filippos Karapetis | 2013-03-30 21:21:51 +0200 | 
| commit | 4990bdfbe5a0da69e10de478eab32829ea06114f (patch) | |
| tree | 4ac22f1b7f24cff3995dbb6a4791247f6ec41d4e | |
| parent | 880f2641502c3c946bc1b619a13f704007f791f5 (diff) | |
| download | scummvm-rg350-4990bdfbe5a0da69e10de478eab32829ea06114f.tar.gz scummvm-rg350-4990bdfbe5a0da69e10de478eab32829ea06114f.tar.bz2 scummvm-rg350-4990bdfbe5a0da69e10de478eab32829ea06114f.zip  | |
WINTERMUTE: Add a console command, "dump_file", to dump resource files to disk
| -rw-r--r-- | engines/wintermute/debugger.cpp | 38 | ||||
| -rw-r--r-- | engines/wintermute/debugger.h | 1 | 
2 files changed, 38 insertions, 1 deletions
diff --git a/engines/wintermute/debugger.cpp b/engines/wintermute/debugger.cpp index 1160a16d37..0dab75356b 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 069980385e..588b81af97 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;  };  | 
