From 3598192859797d8b7cc33a22af21f04bd45af01a Mon Sep 17 00:00:00 2001 From: Max Horn Date: Tue, 6 Nov 2007 10:52:47 +0000 Subject: Patch #1825132: SAVEFILEMAN: renameSavefile implementation svn-id: r29433 --- backends/saves/savefile.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'backends') diff --git a/backends/saves/savefile.cpp b/backends/saves/savefile.cpp index 499edb0b28..8466130151 100644 --- a/backends/saves/savefile.cpp +++ b/backends/saves/savefile.cpp @@ -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__) -- cgit v1.2.3