fix somewhat common edge case in $$shadowed()
if source and build dir are direct children of the common root and we are shadowing the top-level source dir, there is of course no trailing slash to match. Change-Id: I8a34a6a72d16cb21d77d056e037235af9b32a008 Reviewed-by: Davide Pesavento <davidepesa@gmail.com> Reviewed-by: Andreas Hartmetz <ahartmetz@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
This commit is contained in:
parent
9dc7f84839
commit
ed96d199f1
@ -604,10 +604,10 @@ void Option::prepareProject(const QString &pfile)
|
|||||||
dstpath += QLatin1Char('/');
|
dstpath += QLatin1Char('/');
|
||||||
int srcLen = srcpath.length();
|
int srcLen = srcpath.length();
|
||||||
int dstLen = dstpath.length();
|
int dstLen = dstpath.length();
|
||||||
int lastSl = 0;
|
int lastSl = -1;
|
||||||
while (++lastSl, srcpath.at(--srcLen) == dstpath.at(--dstLen))
|
while (++lastSl, srcpath.at(--srcLen) == dstpath.at(--dstLen))
|
||||||
if (srcpath.at(srcLen) == QLatin1Char('/'))
|
if (srcpath.at(srcLen) == QLatin1Char('/'))
|
||||||
lastSl = 1;
|
lastSl = 0;
|
||||||
mkfile::source_root = srcpath.left(srcLen + lastSl);
|
mkfile::source_root = srcpath.left(srcLen + lastSl);
|
||||||
mkfile::build_root = dstpath.left(dstLen + lastSl);
|
mkfile::build_root = dstpath.left(dstLen + lastSl);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2685,10 +2685,13 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
|
|||||||
break;
|
break;
|
||||||
case E_SHADOWED: {
|
case E_SHADOWED: {
|
||||||
QString val = QDir::cleanPath(QFileInfo(args.at(0)).absoluteFilePath());
|
QString val = QDir::cleanPath(QFileInfo(args.at(0)).absoluteFilePath());
|
||||||
if (Option::mkfile::source_root.isEmpty())
|
if (Option::mkfile::source_root.isEmpty()) {
|
||||||
ret += val;
|
ret += val;
|
||||||
else if (val.startsWith(Option::mkfile::source_root))
|
} else if (val.startsWith(Option::mkfile::source_root)
|
||||||
|
&& (val.length() == Option::mkfile::source_root.length()
|
||||||
|
|| val.at(Option::mkfile::source_root.length()) == QLatin1Char('/'))) {
|
||||||
ret += Option::mkfile::build_root + val.mid(Option::mkfile::source_root.length());
|
ret += Option::mkfile::build_root + val.mid(Option::mkfile::source_root.length());
|
||||||
|
}
|
||||||
break; }
|
break; }
|
||||||
case E_ABSOLUTE_PATH:
|
case E_ABSOLUTE_PATH:
|
||||||
if (args.count() > 2)
|
if (args.count() > 2)
|
||||||
|
@ -113,6 +113,7 @@ out = "easy \"less easy\" sca\$\${LITERAL_HASH}ry crazy\$\$escape_expand(\\\\t\\
|
|||||||
testReplace($$val_escape(in), $$out, "val_escape")
|
testReplace($$val_escape(in), $$out, "val_escape")
|
||||||
|
|
||||||
testReplace($$shadowed($$PWD/something), $$OUT_PWD/something, "shadowed")
|
testReplace($$shadowed($$PWD/something), $$OUT_PWD/something, "shadowed")
|
||||||
|
testReplace($$shadowed($$PWD), $$OUT_PWD, "shadowed (take 2)")
|
||||||
|
|
||||||
#format_number
|
#format_number
|
||||||
spc = " "
|
spc = " "
|
||||||
|
Loading…
x
Reference in New Issue
Block a user