summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2019-01-21 12:19:01 +0200
committerKatja Marttila <katja.marttila@qt.io>2019-01-22 11:34:59 +0000
commit3d8c194690a43a6d2c48f808b02a4084bbf0142f (patch)
tree54ca94494a14ed0242709643985a8dc9bd829af9
parenta7382f8f40989bb7765a56bb6c10a7d28d3e6bf9 (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.cpp7
-rw-r--r--src/libs/kdtools/filedownloader.cpp14
-rw-r--r--src/libs/kdtools/filedownloader.h1
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;