From ce8aa44e61e009e2d9937f25fb311bf39fa44b1d Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 6 Sep 2012 20:50:18 +0200 Subject: [PATCH] less esoteric parameter passing to processProject() just pass around fully qualified file names instead of QFileInfos. a side effect of this is that error messages use full paths as well - this can be considered good or not. Change-Id: I55a7545064d32ac717ce9c57205ef59b76afc3f0 Reviewed-by: Daniel Teske Reviewed-by: Oswald Buddenhagen --- src/linguist/lupdate/main.cpp | 27 +++++++++++----------- .../good/recurse_full_ts/expectedoutput.txt | 2 +- .../testdata/good/recurse_part/expectedoutput.txt | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/linguist/lupdate/main.cpp b/src/linguist/lupdate/main.cpp index eb225d9..0ef299b 100644 --- a/src/linguist/lupdate/main.cpp +++ b/src/linguist/lupdate/main.cpp @@ -339,7 +339,7 @@ static void processProjects(bool topLevel, bool nestComplain, const QStringList Translator *parentTor, bool *fail); static void processProject( - bool nestComplain, const QFileInfo &pfi, + bool nestComplain, const QString &proFile, ProFileGlobals *option, QMakeParser *parser, ProFileEvaluator &visitor, UpdateOptions options, const QByteArray &_codecForSource, const QString &targetLanguage, const QString &sourceLanguage, @@ -356,9 +356,10 @@ static void processProject( codecForSource.clear(); } } + QString proPath = QFileInfo(proFile).path(); if (visitor.templateType() == ProFileEvaluator::TT_Subdirs) { QStringList subProFiles; - QDir proDir(pfi.absoluteDir()); + QDir proDir(proPath); foreach (const QString &subdir, visitor.values(QLatin1String("SUBDIRS"))) { QString subPro = QDir::cleanPath(proDir.absoluteFilePath(subdir)); QFileInfo subInfo(subPro); @@ -375,9 +376,9 @@ static void processProject( cd.m_noUiLines = options & NoUiLines; cd.m_codecForSource = codecForSource; cd.m_includePath = visitor.values(QLatin1String("INCLUDEPATH")); - QStringList sourceFiles = getSources(visitor, pfi.absolutePath()); + QStringList sourceFiles = getSources(visitor, proPath); QSet sourceDirs; - sourceDirs.insert(QDir::cleanPath(pfi.absolutePath()) + QLatin1Char('/')); + sourceDirs.insert(proPath + QLatin1Char('/')); foreach (const QString &sf, sourceFiles) sourceDirs.insert(sf.left(sf.lastIndexOf(QLatin1Char('/')) + 1)); QStringList rootList = sourceDirs.toList(); @@ -399,12 +400,10 @@ static void processProjects(bool topLevel, bool nestComplain, const QStringList Translator *parentTor, bool *fail) { foreach (const QString &proFile, proFiles) { - QFileInfo pfi(proFile); - ProFileEvaluator visitor(option, parser, &evalHandler); visitor.setCumulative(true); ProFile *pro; - if (!(pro = parser->parsedProFile(QDir::cleanPath(pfi.absoluteFilePath())))) { + if (!(pro = parser->parsedProFile(proFile))) { if (topLevel) *fail = true; continue; @@ -430,7 +429,7 @@ static void processProjects(bool topLevel, bool nestComplain, const QStringList } } QStringList tsFiles; - QDir proDir(pfi.absolutePath()); + QDir proDir(QFileInfo(proFile).path()); foreach (const QString &tsFile, visitor.values(QLatin1String("TRANSLATIONS"))) tsFiles << QFileInfo(proDir, tsFile).filePath(); if (tsFiles.isEmpty()) { @@ -449,7 +448,7 @@ static void processProjects(bool topLevel, bool nestComplain, const QStringList tor.setCodecName(tmp.last().toLatin1()); setCodec = true; } - processProject(false, pfi, option, parser, visitor, options, codecForSource, + processProject(false, proFile, option, parser, visitor, options, codecForSource, targetLanguage, sourceLanguage, &tor, fail); updateTsFiles(tor, tsFiles, setCodec, sourceLanguage, targetLanguage, options, fail); pro->deref(); @@ -461,10 +460,10 @@ static void processProjects(bool topLevel, bool nestComplain, const QStringList printErr(LU::tr("lupdate warning: no TS files specified. Only diagnostics " "will be produced for '%1'.\n").arg(proFile)); Translator tor; - processProject(nestComplain, pfi, option, parser, visitor, options, codecForSource, + processProject(nestComplain, proFile, option, parser, visitor, options, codecForSource, targetLanguage, sourceLanguage, &tor, fail); } else { - processProject(nestComplain, pfi, option, parser, visitor, options, codecForSource, + processProject(nestComplain, proFile, option, parser, visitor, options, codecForSource, targetLanguage, sourceLanguage, parentTor, fail); } pro->deref(); @@ -624,7 +623,8 @@ int main(int argc, char **argv) printErr(LU::tr("The -pro option should be followed by a filename of .pro file.\n")); return 1; } - proFiles += args[i]; + QString file = QDir::cleanPath(QFileInfo(args[i]).absoluteFilePath()); + proFiles += file; numFiles++; continue; } else if (arg.startsWith(QLatin1String("-I"))) { @@ -700,7 +700,8 @@ int main(int argc, char **argv) } if (file.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive) || file.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) { - proFiles << file; + QString cleanFile = QDir::cleanPath(fi.absoluteFilePath()); + proFiles << cleanFile; } else if (fi.isDir()) { if (options & Verbose) printOut(LU::tr("Scanning directory '%1'...\n").arg(file)); diff --git a/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/expectedoutput.txt b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/expectedoutput.txt index fd7a158..9a0e355 100644 --- a/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/expectedoutput.txt +++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/expectedoutput.txt @@ -1,2 +1,2 @@ -lupdate warning: TS files from command line will override TRANSLATIONS in project\.pro\. +lupdate warning: TS files from command line will override TRANSLATIONS in .*/project\.pro\. lupdate warning: TS files from command line prevent recursing into .*/subdir2/subsub2/subsub2\.pro\. diff --git a/tests/auto/linguist/lupdate/testdata/good/recurse_part/expectedoutput.txt b/tests/auto/linguist/lupdate/testdata/good/recurse_part/expectedoutput.txt index 808db18..fb04e2c 100644 --- a/tests/auto/linguist/lupdate/testdata/good/recurse_part/expectedoutput.txt +++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part/expectedoutput.txt @@ -1 +1 @@ -lupdate warning: no TS files specified\. Only diagnostics will be produced for 'project\.pro'\. +lupdate warning: no TS files specified\. Only diagnostics will be produced for '.*/project\.pro'\. -- 2.7.4