diff options
Diffstat (limited to 'src/corelib/io/qfilesystemiterator_p.h')
-rw-r--r-- | src/corelib/io/qfilesystemiterator_p.h | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/corelib/io/qfilesystemiterator_p.h b/src/corelib/io/qfilesystemiterator_p.h index 2792340637..2973b85cd2 100644 --- a/src/corelib/io/qfilesystemiterator_p.h +++ b/src/corelib/io/qfilesystemiterator_p.h @@ -20,44 +20,48 @@ #ifndef QT_NO_FILESYSTEMITERATOR #include <QtCore/qdir.h> -#include <QtCore/qdiriterator.h> #include <QtCore/qstringlist.h> #include <QtCore/private/qfilesystementry_p.h> #include <QtCore/private/qfilesystemmetadata_p.h> -// Platform-specific headers #if !defined(Q_OS_WIN) -#include <QtCore/qscopedpointer.h> +#include <private/qstringconverter_p.h> #endif +#include <memory> + QT_BEGIN_NAMESPACE class QFileSystemIterator { public: - QFileSystemIterator(const QFileSystemEntry &entry, QDir::Filters filters, - const QStringList &nameFilters, QDirIterator::IteratorFlags flags - = QDirIterator::FollowSymlinks | QDirIterator::Subdirectories); + QFileSystemIterator(const QFileSystemEntry &entry, QDir::Filters filters); ~QFileSystemIterator(); bool advance(QFileSystemEntry &fileEntry, QFileSystemMetaData &metaData); private: - QFileSystemEntry::NativePath nativePath; + QString dirPath; // Platform-specific data #if defined(Q_OS_WIN) - QString dirPath; + QFileSystemEntry::NativePath nativePath; HANDLE findFileHandle; QStringList uncShares; bool uncFallback; int uncShareIndex; bool onlyDirs; #else - QT_DIR *dir; - QT_DIRENT *dirEntry; - int lastError; + struct DirStreamCloser { + void operator()(QT_DIR *dir) { if (dir) QT_CLOSEDIR(dir); } + }; + using DirPtr = std::unique_ptr<QT_DIR, DirStreamCloser>; + DirPtr dir; + + QT_DIRENT *dirEntry = nullptr; + int lastError = 0; + QStringDecoder toUtf16; #endif Q_DISABLE_COPY_MOVE(QFileSystemIterator) |