Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core
diff options
context:
space:
mode:
Diffstat (limited to 'source/core')
-rw-r--r--source/core/StarFile.cpp14
-rw-r--r--source/core/StarFile.hpp1
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);