summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2024-06-08 20:21:03 +0300
committerAhmad Samir <a.samirh78@gmail.com>2024-06-19 05:47:20 +0300
commitc203c41109e41d03de8145a541ff5c8fbe976492 (patch)
tree4d957cf1fe65c74475ae1bd2342faa520388588f /src
parent0a1a8355f313ac951e3e615f47aca40f421fc4bc (diff)
QFileSystemIterator: add constructor that takes QFileSystemEntry only
This is in preparation to adding constructors that take QDirListing::IteratorFlags, I would have had to add an init() private method to deduplicate the code, so instead add a constructor that can be delegated to. Pick-to: 6.8 Task-number: QTBUG-125859 Change-Id: Idbc76fcba50f9d0016e4ddba03b2f532a33231bd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/io/qfilesystemiterator_p.h1
-rw-r--r--src/corelib/io/qfilesystemiterator_unix.cpp9
-rw-r--r--src/corelib/io/qfilesystemiterator_win.cpp7
3 files changed, 13 insertions, 4 deletions
diff --git a/src/corelib/io/qfilesystemiterator_p.h b/src/corelib/io/qfilesystemiterator_p.h
index 2973b85cd2a..c55d5c6d317 100644
--- a/src/corelib/io/qfilesystemiterator_p.h
+++ b/src/corelib/io/qfilesystemiterator_p.h
@@ -37,6 +37,7 @@ class QFileSystemIterator
{
public:
QFileSystemIterator(const QFileSystemEntry &entry, QDir::Filters filters);
+ QFileSystemIterator(const QFileSystemEntry &entry);
~QFileSystemIterator();
bool advance(QFileSystemEntry &fileEntry, QFileSystemMetaData &metaData);
diff --git a/src/corelib/io/qfilesystemiterator_unix.cpp b/src/corelib/io/qfilesystemiterator_unix.cpp
index a1130728ef0..f06ff253442 100644
--- a/src/corelib/io/qfilesystemiterator_unix.cpp
+++ b/src/corelib/io/qfilesystemiterator_unix.cpp
@@ -19,12 +19,10 @@ QT_BEGIN_NAMESPACE
Native filesystem iterator, which uses ::opendir()/readdir()/dirent from the system
libraries to iterate over the directory represented by \a entry.
*/
-QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry, QDir::Filters filters)
+QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry)
: dirPath(entry.filePath()),
toUtf16(QStringDecoder::Utf8)
{
- Q_UNUSED(filters);
-
dir.reset(QT_OPENDIR(entry.nativeFilePath().constData()));
if (!dir) {
lastError = errno;
@@ -34,6 +32,11 @@ QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry, QDir::Fi
}
}
+QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry, QDir::Filters)
+ : QFileSystemIterator(entry)
+{
+}
+
QFileSystemIterator::~QFileSystemIterator() = default;
bool QFileSystemIterator::advance(QFileSystemEntry &fileEntry, QFileSystemMetaData &metaData)
diff --git a/src/corelib/io/qfilesystemiterator_win.cpp b/src/corelib/io/qfilesystemiterator_win.cpp
index 7644a1a0786..d2e3904af6d 100644
--- a/src/corelib/io/qfilesystemiterator_win.cpp
+++ b/src/corelib/io/qfilesystemiterator_win.cpp
@@ -14,7 +14,7 @@ using namespace Qt::StringLiterals;
bool done = true;
-QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry, QDir::Filters filters)
+QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry)
: dirPath(entry.filePath())
, nativePath(entry.nativeFilePath())
, findFileHandle(INVALID_HANDLE_VALUE)
@@ -33,6 +33,11 @@ QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry, QDir::Fi
// In MSVC2015+ case we prepend //?/ for longer file-name support
if (!dirPath.endsWith(u'/'))
dirPath.append(u'/');
+}
+
+QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry, QDir::Filters filters)
+ : QFileSystemIterator(entry)
+{
if ((filters & (QDir::Dirs|QDir::Drives)) && (!(filters & (QDir::Files))))
onlyDirs = true;
}