From: Olivier Goffart Date: Wed, 15 Apr 2015 13:31:47 +0000 (+0200) Subject: PropagateDownload: Read the mtime from the file system after writing it X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~1803^2~186 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=458f336405e3b5e1837076cb53170db83dbf874a;p=nextcloud-desktop.git PropagateDownload: Read the mtime from the file system after writing it Because file system like FAT only have two second accuracy and would result in a upload if the mtime in the database is not the same as the one that was downloaded Issue #3103 --- diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index e19ee7f6b..98a78b45d 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -519,10 +519,14 @@ void PropagateDownloadFileQNAM::downloadFinished() _tmpFile.setPermissions(existingFile.permissions()); } - FileSystem::setFileHidden(_tmpFile.fileName(), false); + FileSystem::setModTime(_tmpFile.fileName(), _item._modtime); + // We need to fetch the time again because some file system such as FAT have a less than a second + // Accuracy, and we really need the time from the file system. (#3103) + _item._modtime = FileSystem::getModTime(_tmpFile.fileName()); QString error; _propagator->addTouchedFile(fn); + FileSystem::setFileHidden(_tmpFile.fileName(), false); if (!FileSystem::renameReplace(_tmpFile.fileName(), fn, &error)) { qDebug() << Q_FUNC_INFO << QString("Rename failed: %1 => %2").arg(_tmpFile.fileName()).arg(fn); // If we moved away the original file due to a conflict but can't @@ -543,7 +547,6 @@ void PropagateDownloadFileQNAM::downloadFinished() // Maybe we downloaded a newer version of the file than we thought we would... // Get up to date information for the journal. - FileSystem::setModTime(fn, _item._modtime); _item._size = FileSystem::getSize(fn); _propagator->_journal->setFileRecord(SyncJournalFileRecord(_item, fn));