From 997625c3b3189c2f76c8be74727b288b5e789699 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 2 Nov 2010 00:13:04 +0000 Subject: M4: Reworked dumpFile to use Common::DumpFile svn-id: r54033 --- engines/m4/m4.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'engines/m4/m4.cpp') diff --git a/engines/m4/m4.cpp b/engines/m4/m4.cpp index 34fcef7c88..718daa571a 100644 --- a/engines/m4/m4.cpp +++ b/engines/m4/m4.cpp @@ -266,20 +266,23 @@ void MadsM4Engine::loadMenu(MenuType menuType, bool loadSaveFromHotkey, bool cal _viewManager->moveToFront(view); } +#define DUMP_BUFFER_SIZE 1024 + void MadsM4Engine::dumpFile(const char* filename, bool uncompress) { -#if 0 - // FIXME: The following code is not portable and hence has been disabled. - // Try replacing FILE by Common::DumpFile. + Common::DumpFile f; + byte buffer[DUMP_BUFFER_SIZE]; Common::SeekableReadStream *fileS = res()->get(filename); - byte buffer[256]; - FILE *destFile = fopen(filename, "wb"); + + if (!f.open(filename)) + error("Could not open '%s' for writing", filename); + int bytesRead = 0; - printf("Dumping %s, size: %i\n", filename, fileS->size()); + warning("Dumping %s, size: %i\n", filename, fileS->size()); if (!uncompress) { while (!fileS->eos()) { - bytesRead = fileS->read(buffer, 256); - fwrite(buffer, bytesRead, 1, destFile); + bytesRead = fileS->read(buffer, DUMP_BUFFER_SIZE); + f.write(buffer, bytesRead); } } else { MadsPack packData(fileS); @@ -288,17 +291,16 @@ void MadsM4Engine::dumpFile(const char* filename, bool uncompress) { sourceUnc = packData.getItemStream(i); printf("Dumping compressed chunk %i of %i, size is %i\n", i + 1, packData.getCount(), sourceUnc->size()); while (!sourceUnc->eos()) { - bytesRead = sourceUnc->read(buffer, 256); - fwrite(buffer, bytesRead, 1, destFile); + bytesRead = sourceUnc->read(buffer, DUMP_BUFFER_SIZE); + f.write(buffer, bytesRead); } delete sourceUnc; } } - fclose(destFile); + f.close(); res()->toss(filename); res()->purge(); -#endif } /*--------------------------------------------------------------------------*/ -- cgit v1.2.3