if (tmpFileName.isEmpty()) {
tmpFileName = createDownloadTmpFileName(_item->_file);
}
-
_tmpFile.setFileName(propagator()->getFilePath(tmpFileName));
+
+ _resumeStart = _tmpFile.size();
+ if (_resumeStart > 0 && _resumeStart == _item->_size) {
+ qCInfo(lcPropagateDownload) << "File is already complete, no need to download";
+ downloadFinished();
+ return;
+ }
+
+ // Can't open(Append) read-only files, make sure to make
+ // file writable if it exists.
+ if (_tmpFile.exists())
+ FileSystem::setFileReadOnly(_tmpFile.fileName(), false);
if (!_tmpFile.open(QIODevice::Append | QIODevice::Unbuffered)) {
+ qCWarning(lcPropagateDownload) << "could not open temporary file" << _tmpFile.fileName();
done(SyncFileItem::NormalError, _tmpFile.errorString());
return;
}
-
+ // Hide temporary after creation
FileSystem::setFileHidden(_tmpFile.fileName(), true);
- _resumeStart = _tmpFile.size();
- if (_resumeStart > 0) {
- if (_resumeStart == _item->_size) {
- qCInfo(lcPropagateDownload) << "File is already complete, no need to download";
- _tmpFile.close();
- downloadFinished();
- return;
- }
- }
-
// If there's not enough space to fully download this file, stop.
const auto diskSpaceResult = propagator()->diskSpaceCheck();
if (diskSpaceResult != OwncloudPropagator::DiskSpaceOk) {