From: Christian Kamm Date: Mon, 7 Oct 2019 12:58:31 +0000 (+0200) Subject: Discovery: Distinguish readdir and closedir errors X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~468^2~173 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9d422284af411c8c235f4b613a5d5795fd4cca8c;p=nextcloud-desktop.git Discovery: Distinguish readdir and closedir errors --- diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp index f4ca7eaa3..ca0322c5d 100644 --- a/src/libsync/discoveryphase.cpp +++ b/src/libsync/discoveryphase.cpp @@ -247,9 +247,13 @@ void DiscoverySingleLocalDirectoryJob::run() { emit finishedFatalError(errorString); return; } - errno = 0; + QVector results; - while (auto dirent = csync_vio_local_readdir(dh, _vfs)) { + while (true) { + errno = 0; + auto dirent = csync_vio_local_readdir(dh, _vfs); + if (!dirent) + break; if (dirent->type == ItemTypeSkip) continue; LocalInfo i; @@ -279,13 +283,21 @@ void DiscoverySingleLocalDirectoryJob::run() { i.type = dirent->type; results.push_back(i); } - csync_vio_local_closedir(dh); if (errno != 0) { + csync_vio_local_closedir(dh); + // Note: Windows vio converts any error into EACCES qCWarning(lcDiscovery) << "readdir failed for file in " << localPath << " - errno: " << errno; emit finishedFatalError(tr("Error while reading directory %1").arg(localPath)); return; } + + errno = 0; + csync_vio_local_closedir(dh); + if (errno != 0) { + qCWarning(lcDiscovery) << "closedir failed for file in " << localPath << " - errno: " << errno; + } + emit finished(results); }