[Scummvm-cvs-logs] SF.net SVN: scummvm: [29433] scummvm/trunk

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Tue Nov 6 11:52:48 CET 2007


Revision: 29433
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29433&view=rev
Author:   fingolfin
Date:     2007-11-06 02:52:47 -0800 (Tue, 06 Nov 2007)

Log Message:
-----------
Patch #1825132: SAVEFILEMAN: renameSavefile implementation

Modified Paths:
--------------
    scummvm/trunk/backends/saves/savefile.cpp
    scummvm/trunk/common/savefile.h

Modified: scummvm/trunk/backends/saves/savefile.cpp
===================================================================
--- scummvm/trunk/backends/saves/savefile.cpp	2007-11-06 10:37:27 UTC (rev 29432)
+++ scummvm/trunk/backends/saves/savefile.cpp	2007-11-06 10:52:47 UTC (rev 29433)
@@ -32,6 +32,42 @@
 
 namespace Common {
 
+bool SaveFileManager::renameSavefile(const char *oldFilename, const char *newFilename) {
+
+	InSaveFile *inFile = 0;
+	OutSaveFile *outFile = 0;
+	uint32 size = 0;
+	void *buffer = 0;
+	bool success = false;
+
+	inFile = openForLoading(oldFilename);
+
+	if (inFile) {
+		size = inFile->size();
+		buffer = malloc(size);
+		assert(buffer);
+
+		outFile = openForSaving(newFilename);
+
+		if (buffer && outFile) {
+			inFile->read(buffer, size);
+			if (!inFile->ioFailed()) {
+				outFile->write(buffer, size);
+				outFile->finalize();
+				if (!outFile->ioFailed()) {
+					success = removeSavefile(oldFilename);
+				}
+			}
+		}
+	
+		free(buffer);
+		delete outFile;
+		delete inFile;
+	}
+
+	return success;
+}
+
 const char *SaveFileManager::getSavePath() const {
 
 #if defined(PALMOS_MODE) || defined(__PSP__)

Modified: scummvm/trunk/common/savefile.h
===================================================================
--- scummvm/trunk/common/savefile.h	2007-11-06 10:37:27 UTC (rev 29432)
+++ scummvm/trunk/common/savefile.h	2007-11-06 10:52:47 UTC (rev 29433)
@@ -132,6 +132,14 @@
 	virtual bool removeSavefile(const char *filename) = 0;
 
 	/**
+	 * Renames the given savefile.
+	 * @param oldFilename Old filename.
+	 * @param newFilename New filename.
+	 * @return true if no error ocurred. false otherwise.
+	 */
+	virtual bool renameSavefile(const char *oldFilename, const char *newFilename);
+
+	/**
 	 * Request a list of available savegames with a given regex.
 	 * @param regex Regular expression to match. Wildcards like * or ? are available.
 	 * returns a list of strings for all present file names.


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