From: Klaas Freitag Date: Wed, 20 Apr 2016 12:15:38 +0000 (+0200) Subject: local_vio_win: Fix handling files that have been deduplicated X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~1188^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=055c2ef73f84b68ebfbe0296fadef438981cba37;p=nextcloud-desktop.git local_vio_win: Fix handling files that have been deduplicated as part of Windows SIS or Data Deduplication. Fixes #4056 --- diff --git a/csync/src/vio/csync_vio_local_win.c b/csync/src/vio/csync_vio_local_win.c index 7bf403315..f43393ea4 100644 --- a/csync/src/vio/csync_vio_local_win.c +++ b/csync/src/vio/csync_vio_local_win.c @@ -168,9 +168,14 @@ csync_vio_file_stat_t *csync_vio_local_readdir(csync_vio_handle_t *dhandle) { } file_stat->name = c_utf8_from_locale(handle->ffd.cFileName); - file_stat->fields |= CSYNC_VIO_FILE_STAT_FIELDS_TYPE; - if (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT - && handle->ffd.dwReserved0 & IO_REPARSE_TAG_SYMLINK) { + file_stat->fields |= CSYNC_VIO_FILE_STAT_FIELDS_TYPE; + if ( (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) + && (handle->ffd.dwReserved0 & IO_REPARSE_TAG_SYMLINK) + // The SIS or DEDUP flag points to a MS deduplication feature of + // certain file storage products. It is not a normal symlink + // that should be ignored. + && (! (handle->ffd.dwReserved0 & IO_REPARSE_TAG_SIS)) + && (! (handle->ffd.dwReserved0 & IO_REPARSE_TAG_DEDUP)) ) { file_stat->flags = CSYNC_VIO_FILE_FLAGS_SYMLINK; file_stat->type = CSYNC_VIO_FILE_TYPE_SYMBOLIC_LINK; } else if (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_DEVICE