[Scummvm-cvs-logs] SF.net SVN: scummvm:[54033] scummvm/trunk/engines/m4/m4.cpp

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Tue Nov 2 01:13:04 CET 2010


Revision: 54033
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54033&view=rev
Author:   dreammaster
Date:     2010-11-02 00:13:04 +0000 (Tue, 02 Nov 2010)

Log Message:
-----------
M4: Reworked dumpFile to use Common::DumpFile

Modified Paths:
--------------
    scummvm/trunk/engines/m4/m4.cpp

Modified: scummvm/trunk/engines/m4/m4.cpp
===================================================================
--- scummvm/trunk/engines/m4/m4.cpp	2010-11-01 22:19:16 UTC (rev 54032)
+++ scummvm/trunk/engines/m4/m4.cpp	2010-11-02 00:13:04 UTC (rev 54033)
@@ -266,20 +266,23 @@
 	_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 @@
 			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
 }
 
 /*--------------------------------------------------------------------------*/


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list