diff options
Diffstat (limited to 'source/core')
-rw-r--r-- | source/core/StarFile.cpp | 14 | ||||
-rw-r--r-- | source/core/StarFile.hpp | 1 |
2 files changed, 11 insertions, 4 deletions
diff --git a/source/core/StarFile.cpp b/source/core/StarFile.cpp index ec09ff7..873a10e 100644 --- a/source/core/StarFile.cpp +++ b/source/core/StarFile.cpp @@ -102,16 +102,22 @@ void File::overwriteFileWithRename(String const& data, String const& filename, S overwriteFileWithRename(data.utf8Ptr(), data.utf8Size(), filename, newSuffix); } -void File::backupFileInSequence(String const& targetFile, unsigned maximumBackups, String const& backupExtensionPrefix) { +void File::backupFileInSequence(String const& initialFile, String const& targetFile, unsigned maximumBackups, String const& backupExtensionPrefix) { for (unsigned i = maximumBackups; i > 0; --i) { - String curExtension = i == 1 ? "" : strf("{}{}", backupExtensionPrefix, i - 1); + bool initial = i == 1; + String const& sourceFile = initial ? initialFile : targetFile; + String curExtension = initial ? "" : strf("{}{}", backupExtensionPrefix, i - 1); String nextExtension = strf("{}{}", backupExtensionPrefix, i); - if (File::isFile(targetFile + curExtension)) - File::copy(targetFile + curExtension, targetFile + nextExtension); + if (File::isFile(sourceFile + curExtension)) + File::copy(sourceFile + curExtension, targetFile + nextExtension); } } +void File::backupFileInSequence(String const& targetFile, unsigned maximumBackups, String const& backupExtensionPrefix) { + backupFileInSequence(targetFile, targetFile, maximumBackups, backupExtensionPrefix); +} + File::File() : IODevice(IOMode::Closed) { m_file = 0; diff --git a/source/core/StarFile.hpp b/source/core/StarFile.hpp index c75dd4c..517c148 100644 --- a/source/core/StarFile.hpp +++ b/source/core/StarFile.hpp @@ -91,6 +91,7 @@ public: static void overwriteFileWithRename(ByteArray const& data, String const& filename, String const& newSuffix = ".new"); static void overwriteFileWithRename(String const& data, String const& filename, String const& newSuffix = ".new"); + static void backupFileInSequence(String const& initialFile, String const& targetFile, unsigned maximumBackups, String const& backupExtensionPrefix = "."); static void backupFileInSequence(String const& targetFile, unsigned maximumBackups, String const& backupExtensionPrefix = "."); static FilePtr open(String const& filename, IOMode mode); |