Port to QDirListing
Use QDirListing in the Bootstrap build instead of QDirIterator. Drive-by changes: - more const variables - use emplace_back() instead of append() where appropriate Change-Id: Ie1f0d03856e557c4bfabfff38a87edc7da86d091 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
d5eb5d2f8d
commit
7cf39bd785
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#include <qregularexpression.h>
|
||||
#include <qdir.h>
|
||||
#include <qdiriterator.h>
|
||||
#include <qdirlisting.h>
|
||||
#include <qset.h>
|
||||
|
||||
#include <time.h>
|
||||
|
|
@ -314,16 +314,15 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t)
|
|||
const QStringList sourceFilesFilter = sourceFilesForImplicitRulesFilter();
|
||||
QStringList fixifiedSourceDirs = fileFixify(QList<QString>(source_directories.constBegin(), source_directories.constEnd()), FileFixifyAbsolute);
|
||||
fixifiedSourceDirs.removeDuplicates();
|
||||
constexpr auto filters = QDir::Files | QDir::NoDotAndDotDot;
|
||||
for (const QString &sourceDir : std::as_const(fixifiedSourceDirs)) {
|
||||
QDirIterator dit(sourceDir, sourceFilesFilter, QDir::Files | QDir::NoDotAndDotDot);
|
||||
while (dit.hasNext()) {
|
||||
const QFileInfo fi = dit.nextFileInfo();
|
||||
QString &duplicate = fileNames[fi.completeBaseName()];
|
||||
for (const auto &dirEntry : QDirListing(sourceDir, sourceFilesFilter, filters)) {
|
||||
QString &duplicate = fileNames[dirEntry.completeBaseName()];
|
||||
if (duplicate.isNull()) {
|
||||
duplicate = fi.filePath();
|
||||
duplicate = dirEntry.filePath();
|
||||
} else {
|
||||
warn_msg(WarnLogic, "%s conflicts with %s", qPrintable(duplicate),
|
||||
qPrintable(fi.filePath()));
|
||||
qPrintable(dirEntry.filePath()));
|
||||
duplicatesFound = true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
#include <ioutils.h>
|
||||
|
||||
#include <qdir.h>
|
||||
#include <qdiriterator.h>
|
||||
#include <qdirlisting.h>
|
||||
#include <qcryptographichash.h>
|
||||
#include <qhash.h>
|
||||
#include <quuid.h>
|
||||
|
|
@ -1293,18 +1293,16 @@ void VcprojGenerator::initDeploymentTool()
|
|||
}
|
||||
|
||||
int pathSize = searchPath.size();
|
||||
QDirIterator iterator(searchPath, QStringList() << nameFilter
|
||||
, QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks
|
||||
, QDirIterator::Subdirectories);
|
||||
constexpr auto filters = QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks;
|
||||
using F = QDirListing::IteratorFlag;
|
||||
QDirListing dirList(searchPath, QStringList{nameFilter}, filters, F::Recursive);
|
||||
// foreach dirIterator-entry in d
|
||||
while(iterator.hasNext()) {
|
||||
iterator.next();
|
||||
|
||||
QString absoluteItemPath = Option::fixPathToTargetOS(QFileInfo(iterator.filePath()).absolutePath());
|
||||
for (const auto &dirEntry : dirList) {
|
||||
const QString absoluteItemPath = Option::fixPathToTargetOS(dirEntry.absolutePath());
|
||||
// Identify if it is just another subdir
|
||||
int diffSize = absoluteItemPath.size() - pathSize;
|
||||
// write out rules
|
||||
conf.deployment.AdditionalFiles += iterator.fileName()
|
||||
conf.deployment.AdditionalFiles += dirEntry.fileName()
|
||||
+ "|" + absoluteItemPath
|
||||
+ "|" + itemDevicePath + (diffSize ? (absoluteItemPath.right(diffSize)) : QLatin1String(""))
|
||||
+ "|0;";
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
#include "qreadwritelock.h"
|
||||
#include "qvariant.h"
|
||||
// built-in handlers
|
||||
#include "qdiriterator.h"
|
||||
#include "qdirlisting.h"
|
||||
#include "qstringbuilder.h"
|
||||
|
||||
#include <QtCore/private/qfilesystementry_p.h>
|
||||
|
|
@ -590,11 +590,8 @@ bool QAbstractFileEngine::isRelativePath() const
|
|||
QStringList QAbstractFileEngine::entryList(QDir::Filters filters, const QStringList &filterNames) const
|
||||
{
|
||||
QStringList ret;
|
||||
QDirIterator it(fileName(), filterNames, filters);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
ret << it.fileName();
|
||||
}
|
||||
for (const auto &dirEntry : QDirListing(fileName(), filterNames, filters))
|
||||
ret.emplace_back(dirEntry.fileName());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -826,11 +823,12 @@ bool QAbstractFileEngine::cloneTo(QAbstractFileEngine *target)
|
|||
\internal
|
||||
|
||||
If all you want is to iterate over entries in a directory, see
|
||||
QDirIterator instead. This class is only for custom file engine authors.
|
||||
QDirListing instead. This class is useful only for custom file engine
|
||||
authors.
|
||||
|
||||
QAbstractFileEngineIterator is a unidirectional single-use virtual
|
||||
iterator that plugs into QDirIterator, providing transparent proxy
|
||||
iteration for custom file engines.
|
||||
iterator that plugs into QDirListing, providing transparent proxy
|
||||
iteration for custom file engines (for example, QResourceFileEngine).
|
||||
|
||||
You can subclass QAbstractFileEngineIterator to provide an iterator when
|
||||
writing your own file engine. To plug the iterator into your file system,
|
||||
|
|
@ -869,7 +867,7 @@ bool QAbstractFileEngine::cloneTo(QAbstractFileEngine *target)
|
|||
Note: QAbstractFileEngineIterator does not deal with QDir::IteratorFlags;
|
||||
it simply returns entries for a single directory.
|
||||
|
||||
\sa QDirIterator
|
||||
\sa QDirListing
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
|
@ -911,15 +909,18 @@ QAbstractFileEngineIterator::QAbstractFileEngineIterator(QDir::Filters filters,
|
|||
/*!
|
||||
Destroys the QAbstractFileEngineIterator.
|
||||
|
||||
\sa QDirIterator
|
||||
\sa QDirListing
|
||||
*/
|
||||
QAbstractFileEngineIterator::~QAbstractFileEngineIterator()
|
||||
{
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the path for this iterator. QDirIterator is responsible for
|
||||
assigning this path; it cannot change during the iterator's lifetime.
|
||||
|
||||
Returns the path for this iterator. It can be set using setPath().
|
||||
Typically the path is passed to beginEntryList(), which sets the path.
|
||||
|
||||
\note The path should't be changed once iteration begins.
|
||||
|
||||
\sa nameFilters(), filters()
|
||||
*/
|
||||
|
|
@ -932,7 +933,7 @@ QString QAbstractFileEngineIterator::path() const
|
|||
\internal
|
||||
|
||||
Sets the iterator path to \a path. This function is called from within
|
||||
QDirIterator.
|
||||
QDirListing.
|
||||
*/
|
||||
void QAbstractFileEngineIterator::setPath(const QString &path)
|
||||
{
|
||||
|
|
@ -1032,8 +1033,6 @@ QVariant QAbstractFileEngineIterator::entryInfo(EntryInfoType type) const
|
|||
optimize its performance.
|
||||
|
||||
Reimplement this function in a subclass to advance the iterator.
|
||||
|
||||
\sa QDirIterator::next()
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
|
@ -1042,19 +1041,17 @@ QVariant QAbstractFileEngineIterator::entryInfo(EntryInfoType type) const
|
|||
This pure virtual function returns \c true if there is at least one more
|
||||
entry in the current directory (i.e., the iterator path is valid and
|
||||
accessible, and the iterator has not reached the end of the entry list).
|
||||
|
||||
\sa QDirIterator::hasNext()
|
||||
*/
|
||||
|
||||
/*!
|
||||
Returns an instance of a QAbstractFileEngineIterator using \a filters for
|
||||
entry filtering and \a filterNames for name filtering. This function is
|
||||
called by QDirIterator to initiate directory iteration.
|
||||
called by QDirListing to initiate directory iteration.
|
||||
|
||||
QDirIterator takes ownership of the returned instance, and deletes it when
|
||||
QDirListing takes ownership of the returned instance, and deletes it when
|
||||
it's done.
|
||||
|
||||
\sa QDirIterator
|
||||
\sa QDirListing
|
||||
*/
|
||||
QAbstractFileEngine::Iterator *QAbstractFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
#ifndef QT_NO_DEBUG_STREAM
|
||||
#include "qdebug.h"
|
||||
#endif
|
||||
#include "qdiriterator.h"
|
||||
#include "qdirlisting.h"
|
||||
#include "qdatetime.h"
|
||||
#include "qstring.h"
|
||||
#if QT_CONFIG(regularexpression)
|
||||
|
|
@ -346,9 +346,8 @@ inline void QDirPrivate::initFileLists(const QDir &dir) const
|
|||
QMutexLocker locker(&fileCache.mutex);
|
||||
if (!fileCache.fileListsInitialized) {
|
||||
QFileInfoList l;
|
||||
QDirIterator it(dir);
|
||||
while (it.hasNext())
|
||||
l.append(it.nextFileInfo());
|
||||
for (const auto &dirEntry : QDirListing(dir))
|
||||
l.emplace_back(dirEntry.fileInfo());
|
||||
|
||||
sortFileList(sort, l, &fileCache.files, &fileCache.fileInfos);
|
||||
fileCache.fileListsInitialized = true;
|
||||
|
|
@ -1427,18 +1426,16 @@ QStringList QDir::entryList(const QStringList &nameFilters, Filters filters,
|
|||
}
|
||||
}
|
||||
|
||||
QDirIterator it(d->dirEntry.filePath(), nameFilters, filters);
|
||||
QDirListing dirList(d->dirEntry.filePath(), nameFilters, filters);
|
||||
QStringList ret;
|
||||
if (needsSorting) {
|
||||
QFileInfoList l;
|
||||
while (it.hasNext())
|
||||
l.append(it.nextFileInfo());
|
||||
for (const auto &dirEntry : dirList)
|
||||
l.emplace_back(dirEntry.fileInfo());
|
||||
d->sortFileList(sort, l, &ret, nullptr);
|
||||
} else {
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
ret.append(it.fileName());
|
||||
}
|
||||
for (const auto &dirEntry : dirList)
|
||||
ret.emplace_back(dirEntry.fileName());
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -1475,9 +1472,8 @@ QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, Filters filter
|
|||
}
|
||||
|
||||
QFileInfoList l;
|
||||
QDirIterator it(d->dirEntry.filePath(), nameFilters, filters);
|
||||
while (it.hasNext())
|
||||
l.append(it.nextFileInfo());
|
||||
for (const auto &dirEntry : QDirListing(d->dirEntry.filePath(), nameFilters, filters))
|
||||
l.emplace_back(dirEntry.fileInfo());
|
||||
QFileInfoList ret;
|
||||
d->sortFileList(sort, l, nullptr, &ret);
|
||||
return ret;
|
||||
|
|
@ -1646,12 +1642,11 @@ bool QDir::removeRecursively()
|
|||
bool success = true;
|
||||
const QString dirPath = path();
|
||||
// not empty -- we must empty it first
|
||||
QDirIterator di(dirPath, QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
|
||||
while (di.hasNext()) {
|
||||
const QFileInfo fi = di.nextFileInfo();
|
||||
const QString &filePath = di.filePath();
|
||||
constexpr auto dirFilters = QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot;
|
||||
for (const auto &dirEntry : QDirListing(dirPath, dirFilters)) {
|
||||
const QString &filePath = dirEntry.filePath();
|
||||
bool ok;
|
||||
if (fi.isDir() && !fi.isSymLink()) {
|
||||
if (dirEntry.isDir() && !dirEntry.isSymLink()) {
|
||||
ok = QDir(filePath).removeRecursively(); // recursive
|
||||
} else {
|
||||
ok = QFile::remove(filePath);
|
||||
|
|
@ -1969,8 +1964,8 @@ bool QDir::exists(const QString &name) const
|
|||
bool QDir::isEmpty(Filters filters) const
|
||||
{
|
||||
Q_D(const QDir);
|
||||
QDirIterator it(d->dirEntry.filePath(), d->nameFilters, filters);
|
||||
return !it.hasNext();
|
||||
QDirListing dirList(d->dirEntry.filePath(), d->nameFilters, filters);
|
||||
return dirList.cbegin() == dirList.cend();
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@
|
|||
#ifndef QT_NO_FILESYSTEMITERATOR
|
||||
|
||||
#include <QtCore/qdir.h>
|
||||
#include <QtCore/qdiriterator.h>
|
||||
#include <QtCore/qstringlist.h>
|
||||
|
||||
#include <QtCore/private/qfilesystementry_p.h>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
#include "qfsfileengine_iterator_p.h"
|
||||
#include "qfilesystemengine_p.h"
|
||||
#include "qdatetime.h"
|
||||
#include "qdiriterator.h"
|
||||
#include "qset.h"
|
||||
#include <QtCore/qdebug.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#include "qstorageinfo_linux_p.h"
|
||||
|
||||
#include "qdiriterator.h"
|
||||
#include "qdirlisting.h"
|
||||
#include <private/qcore_unix_p.h>
|
||||
#include <private/qtools_p.h>
|
||||
|
||||
|
|
@ -99,13 +99,13 @@ static inline quint64 retrieveDeviceId(const QByteArray &device, quint64 deviceI
|
|||
return st.st_rdev;
|
||||
}
|
||||
|
||||
static QDirIterator devicesByLabel()
|
||||
static QDirListing devicesByLabel()
|
||||
{
|
||||
static const char pathDiskByLabel[] = "/dev/disk/by-label";
|
||||
static constexpr auto LabelFileFilter =
|
||||
QDir::AllEntries | QDir::System | QDir::Hidden | QDir::NoDotAndDotDot;
|
||||
|
||||
return QDirIterator(QLatin1StringView(pathDiskByLabel), LabelFileFilter);
|
||||
return QDirListing(QLatin1StringView(pathDiskByLabel), LabelFileFilter);
|
||||
}
|
||||
|
||||
static inline auto retrieveLabels()
|
||||
|
|
@ -116,13 +116,11 @@ static inline auto retrieveLabels()
|
|||
};
|
||||
QList<Entry> result;
|
||||
|
||||
QDirIterator it = devicesByLabel();
|
||||
while (it.hasNext()) {
|
||||
QFileInfo fileInfo = it.nextFileInfo();
|
||||
quint64 deviceId = retrieveDeviceId(QFile::encodeName(fileInfo.filePath()));
|
||||
for (const auto &dirEntry : devicesByLabel()) {
|
||||
quint64 deviceId = retrieveDeviceId(QFile::encodeName(dirEntry.filePath()));
|
||||
if (!deviceId)
|
||||
continue;
|
||||
result.emplaceBack(Entry{ decodeFsEncString(fileInfo.fileName()), deviceId });
|
||||
result.emplaceBack(Entry{ decodeFsEncString(dirEntry.fileName()), deviceId });
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
@ -153,12 +151,9 @@ static inline QString retrieveLabel(const QStorageInfoPrivate &d, quint64 device
|
|||
if (!deviceId)
|
||||
return QString();
|
||||
|
||||
QDirIterator it = devicesByLabel();
|
||||
while (it.hasNext()) {
|
||||
QFileInfo fileInfo = it.nextFileInfo();
|
||||
QString name = fileInfo.fileName();
|
||||
if (retrieveDeviceId(QFile::encodeName(fileInfo.filePath())) == deviceId)
|
||||
return decodeFsEncString(std::move(name));
|
||||
for (const auto &dirEntry : devicesByLabel()) {
|
||||
if (retrieveDeviceId(QFile::encodeName(dirEntry.filePath())) == deviceId)
|
||||
return decodeFsEncString(dirEntry.fileName());
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
#include "qstorageinfo_p.h"
|
||||
|
||||
#include <QtCore/qdiriterator.h>
|
||||
#include <QtCore/qfileinfo.h>
|
||||
#include <QtCore/qtextstream.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
#ifndef QT_NO_TEMPORARYFILE
|
||||
|
||||
#include "qdebug.h"
|
||||
#include "qdiriterator.h"
|
||||
#include "qplatformdefs.h"
|
||||
#include "qrandom.h"
|
||||
#include "private/qtemporaryfile_p.h"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
#include "qcbormap.h"
|
||||
#include "qcborstreamreader.h"
|
||||
#include "qcborvalue.h"
|
||||
#include "qdiriterator.h"
|
||||
#include "qdirlisting.h"
|
||||
#include "qfileinfo.h"
|
||||
#include "qjsonarray.h"
|
||||
#include "qjsondocument.h"
|
||||
|
|
@ -303,7 +303,7 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path)
|
|||
|
||||
qCDebug(lcFactoryLoader) << "checking directory path" << path << "...";
|
||||
|
||||
QDirIterator plugins(path,
|
||||
QDirListing plugins(path,
|
||||
#if defined(Q_OS_WIN)
|
||||
QStringList(QStringLiteral("*.dll")),
|
||||
#elif defined(Q_OS_ANDROID)
|
||||
|
|
@ -311,8 +311,8 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path)
|
|||
#endif
|
||||
QDir::Files);
|
||||
|
||||
while (plugins.hasNext()) {
|
||||
QString fileName = plugins.next();
|
||||
for (const auto &dirEntry : plugins) {
|
||||
const QString &fileName = dirEntry.fileName();
|
||||
#ifdef Q_OS_DARWIN
|
||||
const bool isDebugPlugin = fileName.endsWith("_debug.dylib"_L1);
|
||||
const bool isDebugLibrary =
|
||||
|
|
@ -337,7 +337,7 @@ inline void QFactoryLoaderPrivate::updateSinglePath(const QString &path)
|
|||
Q_TRACE(QFactoryLoader_update, fileName);
|
||||
|
||||
QLibraryPrivate::UniquePtr library;
|
||||
library.reset(QLibraryPrivate::findOrCreate(QFileInfo(fileName).canonicalFilePath()));
|
||||
library.reset(QLibraryPrivate::findOrCreate(dirEntry.canonicalFilePath()));
|
||||
if (!library->isPlugin()) {
|
||||
qCDebug(lcFactoryLoader) << library->errorString << Qt::endl
|
||||
<< " not a plugin";
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#include <QtCore/QDataStream>
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QDirIterator>
|
||||
#include <QtCore/QDirListing>
|
||||
#include <QtCore/QFile>
|
||||
#include <QtCore/QCache>
|
||||
#include <QtCore/QMap>
|
||||
|
|
@ -121,9 +121,7 @@ static QTzTimeZoneHash loadTzTimeZones()
|
|||
const qsizetype cut = path.lastIndexOf(u'/');
|
||||
Q_ASSERT(cut > 0);
|
||||
const QDir zoneDir = QDir(path.first(cut));
|
||||
QDirIterator zoneFiles(zoneDir, QDirIterator::Subdirectories);
|
||||
while (zoneFiles.hasNext()) {
|
||||
const QFileInfo info = zoneFiles.nextFileInfo();
|
||||
for (const auto &info : QDirListing(zoneDir, QDirListing::IteratorFlag::Recursive)) {
|
||||
if (!(info.isFile() || info.isSymLink()))
|
||||
continue;
|
||||
const QString name = zoneDir.relativeFilePath(info.filePath());
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include "qfileinfogatherer_p.h"
|
||||
#include <qcoreapplication.h>
|
||||
#include <qdebug.h>
|
||||
#include <qdiriterator.h>
|
||||
#include <qdirlisting.h>
|
||||
#include <private/qabstractfileiconprovider_p.h>
|
||||
#include <private/qfileinfo_p.h>
|
||||
#ifndef Q_OS_WIN
|
||||
|
|
@ -419,9 +419,11 @@ void QFileInfoGatherer::getFileInfos(const QString &path, const QStringList &fil
|
|||
|
||||
QStringList allFiles;
|
||||
if (files.isEmpty()) {
|
||||
QDirIterator dirIt(path, QDir::AllEntries | QDir::System | QDir::Hidden);
|
||||
while (!isInterruptionRequested() && dirIt.hasNext()) {
|
||||
fileInfo = dirIt.nextFileInfo();
|
||||
constexpr auto dirFilters = QDir::AllEntries | QDir::System | QDir::Hidden;
|
||||
for (const auto &dirEntry : QDirListing(path, dirFilters)) {
|
||||
if (isInterruptionRequested())
|
||||
break;
|
||||
fileInfo = dirEntry.fileInfo();
|
||||
fileInfo.stat();
|
||||
allFiles.append(fileInfo.fileName());
|
||||
fetch(fileInfo, base, firstTime, updatedFiles, path);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
#include <QtCore/qpair.h>
|
||||
#include <QtCore/qdir.h>
|
||||
#include <QtGui/qicon.h>
|
||||
#include <QtCore/qdiriterator.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(filesystemmodel);
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
#include <qdir.h>
|
||||
#include <qdatastream.h>
|
||||
#include <qdatetime.h>
|
||||
#include <qdiriterator.h>
|
||||
#include <qdirlisting.h>
|
||||
#include <qurl.h>
|
||||
#include <qcryptographichash.h>
|
||||
#include <qdebug.h>
|
||||
|
|
@ -478,7 +478,6 @@ qint64 QNetworkDiskCache::expire()
|
|||
d->lastItem.reset();
|
||||
|
||||
const QDir::Filters filters = QDir::AllDirs | QDir:: Files | QDir::NoDotAndDotDot;
|
||||
QDirIterator it(cacheDirectory(), filters, QDirIterator::Subdirectories);
|
||||
|
||||
struct CacheItem
|
||||
{
|
||||
|
|
@ -488,11 +487,12 @@ qint64 QNetworkDiskCache::expire()
|
|||
};
|
||||
std::vector<CacheItem> cacheItems;
|
||||
qint64 totalSize = 0;
|
||||
while (it.hasNext()) {
|
||||
QFileInfo info = it.nextFileInfo();
|
||||
if (!info.fileName().endsWith(CACHE_POSTFIX))
|
||||
using F = QDirListing::IteratorFlag;
|
||||
for (const auto &dirEntry : QDirListing(cacheDirectory(), filters, F::Recursive)) {
|
||||
if (!dirEntry.fileName().endsWith(CACHE_POSTFIX))
|
||||
continue;
|
||||
|
||||
const QFileInfo &info = dirEntry.fileInfo();
|
||||
QDateTime fileTime = info.birthTime(QTimeZone::UTC);
|
||||
if (!fileTime.isValid())
|
||||
fileTime = info.metadataChangeTime(QTimeZone::UTC);
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@
|
|||
#endif
|
||||
|
||||
#include <QtCore/qdir.h>
|
||||
#include <QtCore/qdiriterator.h>
|
||||
#include <QtCore/qdirlisting.h>
|
||||
#include <QtCore/qfile.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
|
@ -680,9 +680,12 @@ QList<QSslCertificate> QSslCertificate::fromPath(const QString &path,
|
|||
QRegularExpression pattern(QRegularExpression::anchoredPattern(sourcePath));
|
||||
#endif
|
||||
|
||||
QDirIterator it(pathPrefixString, QDir::Files, QDirIterator::FollowSymlinks | QDirIterator::Subdirectories);
|
||||
while (it.hasNext()) {
|
||||
QString filePath = startIndex == 0 ? it.next() : it.next().mid(startIndex);
|
||||
using F = QDirListing::IteratorFlag;
|
||||
constexpr auto iterFlags = F::FollowSymlinks | F::Recursive;
|
||||
for (const auto &dirEntry : QDirListing(pathPrefixString, QDir::Files, iterFlags)) {
|
||||
QString filePath = dirEntry.filePath();
|
||||
if (startIndex > 0)
|
||||
filePath.remove(0, startIndex);
|
||||
|
||||
#if QT_CONFIG(regularexpression)
|
||||
if (!pattern.match(filePath).hasMatch())
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
#include <QtNetwork/qssl.h>
|
||||
|
||||
#include <QtCore/qdir.h>
|
||||
#include <QtCore/qdiriterator.h>
|
||||
#include <QtCore/qdirlisting.h>
|
||||
#include <QtCore/qlist.h>
|
||||
#include <QtCore/qmutex.h>
|
||||
#include <QtCore/qscopeguard.h>
|
||||
|
|
@ -204,11 +204,11 @@ void QTlsBackendOpenSSL::ensureCiphersAndCertsLoaded() const
|
|||
#elif defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
|
||||
// check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there)
|
||||
const QList<QByteArray> dirs = QSslSocketPrivate::unixRootCertDirectories();
|
||||
QStringList symLinkFilter;
|
||||
symLinkFilter << "[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]"_L1;
|
||||
const QStringList symLinkFilter{
|
||||
u"[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]"_s};
|
||||
for (const auto &dir : dirs) {
|
||||
QDirIterator iterator(QLatin1StringView(dir), symLinkFilter, QDir::Files);
|
||||
if (iterator.hasNext()) {
|
||||
QDirListing dirList(QString::fromLatin1(dir), symLinkFilter, QDir::Files);
|
||||
if (dirList.cbegin() != dirList.cend()) { // Not empty
|
||||
QSslSocketPrivate::setRootCertOnDemandLoadingSupported(true);
|
||||
break;
|
||||
}
|
||||
|
|
@ -394,10 +394,9 @@ QList<QSslCertificate> systemCaCertificates()
|
|||
currentDir.setNameFilters(QStringList{QStringLiteral("*.pem"), QStringLiteral("*.crt")});
|
||||
for (const auto &directory : directories) {
|
||||
currentDir.setPath(QLatin1StringView(directory));
|
||||
QDirIterator it(currentDir);
|
||||
while (it.hasNext()) {
|
||||
for (const auto &dirEntry : QDirListing(currentDir)) {
|
||||
// use canonical path here to not load the same certificate twice if symlinked
|
||||
certFiles.insert(it.nextFileInfo().canonicalFilePath());
|
||||
certFiles.insert(dirEntry.canonicalFilePath());
|
||||
}
|
||||
}
|
||||
for (const QString& file : std::as_const(certFiles))
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
#include <QtCore/qcoreapplication.h>
|
||||
#include <QtCore/qdebug.h>
|
||||
#include <QtCore/qdir.h>
|
||||
#include <QtCore/qdiriterator.h>
|
||||
#include <QtCore/qdirlisting.h>
|
||||
#include <QtCore/qfile.h>
|
||||
#include <QtCore/qfileinfo.h>
|
||||
#include <QtCore/qfloat16.h>
|
||||
|
|
@ -3010,22 +3010,18 @@ QSharedPointer<QTemporaryDir> QTest::qExtractTestData(const QString &dirName)
|
|||
return result;
|
||||
}
|
||||
|
||||
QDirIterator it(resourcePath, QDirIterator::Subdirectories);
|
||||
if (!it.hasNext()) {
|
||||
qWarning("Resource directory '%s' is empty.", qPrintable(resourcePath));
|
||||
return result;
|
||||
}
|
||||
|
||||
while (it.hasNext()) {
|
||||
QFileInfo fileInfo = it.nextFileInfo();
|
||||
|
||||
if (!fileInfo.isDir()) {
|
||||
const QString destination = dataPath + u'/' + QStringView{fileInfo.filePath()}.mid(resourcePath.size());
|
||||
bool isResourceDirEmpty = true;
|
||||
for (const auto &dirEntry : QDirListing(resourcePath, QDirListing::IteratorFlag::Recursive)) {
|
||||
isResourceDirEmpty = false;
|
||||
if (!dirEntry.isDir()) {
|
||||
const QString &filePath = dirEntry.filePath();
|
||||
const QString destination =
|
||||
dataPath + u'/' + QStringView{filePath}.sliced(resourcePath.size());
|
||||
QFileInfo destinationFileInfo(destination);
|
||||
QDir().mkpath(destinationFileInfo.path());
|
||||
QFile file(fileInfo.filePath());
|
||||
QFile file(filePath);
|
||||
if (!file.copy(destination)) {
|
||||
qWarning("Failed to copy '%ls': %ls.", qUtf16Printable(fileInfo.filePath()),
|
||||
qWarning("Failed to copy '%ls': %ls.", qUtf16Printable(filePath),
|
||||
qUtf16Printable(file.errorString()));
|
||||
return result;
|
||||
}
|
||||
|
|
@ -3039,6 +3035,11 @@ QSharedPointer<QTemporaryDir> QTest::qExtractTestData(const QString &dirName)
|
|||
}
|
||||
}
|
||||
|
||||
if (isResourceDirEmpty) {
|
||||
qWarning("Resource directory '%s' is empty.", qPrintable(resourcePath));
|
||||
return result;
|
||||
}
|
||||
|
||||
result = std::move(tempDir);
|
||||
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
#include <QXmlStreamReader>
|
||||
#include <QStandardPaths>
|
||||
#include <QUuid>
|
||||
#include <QDirIterator>
|
||||
#include <QDirListing>
|
||||
#include <QElapsedTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSettings>
|
||||
|
|
@ -1222,6 +1222,7 @@ bool readInputFile(Options *options)
|
|||
}
|
||||
|
||||
{
|
||||
using ItFlag = QDirListing::IteratorFlag;
|
||||
const QJsonValue deploymentDependencies = jsonObject.value("deployment-dependencies"_L1);
|
||||
if (!deploymentDependencies.isUndefined()) {
|
||||
QString deploymentDependenciesString = deploymentDependencies.toString();
|
||||
|
|
@ -1230,11 +1231,9 @@ bool readInputFile(Options *options)
|
|||
QString path = options->qtInstallDirectory + QChar::fromLatin1('/');
|
||||
path += dependency;
|
||||
if (QFileInfo(path).isDir()) {
|
||||
QDirIterator iterator(path, QDirIterator::Subdirectories);
|
||||
while (iterator.hasNext()) {
|
||||
iterator.next();
|
||||
if (iterator.fileInfo().isFile()) {
|
||||
QString subPath = iterator.filePath();
|
||||
for (const auto &dirEntry : QDirListing(path, ItFlag::Recursive)) {
|
||||
if (dirEntry.isFile()) {
|
||||
const QString subPath = dirEntry.filePath();
|
||||
auto arch = fileArchitecture(*options, subPath);
|
||||
if (!arch.isEmpty()) {
|
||||
options->qtDependencies[arch].append(QtDependency(subPath.mid(options->qtInstallDirectory.size() + 1),
|
||||
|
|
@ -2724,12 +2723,11 @@ static bool mergeGradleProperties(const QString &path, GradleProperties properti
|
|||
void checkAndWarnGradleLongPaths(const QString &outputDirectory)
|
||||
{
|
||||
QStringList longFileNames;
|
||||
QDirIterator it(outputDirectory, QStringList(QStringLiteral("*.java")), QDir::Files,
|
||||
QDirIterator::Subdirectories);
|
||||
while (it.hasNext()) {
|
||||
const QString &filePath = it.next();
|
||||
if (filePath.size() >= MAX_PATH)
|
||||
longFileNames.append(filePath);
|
||||
using F = QDirListing::IteratorFlag;
|
||||
for (const auto &dirEntry : QDirListing(outputDirectory, QStringList(u"*.java"_s),
|
||||
QDir::Files, F::Recursive)) {
|
||||
if (dirEntry.size() >= MAX_PATH)
|
||||
longFileNames.append(dirEntry.filePath());
|
||||
}
|
||||
|
||||
if (!longFileNames.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ qt_internal_extend_target(Bootstrap
|
|||
../../corelib/io/qbuffer.cpp
|
||||
../../corelib/io/qdebug.cpp
|
||||
../../corelib/io/qdir.cpp
|
||||
../../corelib/io/qdiriterator.cpp
|
||||
../../corelib/io/qdirlisting.cpp
|
||||
../../corelib/io/qfile.cpp
|
||||
../../corelib/io/qfiledevice.cpp
|
||||
../../corelib/io/qfileinfo.cpp
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
#include <qdatetime.h>
|
||||
#include <qdebug.h>
|
||||
#include <qdir.h>
|
||||
#include <qdiriterator.h>
|
||||
#include <qdirlisting.h>
|
||||
#include <qfile.h>
|
||||
#include <qiodevice.h>
|
||||
#include <qlocale.h>
|
||||
|
|
@ -634,12 +634,12 @@ bool RCCResourceLibrary::interpretResourceFile(QIODevice *inputDevice,
|
|||
alias += slash;
|
||||
|
||||
QStringList filePaths;
|
||||
QDirIterator it(dir, QDirIterator::FollowSymlinks|QDirIterator::Subdirectories);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
if (it.fileName() == "."_L1 || it.fileName() == ".."_L1)
|
||||
using F = QDirListing::IteratorFlag;
|
||||
for (const auto &entry : QDirListing(dir, F::FollowSymlinks | F::Recursive)) {
|
||||
const QString &fileName = entry.fileName();
|
||||
if (fileName == "."_L1 || fileName == ".."_L1)
|
||||
continue;
|
||||
filePaths.append(it.filePath());
|
||||
filePaths.emplace_back(entry.filePath());
|
||||
}
|
||||
|
||||
// make rcc output deterministic
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include "qtmoduleinfo.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include <QDirIterator>
|
||||
#include <QDirListing>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonArray>
|
||||
#include <QDebug>
|
||||
|
|
@ -134,10 +134,8 @@ bool QtModuleInfoStore::populate(const QString &modulesDir, const QString &trans
|
|||
}
|
||||
|
||||
// Read modules, and assign a bit as ID.
|
||||
QDirIterator dit(modulesDir, { QLatin1String("*.json") }, QDir::Files);
|
||||
while (dit.hasNext()) {
|
||||
QString filePath = dit.next();
|
||||
QtModule module = moduleFromJsonFile(filePath, errorString);
|
||||
for (const auto &dirEntry : QDirListing(modulesDir, {u"*.json"_s}, QDir::Files)) {
|
||||
QtModule module = moduleFromJsonFile(dirEntry.filePath(), errorString);
|
||||
if (!errorString->isEmpty())
|
||||
return false;
|
||||
if (module.internal && module.name.endsWith(QStringLiteral("Private")))
|
||||
|
|
|
|||
Loading…
Reference in New Issue