diff options
author | Casper van Donderen <casper.vandonderen@nokia.com> | 2012-06-12 17:22:20 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-14 03:03:38 +0200 |
commit | 5bbe8756fd9b95cbe2d93cd59aba27741c4ffabe (patch) | |
tree | 02e5ac647781a7abde7dc7ffa94b9cf8841229a9 /src/tools | |
parent | 8a5af08cf030d4fc147e749c086a6e3a217fbbe4 (diff) |
QDoc: Check if index file was already inserted in list.
Previously it was possible to insert exactly the same index file in the
map twice by specifying an -indexdir which is the same as -installdir.
Probably you can also have two indexes with the same name that happen to
have the same creation time, but changes of that happening are slim to
none.
Change-Id: I6be5fb9d04839026830b9948887b282489b379c0
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/qdoc/main.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/tools/qdoc/main.cpp b/src/tools/qdoc/main.cpp index 9dd5384dd3..ec6a0727d6 100644 --- a/src/tools/qdoc/main.cpp +++ b/src/tools/qdoc/main.cpp @@ -94,6 +94,11 @@ static const struct { { 0, 0 } }; +bool creationTimeBefore(const QFileInfo &fi1, const QFileInfo &fi2) +{ + return fi1.lastModified() < fi2.lastModified(); +} + static bool highlighting = false; static bool showInternal = false; static bool obsoleteLinks = false; @@ -280,30 +285,32 @@ static void processQdocconfFile(const QString &fileName) } for (int i = 0; i < dependModules.size(); i++) { QString indexToAdd; - QMultiMap<uint, QFileInfo> foundIndices; + QList<QFileInfo> foundIndices; for (int j = 0; j < indexDirs.size(); j++) { QString fileToLookFor = indexDirs[j] + QLatin1Char('/') + dependModules[i] + QLatin1Char('/') + dependModules[i] + QLatin1String(".index"); if (QFile::exists(fileToLookFor)) { QFileInfo tempFileInfo(fileToLookFor); - foundIndices.insert(tempFileInfo.lastModified().toTime_t(), tempFileInfo); + if (!foundIndices.contains(tempFileInfo)) + foundIndices.append(tempFileInfo); } } + qSort(foundIndices.begin(), foundIndices.end(), creationTimeBefore); if (foundIndices.size() > 1) { /* QDoc should always use the last entry in the multimap when there are multiple index files for a module, since the last modified file has the highest UNIX timestamp. */ - qDebug() << "Multiple indices found for dependency:" << dependModules[i]; - qDebug() << "Using" << foundIndices.value( - foundIndices.keys()[foundIndices.size() - 1]).absoluteFilePath() + qDebug() << "Multiple indices found for dependency:" << dependModules[i] << "\nFound:"; + for (int k = 0; k < foundIndices.size(); k++) + qDebug() << foundIndices[k].absoluteFilePath(); + qDebug() << "Using" << foundIndices[foundIndices.size() - 1].absoluteFilePath() << "as index for" << dependModules[i]; - indexToAdd = foundIndices.value( - foundIndices.keys()[foundIndices.size() - 1]).absoluteFilePath(); + indexToAdd = foundIndices[foundIndices.size() - 1].absoluteFilePath(); } else if (foundIndices.size() == 1) { - indexToAdd = foundIndices.value(foundIndices.keys()[0]).absoluteFilePath(); + indexToAdd = foundIndices[0].absoluteFilePath(); } else { qDebug() << "No indices for" << dependModules[i] << |