mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-22 04:55:48 +03:00
Bring back .lnk files on Windows and always treat them as non-virtual files.
Signed-off-by: alex-z <blackslayer4@gmail.com>
This commit is contained in:
parent
9f952e32e4
commit
225c2dda4c
3 changed files with 9 additions and 15 deletions
|
@ -162,8 +162,7 @@ std::unique_ptr<csync_file_stat_t> csync_vio_local_readdir(csync_vio_handle_t *h
|
|||
} else if (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
|
||||
file_stat->type = ItemTypeDirectory;
|
||||
} else {
|
||||
// exclude ".lnk" files as they are not essential, but, causing troubles when enabling the VFS due to QFileInfo::isDir() and other methods are freezing, which causes the ".lnk" files to start hydrating and freezing the app eventually.
|
||||
file_stat->type = !OCC::FileSystem::isLnkFile(path) ? ItemTypeFile : ItemTypeSoftLink;
|
||||
file_stat->type = ItemTypeFile;
|
||||
}
|
||||
|
||||
/* Check for the hidden flag */
|
||||
|
|
|
@ -254,18 +254,7 @@ bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &ent
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
// exclude ".lnk" files as they are not essential, but, causing troubles when enabling the VFS due to
|
||||
// QFileInfo::isDir() and other methods are freezing, which causes the ".lnk" files to start hydrating and freezing
|
||||
// the app eventually.
|
||||
const bool isServerEntryWindowsShortcut = !entries.localEntry.isValid() && entries.serverEntry.isValid()
|
||||
&& !entries.serverEntry.isDirectory && FileSystem::isLnkFile(entries.serverEntry.name);
|
||||
#else
|
||||
const bool isServerEntryWindowsShortcut = false;
|
||||
#endif
|
||||
const auto isSymlink = entries.localEntry.isSymLink || isServerEntryWindowsShortcut;
|
||||
|
||||
if (excluded == CSYNC_NOT_EXCLUDED && !isSymlink) {
|
||||
if (excluded == CSYNC_NOT_EXCLUDED && !entries.localEntry.isSymLink) {
|
||||
return false;
|
||||
} else if (excluded == CSYNC_FILE_SILENTLY_EXCLUDED || excluded == CSYNC_FILE_EXCLUDE_AND_REMOVE) {
|
||||
emit _discoveryData->silentlyExcluded(path);
|
||||
|
@ -277,7 +266,7 @@ bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &ent
|
|||
item->_originalFile = path;
|
||||
item->_instruction = CSYNC_INSTRUCTION_IGNORE;
|
||||
|
||||
if (isSymlink) {
|
||||
if (entries.localEntry.isSymLink) {
|
||||
/* Symbolic links are ignored. */
|
||||
item->_errorString = tr("Symbolic links are not supported in syncing.");
|
||||
} else {
|
||||
|
@ -640,6 +629,7 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(
|
|||
if (!localEntry.isValid()
|
||||
&& item->_type == ItemTypeFile
|
||||
&& opts._vfs->mode() != Vfs::Off
|
||||
&& !FileSystem::isLnkFile(item->_file)
|
||||
&& _pinState != PinState::AlwaysLocal
|
||||
&& !FileSystem::isExcludeFile(item->_file)) {
|
||||
item->_type = ItemTypeVirtualFile;
|
||||
|
|
|
@ -211,6 +211,11 @@ Result<void, QString> VfsCfApi::dehydratePlaceholder(const SyncFileItem &item)
|
|||
|
||||
Result<Vfs::ConvertToPlaceholderResult, QString> VfsCfApi::convertToPlaceholder(const QString &filename, const SyncFileItem &item, const QString &replacesFile)
|
||||
{
|
||||
if (item._type != ItemTypeDirectory && OCC::FileSystem::isLnkFile(filename)) {
|
||||
qCInfo(lcCfApi) << "File \"" << filename << "\" is a Windows shortcut. Not converting it to a placeholder.";
|
||||
return Vfs::ConvertToPlaceholderResult::Ok;
|
||||
}
|
||||
|
||||
const auto localPath = QDir::toNativeSeparators(filename);
|
||||
const auto replacesPath = QDir::toNativeSeparators(replacesFile);
|
||||
|
||||
|
|
Loading…
Reference in a new issue