summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/installer/qtpatchoperation.cpp35
-rw-r--r--src/libs/installer/qtpatchoperation.h3
2 files changed, 36 insertions, 2 deletions
diff --git a/src/libs/installer/qtpatchoperation.cpp b/src/libs/installer/qtpatchoperation.cpp
index a19ed0f77..c37bec8fe 100644
--- a/src/libs/installer/qtpatchoperation.cpp
+++ b/src/libs/installer/qtpatchoperation.cpp
@@ -43,6 +43,7 @@
#include <QFile>
#include <QTextStream>
#include <QDir>
+#include <QDirIterator>
#include <QtCore/QDebug>
using namespace QInstaller;
@@ -211,6 +212,7 @@ bool QtPatchOperation::performOperation()
return false;
}
+ QStringList filters;
QStringList filesToPatch, textFilesToPatch;
bool readingTextFilesToPatch = false;
@@ -230,9 +232,13 @@ bool QtPatchOperation::performOperation()
readingTextFilesToPatch = true;
//with empty old path we don't know what we want to replace
- else if (readingTextFilesToPatch && !oldQtPathFromQMakeIsEmpty)
+ else if (readingTextFilesToPatch && !oldQtPathFromQMakeIsEmpty) {
+ // check if file mask filter
+ if (line.startsWith(QLatin1String("*."), Qt::CaseInsensitive)) {
+ filters << line;
+ }
textFilesToPatch.append(line);
-
+ }
else
filesToPatch.append(line);
}
@@ -302,6 +308,15 @@ bool QtPatchOperation::performOperation()
}
#endif
+ // get file list defined by filters and patch them
+ QStringList filteredContent = getDirContent(prefix, filters);
+ foreach (QString fileName, filteredContent) {
+ if (QFile::exists(fileName)) {
+ QtPatch::patchTextFile(fileName, searchReplacePairs);
+ }
+ }
+
+ // patch single items
foreach (QString fileName, textFilesToPatch) {
fileName.prepend(prefix);
@@ -341,6 +356,22 @@ bool QtPatchOperation::performOperation()
return true;
}
+QStringList QtPatchOperation::getDirContent(const QString& aPath, QStringList aFilters)
+{
+ QStringList list;
+ QDirIterator dirIterator(aPath, aFilters, QDir::AllDirs|QDir::Files|QDir::NoSymLinks,
+ QDirIterator::Subdirectories);
+ while (dirIterator.hasNext()) {
+ dirIterator.next();
+ if (!dirIterator.fileInfo().isDir()) {
+ list.append(dirIterator.fileInfo().absoluteFilePath());
+ qDebug() << QString::fromLatin1("QtPatchOperation::getDirContent match: '%1'").arg(dirIterator.fileInfo().absoluteFilePath());
+ }
+ }
+
+ return list;
+}
+
bool QtPatchOperation::undoOperation()
{
return true;
diff --git a/src/libs/installer/qtpatchoperation.h b/src/libs/installer/qtpatchoperation.h
index 31f3abb4e..b4420041b 100644
--- a/src/libs/installer/qtpatchoperation.h
+++ b/src/libs/installer/qtpatchoperation.h
@@ -47,6 +47,9 @@ public:
bool undoOperation();
bool testOperation();
Operation *clone() const;
+
+private:
+ QStringList getDirContent(const QString& aPath, QStringList aFilters);
};
} // namespace QInstaller