From bc28bc43c3fdd0fbc3b532aae4671e9a878df1af Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 12 Jul 2023 13:38:17 +0200 Subject: [PATCH] set read only/read file on the newly downloaded file will fix behavior on windows by properly setting the new temp file just downloaded have the proper state (read only or read/write) and not the already existing file that will be replaced by the newly odwnloaded one Signed-off-by: Matthieu Gallien --- src/libsync/propagatedownload.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 13d1ba58c6975..08ab484891501 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -1200,17 +1200,14 @@ void PropagateDownloadFile::downloadFinished() if (_item->_locked == SyncFileItem::LockStatus::LockedItem && (_item->_lockOwnerType != SyncFileItem::LockOwnerType::UserLock || _item->_lockOwnerId != propagator()->account()->davUser())) { qCDebug(lcPropagateDownload()) << _tmpFile << "file is locked: making it read only"; - FileSystem::setFileReadOnly(filename, true); + FileSystem::setFileReadOnly(_tmpFile.fileName(), true); } else { qCDebug(lcPropagateDownload()) << _tmpFile << "file is not locked: making it" << ((!_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanWrite)) ? "read only" : "read write"); - FileSystem::setFileReadOnlyWeak(filename, (!_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanWrite))); + FileSystem::setFileReadOnlyWeak(_tmpFile.fileName(), (!_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanWrite))); } - // Apply the remote permissions - FileSystem::setFileReadOnlyWeak(_tmpFile.fileName(), !_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanWrite)); - const auto isConflict = (_item->_instruction == CSYNC_INSTRUCTION_CONFLICT && (QFileInfo(filename).isDir() || !FileSystem::fileEquals(filename, _tmpFile.fileName()))) || _item->_instruction == CSYNC_INSTRUCTION_CASE_CLASH_CONFLICT;