aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorMax Horn2007-11-06 10:52:47 +0000
committerMax Horn2007-11-06 10:52:47 +0000
commit3598192859797d8b7cc33a22af21f04bd45af01a (patch)
treeed28685b78beccd234a6995ae5d36201267973d7 /backends
parent83802f795b042113ea564f7f6ff964b7d030f3e5 (diff)
downloadscummvm-rg350-3598192859797d8b7cc33a22af21f04bd45af01a.tar.gz
scummvm-rg350-3598192859797d8b7cc33a22af21f04bd45af01a.tar.bz2
scummvm-rg350-3598192859797d8b7cc33a22af21f04bd45af01a.zip
Patch #1825132: SAVEFILEMAN: renameSavefile implementation
svn-id: r29433
Diffstat (limited to 'backends')
-rw-r--r--backends/saves/savefile.cpp36
1 files changed, 36 insertions, 0 deletions
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__)