diff options
-rw-r--r-- | backends/saves/savefile.cpp | 15 | ||||
-rw-r--r-- | common/savefile.h | 8 |
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. |