From 85e71d47bfa64c3293afc2b88eff7e72dbfce3c3 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 5 Nov 2024 23:09:00 +0100 Subject: [PATCH] ensure lnk shortcut files are converted to virtual files Signed-off-by: Matthieu Gallien --- src/libsync/discovery.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 3fe2fb2d82..f4a98b5182 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1731,6 +1731,15 @@ void ProcessDirectoryJob::processFileFinalize( item->_instruction = CSyncEnums::CSYNC_INSTRUCTION_UPDATE_VFS_METADATA; } + if (_discoveryData->_syncOptions._vfs && + (item->_type == CSyncEnums::ItemTypeFile || item->_type == CSyncEnums::ItemTypeDirectory) && + item->_instruction == CSyncEnums::CSYNC_INSTRUCTION_NONE && + FileSystem::isLnkFile((_discoveryData->_localDir + path._local))) { + item->_instruction = CSyncEnums::CSYNC_INSTRUCTION_SYNC; + item->_direction = SyncFileItem::Down; + item->_type = CSyncEnums::ItemTypeVirtualFileDehydration; + } + if (path._original != path._target && (item->_instruction == CSYNC_INSTRUCTION_UPDATE_VFS_METADATA || item->_instruction == CSYNC_INSTRUCTION_UPDATE_METADATA || item->_instruction == CSYNC_INSTRUCTION_NONE)) { ASSERT(_dirItem && _dirItem->_instruction == CSYNC_INSTRUCTION_RENAME); // This is because otherwise subitems are not updated! (ideally renaming a directory could