From 85b4c19b7b540bcbe3e6a4d85304cff19ab99f00 Mon Sep 17 00:00:00 2001 From: Camila Date: Tue, 27 Dec 2022 21:25:40 +0100 Subject: [PATCH] Extend config backup method to make a copy of any given config file. Signed-off-by: Camila --- src/libsync/configfile.cpp | 18 ++++++++++++------ src/libsync/configfile.h | 4 ++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index 08064026f..631551a5e 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -430,12 +430,15 @@ QString ConfigFile::excludeFileFromSystem() return fi.absoluteFilePath(); } -QString ConfigFile::backup() const +QString ConfigFile::backup(const QString fileName) const { - QString baseFile = configFile(); + QString baseFile = configPath() + fileName; auto versionString = clientVersionString(); - if (!versionString.isEmpty()) + + if (!versionString.isEmpty()) { versionString.prepend('_'); + } + QString backupFile = QString("%1.backup_%2%3") .arg(baseFile) @@ -445,10 +448,13 @@ QString ConfigFile::backup() const // If this exact file already exists it's most likely that a backup was // already done. (two backup calls directly after each other, potentially // even with source alterations in between!) - if (!QFile::exists(backupFile)) { - QFile f(baseFile); - f.copy(backupFile); + QFile f(baseFile); + + // QFile does not overwrite it + if(!f.copy(backupFile)) { + qCWarning(lcConfigFile) << "Failed to create a backup of the config file" << baseFile; } + return backupFile; } diff --git a/src/libsync/configfile.h b/src/libsync/configfile.h index 719cce083..c0f126736 100644 --- a/src/libsync/configfile.h +++ b/src/libsync/configfile.h @@ -49,11 +49,11 @@ public: static QString excludeFileFromSystem(); // doesn't access config dir /** - * Creates a backup of the file + * Creates a backup of any given fileName in the config folder * * Returns the path of the new backup. */ - [[nodiscard]] QString backup() const; + [[nodiscard]] QString backup(const QString fileName) const; bool exists(); -- 2.30.2