diff options
author | Matthieu Gallien <matthieu.gallien@nextcloud.com> | 2022-05-12 10:56:50 +0300 |
---|---|---|
committer | Matthieu Gallien <matthieu.gallien@nextcloud.com> | 2022-05-12 10:56:50 +0300 |
commit | da9e3bd7fe1650d7e730d2ec4273f0f39b88b11f (patch) | |
tree | 9ec739f466aac8d4bd0e810b43acb48c93b9783e | |
parent | 952eefcf69c65831c1a6a853f3cc15965c1eeb3a (diff) |
if an exclude file is deleted, skip it and remove it from internal listbugfix/syncExcludeLstCanBeRemoved
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
-rw-r--r-- | src/csync/csync_exclude.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/csync/csync_exclude.cpp b/src/csync/csync_exclude.cpp index eb8507589..8e2786bd3 100644 --- a/src/csync/csync_exclude.cpp +++ b/src/csync/csync_exclude.cpp @@ -320,13 +320,24 @@ bool ExcludedFiles::reloadExcludeFiles() bool success = true; const auto keys = _excludeFiles.keys(); for (const auto& basePath : keys) { - for (const auto &excludeFile : _excludeFiles.value(basePath)) { + auto itValue = _excludeFiles.find(basePath); + if (itValue == std::end(_excludeFiles)) { + continue; + } + auto &excludeFiles = *itValue; + for (auto excludeFileIt = std::begin(excludeFiles); excludeFileIt != std::end(excludeFiles); ) { + const auto &excludeFile = *excludeFileIt; QFile file(excludeFile); - if (file.exists() && file.open(QIODevice::ReadOnly)) { - loadExcludeFilePatterns(basePath, file); + if (!file.exists()) { + excludeFileIt = excludeFiles.erase(excludeFileIt); } else { - success = false; - qWarning() << "System exclude list file could not be opened:" << excludeFile; + if (file.open(QIODevice::ReadOnly)) { + loadExcludeFilePatterns(basePath, file); + } else { + success = false; + qWarning() << "System exclude list file could not be opened:" << excludeFile; + } + ++excludeFileIt; } } } |