summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/fileutils.cpp3
-rw-r--r--src/libs/kdtools/kdupdaterupdateoperations.cpp27
2 files changed, 12 insertions, 18 deletions
diff --git a/src/libs/installer/fileutils.cpp b/src/libs/installer/fileutils.cpp
index 9fb782fec..1fd5bf35c 100644
--- a/src/libs/installer/fileutils.cpp
+++ b/src/libs/installer/fileutils.cpp
@@ -282,8 +282,7 @@ void QInstaller::removeDirectory(const QString &path, bool ignoreErrors)
QDirIterator it(path, QDir::NoDotAndDotDot | QDir::Dirs | QDir::NoSymLinks | QDir::Hidden,
QDirIterator::Subdirectories);
while (it.hasNext()) {
- it.next();
- dirs.prepend(it.filePath());
+ dirs.prepend(it.next());
removeFiles(dirs.at(0), ignoreErrors);
}
diff --git a/src/libs/kdtools/kdupdaterupdateoperations.cpp b/src/libs/kdtools/kdupdaterupdateoperations.cpp
index 5a4296242..854449bc0 100644
--- a/src/libs/kdtools/kdupdaterupdateoperations.cpp
+++ b/src/libs/kdtools/kdupdaterupdateoperations.cpp
@@ -65,29 +65,24 @@ static QString errnoToQString(int error)
#endif
}
-static bool removeDirectory(const QString &path, QString *errorString, bool force = true)
+static bool removeDirectory(const QString &path, QString *errorString, bool force)
{
Q_ASSERT(errorString);
- const QFileInfoList entries = QDir(path).entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries | QDir::Hidden);
- for (QFileInfoList::const_iterator it = entries.constBegin(); it != entries.constEnd(); ++it) {
- if (it->isDir() && !it->isSymLink()) {
- removeDirectory(it->filePath(), errorString, force);
- } else if (force) {
- QFile f(it->filePath());
- if (!f.remove())
- return false;
- }
+
+ QDir dir = path;
+ const QFileInfoList entries = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries | QDir::Hidden);
+ foreach (const QFileInfo &entry, entries) {
+ if (entry.isDir() && (!entry.isSymLink()))
+ removeDirectory(entry.filePath(), errorString, force);
+ else if (force && (!QFile(entry.filePath()).remove()))
+ return false;
}
// even remove some hidden, OS-created files in there
-#if defined Q_OS_MAC
- QFile::remove(path + QLatin1String("/.DS_Store"));
-#elif defined Q_OS_WIN
- QFile::remove(path + QLatin1String("/Thumbs.db"));
-#endif
+ QInstaller::removeSystemGeneratedFiles(path);
errno = 0;
- const bool success = QDir().rmdir(path);
+ const bool success = dir.rmdir(path);
if (errno)
*errorString = errnoToQString(errno);
return success;