aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLittleboy2011-03-21 12:24:16 -0400
committerLittleboy2011-03-24 18:51:58 -0400
commit5a1874e3d946002c21af9ed315f762bfb467ef3f (patch)
tree6bcf009281413f4977fc48695b501fafc72821df
parentb95013dfe25d75d39c7deb69ee1a63f93a4a495f (diff)
downloadscummvm-rg350-5a1874e3d946002c21af9ed315f762bfb467ef3f.tar.gz
scummvm-rg350-5a1874e3d946002c21af9ed315f762bfb467ef3f.tar.bz2
scummvm-rg350-5a1874e3d946002c21af9ed315f762bfb467ef3f.zip
COMMON: Add SaveFileManager::copySavefile() and update SaveFileManager::renameSavefile() to use it
-rw-r--r--backends/saves/savefile.cpp15
-rw-r--r--common/savefile.h8
2 files changed, 18 insertions, 5 deletions
diff --git a/backends/saves/savefile.cpp b/backends/saves/savefile.cpp
index d2fc913f14..7b7d6b0c0c 100644
--- a/backends/saves/savefile.cpp
+++ b/backends/saves/savefile.cpp
@@ -31,8 +31,7 @@
namespace Common {
-bool SaveFileManager::renameSavefile(const String &oldFilename, const String &newFilename) {
-
+bool SaveFileManager::copySavefile(const String &oldFilename, const String &newFilename) {
InSaveFile *inFile = 0;
OutSaveFile *outFile = 0;
uint32 size = 0;
@@ -57,9 +56,8 @@ bool SaveFileManager::renameSavefile(const String &oldFilename, const String &ne
if (!error) {
outFile->write(buffer, size);
outFile->finalize();
- if (!outFile->err()) {
- success = removeSavefile(oldFilename);
- }
+
+ success = !outFile->err();
}
}
@@ -71,6 +69,13 @@ bool SaveFileManager::renameSavefile(const String &oldFilename, const String &ne
return success;
}
+bool SaveFileManager::renameSavefile(const String &oldFilename, const String &newFilename) {
+ if (!copySavefile(oldFilename, newFilename))
+ return false;
+
+ return removeSavefile(oldFilename);
+}
+
String SaveFileManager::popErrorDesc() {
String err = _errorDesc;
clearError();
diff --git a/common/savefile.h b/common/savefile.h
index 16b0fdbfbe..793aec3ba9 100644
--- a/common/savefile.h
+++ b/common/savefile.h
@@ -136,6 +136,14 @@ public:
virtual bool renameSavefile(const String &oldName, const String &newName);
/**
+ * Copy the given savefile.
+ * @param oldName Old name.
+ * @param newName New name.
+ * @return true if no error occurred. false otherwise.
+ */
+ virtual bool copySavefile(const String &oldName, const String &newName);
+
+ /**
* Request a list of available savegames with a given DOS-style pattern,
* also known as "glob" in the UNIX world. Refer to the Common::matchString()
* function to learn about the precise pattern format.