From b59596523e87bc1abeb54aae63e12dfa9c047d45 Mon Sep 17 00:00:00 2001 From: abraunegg Date: Fri, 13 Nov 2020 08:27:09 +1100 Subject: [PATCH] Update sync.d * Full fix --- src/sync.d | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/src/sync.d b/src/sync.d index 30768ef0..e250271b 100644 --- a/src/sync.d +++ b/src/sync.d @@ -2006,25 +2006,31 @@ final class SyncEngine // - full path + combination of any above two - /path/name*.txt // - full path to file - /path/to/file.txt - // need to compute the full path for this file - path = itemdb.computePath(item.driveId, item.parentId) ~ "/" ~ item.name; - - // The path that needs to be checked needs to include the '/' - // This due to if the user has specified in skip_file an exclusive path: '/path/file' - that is what must be matched - if (!startsWith(path, "/")){ - // Add '/' to the path - path = '/' ~ path; + // is the parent id in the database? + if (itemdb.idInLocalDatabase(item.driveId, item.parentId)){ + // need to compute the full path for this file + path = itemdb.computePath(item.driveId, item.parentId) ~ "/" ~ item.name; + + // The path that needs to be checked needs to include the '/' + // This due to if the user has specified in skip_file an exclusive path: '/path/file' - that is what must be matched + if (!startsWith(path, "/")){ + // Add '/' to the path + path = '/' ~ path; + } + + log.vdebug("skip_file item to check: ", path); + unwanted = selectiveSync.isFileNameExcluded(path); + log.vdebug("Result: ", unwanted); + if (unwanted) log.vlog("Skipping item - excluded by skip_file config: ", item.name); + } else { + // parent id is not in the database + unwanted = true; + log.vlog("Skipping item - parent not present in local database"); } - - log.vdebug("skip_file item to check: ", path); - unwanted = selectiveSync.isFileNameExcluded(path); - log.vdebug("Result: ", unwanted); - if (unwanted) log.vlog("Skipping item - excluded by skip_file config: ", item.name); } } // check the item type - if (!unwanted) { if (isItemFile(driveItem)) { log.vdebug("The item we are syncing is a file"); @@ -2238,6 +2244,14 @@ final class SyncEngine } // What was the item that was saved log.vdebug("item details: ", item); + } else { + // flag was tripped, which was it + if (downloadFailed) { + log.vdebug("Download or creation of local directory failed"); + } + if (malwareDetected) { + log.vdebug("OneDrive reported that file contained malware"); + } } } @@ -2431,6 +2445,9 @@ final class SyncEngine } catch (FileException e) { // display the error message displayFileSystemErrorMessage(e.msg); + // flag that this failed + downloadFailed = true; + return; } } else { // we dont create the directory, but we need to track that we 'faked it'