From 46bc5a80ac4cf1cad13517ca4491498f374330a7 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Date: Wed, 10 Feb 2010 13:12:01 +0100 Subject: [PATCH] make $$files() qmake-compliant again unfortunately, the efforts to use only absolute paths internally became externally visible ... --- src/shared/proparser/profileevaluator.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp index 5892eed499d..6e61311e996 100644 --- a/src/shared/proparser/profileevaluator.cpp +++ b/src/shared/proparser/profileevaluator.cpp @@ -2192,27 +2192,32 @@ QStringList ProFileEvaluator::Private::evaluateExpandFunction(const QString &fun if (args.count() == 2) recursive = (!args[1].compare(statics.strtrue, Qt::CaseInsensitive) || args[1].toInt()); QStringList dirs; - QString r = fixPathToLocalOS(resolvePath(args[0])); + QString r = fixPathToLocalOS(args[0]); + QString pfx; + if (IoUtils::isRelativePath(r)) { + pfx = currentDirectory(); + if (!pfx.endsWith(QLatin1Char('/'))) + pfx += QLatin1Char('/'); + } int slash = r.lastIndexOf(QDir::separator()); if (slash != -1) { dirs.append(r.left(slash)); r = r.mid(slash+1); } else { - dirs.append(fixPathToLocalOS(currentDirectory())); + dirs.append(QString()); } const QRegExp regex(r, Qt::CaseSensitive, QRegExp::Wildcard); for (int d = 0; d < dirs.count(); d++) { QString dir = dirs[d]; - if (!dir.endsWith(QDir::separator())) + QDir qdir(pfx + dir); + if (!dir.isEmpty() && !dir.endsWith(QDir::separator())) dir += QDir::separator(); - - QDir qdir(dir); for (int i = 0; i < (int)qdir.count(); ++i) { if (qdir[i] == statics.strDot || qdir[i] == statics.strDotDot) continue; QString fname = dir + qdir[i]; - if (IoUtils::fileType(fname) == IoUtils::FileIsDir) { + if (IoUtils::fileType(pfx + fname) == IoUtils::FileIsDir) { if (recursive) dirs.append(fname); } -- GitLab