diff options
author | Katja Marttila <katja.marttila@qt.io> | 2019-01-21 12:19:01 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2019-01-22 11:34:59 +0000 |
commit | 3d8c194690a43a6d2c48f808b02a4084bbf0142f (patch) | |
tree | 54ca94494a14ed0242709643985a8dc9bd829af9 | |
parent | a7382f8f40989bb7765a56bb6c10a7d28d3e6bf9 (diff) |
Fix tmp file removal
Tmp files were not removed when all or these were met:
1. Using Linux
2. Installing to a folder which needs authorization
3. Installing a component which has no metadata
Tmp 'remoterepo-XXXXXX' is created before acquiring authorization.
In previous version if above list was met, a tmp folder was created
inside remoterepo-XXXXX after authorization leading to permission
error when deleting the folder.
Task-id: QTIFW-1268
Change-Id: I937fe3ce13440c817d1264c80ad060dfc966e456
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
-rw-r--r-- | src/libs/installer/metadatajob.cpp | 7 | ||||
-rw-r--r-- | src/libs/kdtools/filedownloader.cpp | 14 | ||||
-rw-r--r-- | src/libs/kdtools/filedownloader.h | 1 |
3 files changed, 7 insertions, 15 deletions
diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp index e210528e1..7b80eefa9 100644 --- a/src/libs/installer/metadatajob.cpp +++ b/src/libs/installer/metadatajob.cpp @@ -606,7 +606,14 @@ MetadataJob::Status MetadataJob::parseUpdatesXml(const QList<FileTaskResult> &re item.insert(TaskRole::Checksum, packageHash.toLatin1()); item.insert(TaskRole::Authenticator, QVariant::fromValue(authenticator)); item.insert(TaskRole::Name, packageName); + m_packages.append(item); + } else { + QString fileName = metadata.directory + QLatin1Char('/') + packageName; + QDir directory(fileName); + if (!directory.exists()) { + directory.mkdir(fileName); + } } } } diff --git a/src/libs/kdtools/filedownloader.cpp b/src/libs/kdtools/filedownloader.cpp index 5574a3af6..fce1a6208 100644 --- a/src/libs/kdtools/filedownloader.cpp +++ b/src/libs/kdtools/filedownloader.cpp @@ -661,18 +661,6 @@ void KDUpdater::FileDownloader::resetCheckSumData() } /*! - Creates a directory structure for \a fileName if it does not exist. -*/ -void KDUpdater::FileDownloader::createDirectoryForFile(const QString fileName) -{ - QFileInfo fileInfo(fileName); - if (!fileInfo.absoluteDir().exists()) { - QDir filePath = fileInfo.absoluteDir(); - filePath.mkdir(filePath.absolutePath()); - } -} - -/*! Returns a copy of the proxy factory that this FileDownloader object is using to determine the proxies to be used for requests. */ @@ -825,7 +813,6 @@ void KDUpdater::LocalFileDownloader::doDownload() file->open(); d->destination = file; } else { - createDirectoryForFile(d->destFileName); d->destination = new QFile(d->destFileName, this); d->destination->open(QIODevice::ReadWrite | QIODevice::Truncate); } @@ -1478,7 +1465,6 @@ void KDUpdater::HttpDownloader::startDownload(const QUrl &url) file->open(); d->destination = file; } else { - createDirectoryForFile(d->destFileName); d->destination = new QFile(d->destFileName, this); d->destination->open(QIODevice::ReadWrite | QIODevice::Truncate); } diff --git a/src/libs/kdtools/filedownloader.h b/src/libs/kdtools/filedownloader.h index 10a041fba..ede20dcfa 100644 --- a/src/libs/kdtools/filedownloader.h +++ b/src/libs/kdtools/filedownloader.h @@ -140,7 +140,6 @@ protected: void addCheckSumData(const QByteArray &data); void addCheckSumData(const char *data, int length); void resetCheckSumData(); - void createDirectoryForFile(const QString fileName); private Q_SLOTS: virtual void doDownload() = 0; |