summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qdiriterator.cpp
Commit message (Collapse)AuthorAgeFilesLines
* QDir(Iterator): code tidiesGiuseppe D'Angelo2021-05-161-3/+3
| | | | | | | | | | | | | * Turn some `flags & bit` statements that rely on QFlags->int->bool implicit conversions, into some more idiomatic `return flags.testAnyFlag(bit)`. This is in preparation for a future patch, and to avoid inserting casts (return statements do not contextually convert to bool). * Remove a magic constant, replacing it by the symbolic one. Change-Id: I62fc2b2bf6f0ab8fad121edd19cb2ea0d9e3582a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Adjust code format, add space after 'if'Zhang Sheng2020-11-161-2/+2
| | | | | | Change-Id: Ice081c891ff7f4b766f49dd4bd5cf18c30237acf Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: hjk <hjk@qt.io>
* Fix regular expression initialize with incorrect filtersZhang Yu2020-11-091-3/+3
| | | | | | | | | | | | | | | | | | | The filters used to construct regular expression is the parameter of QDirIteratorPrivate constructor,and not the member variable 'filters' of QDirIteratorPrivate. When using filters as QDir::NoFilter to construct QDirIteratorPrivate, then the regular expression will incorrectly initialize with QDir::CaseSensitive(result of QDir::NoFilter),and not Qt::CaseInsensitive(result of QDir::AllEntries). Therefore, using the '_filters' to replace the parameter 'filters' Fixes: QTBUG-88227 Pick-to: 5.15 Change-Id: I8a21fe1075fd95981e328a161a978e4fe546c9ca Reviewed-by: Simon Hausmann <hausmann@gmail.com> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Doc: provide a code example of QDirIterator's nameFilters parameterMitch Curtis2020-08-241-1/+6
| | | | | | Change-Id: I56f9251f17bab0f835979a5feadec1fa896c9d69 Pick-to: 5.15 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Use QList instead of QVector in corelib implementationJarek Kobus2020-06-291-1/+1
| | | | | | | | Omitting state machine and docs for now. Task-number: QTBUG-84469 Change-Id: Ibfa5e7035515773461f6cdbff35299315ef65737 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Add a QRegularExpression::fromWildcard() convenience methodLars Knoll2020-05-061-3/+3
| | | | | | | | | Simplify constructing QRegularExpression objects from a glob pattern. Change-Id: I06f60b1dfea3da969e2474dedd44b6ca5d456d7d Reviewed-by: Simon Hausmann <hausmann@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove QRegExp from the bootstrap libraryLars Knoll2020-05-061-25/+3
| | | | | | | All it's uses have been replaces with QRegularExpression. Change-Id: I5bcdfdd8a39dad6d1288f18f1b24d2eea9e028d2 Reviewed-by: Simon Hausmann <hausmann@gmail.com>
* QDirIterator: port visitedLinks from QSet to QDuplicateTrackerMarc Mutz2020-05-031-7/+7
| | | | | | | | | | | | | | | Apart from a more fitting, minimal, API, QDuplicateTracker also transparently uses C++17 pmr::monotonic_buffer_resource to avoid, or at least reduce, memory allocations. The old code performed the visitedLinks check unconditionally, but since we add entries to visitedLinks only when following symlinks (and this property cannot be changed under iteration, as `iteratorFlags` is a const member), the new code only performs the check conditionally, with unchanged semantics. Change-Id: Ia2c2dda16136ef5256e2c345b8ecba530883ee37 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDirIterator: move a guard condition from caller to calleeMarc Mutz2020-05-031-4/+4
| | | | | | | | | | | | | The private pushDirectory() method is only called from the QDirIterator ctor and from checkAndPushDirectory(). Moving the loop check from checkAndPushDirectory() to pushDirectory() therefore doesn't change anything, since, for the ctor case, it will always fail. This is preparation of using QDuplicateTracker for `visitedLinks`. Change-Id: I609934002dabebf0a3e7a516b8398eae7db770d5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDirIterator: make a confusing condition less soMarc Mutz2020-05-031-2/+1
| | | | | | | | | | | The old code checked for non-empty-ness before asking whether it contains a certain path. But an empty container cannot contain any path. Simply remove the isEmpty() check. Change-Id: Ie40279a8db4900c2f7892c2a058206d622565b10 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove QRegExp dependencies and mentionsLars Knoll2020-03-301-0/+2
| | | | | Change-Id: I399f8980f56eda5d60b554aa942bf045ab91e0d6 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Do not anchor an already-anchored regexpGiuseppe D'Angelo2020-01-171-1/+1
| | | | | | | | | | wildcardToRegularExpression() returns an anchored regexp, so it is pointless to anchor it again. Change-Id: If470179d63ae7ca2e7f137c0f403ec5bb5be8aaf Task-number: QTBUG-81396 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
* Standardize on unique_ptr to hold QAbstractFileEngineMarc Mutz2019-07-281-2/+4
| | | | | | | | | This will make it possible to return it from functions in an owner, as exemplified in the QFileInfoPrivate ctor, unlike QScopedPointer, which lacks move special member functions. Change-Id: I179ffa4f656e1b83c23e0f67d1542834460ff382 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Use QRegularExpression for filtering in QDirIteratorLars Knoll2019-07-031-10/+28
| | | | | | | | | | | | | Reduce our usage of QRegExp in preparation towards deprecating it. This also brings it in line with QDir that already uses QRegularExpression for filtering. Keep the old QRegExp based code around in bootstrapped mode, since qmake uses this functionality. Change-Id: I98b9d2875c30e17e406b6711dfe3265ba37624ac Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-05-071-1/+2
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qobject.cpp src/corelib/kernel/qvariant.h src/corelib/tools/qlist.h Done-With: Milian Wolff <milian.wolff@kdab.com> Done-With: Allan Sandfeld Jensen <allan.jensen@qt.io> Change-Id: I6803f7239aa137a51a7467fab7cc7a01302a848d
| * fix crash when using ALDI usb-stick with broken filesystemNick Shaforostov2019-05-051-1/+2
| | | | | | | | | | | | | | | | | | | | | | I was using a cheap usb-stick from ALDI supermarket with fat32, and my application crashed because filesystem was empty. Unrealistic scenario, but still just returning here false is better than a crash Change-Id: I8979d5a4e19ce57770ab03983e847b272ebf7019 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QRegExp include cleanupSamuel Gaist2019-04-191-0/+1
|/ | | | | | | | | | | | | | | | QRegExp includes can be found in several files where there's not even a use of the class. This patch aims to avoid needless includes as well as follow the "include only what you use" moto. This patch removes a QRegExp include from the QStringList header which means that there is likely going to be code breaking since QStringList is used in many places and would get QRegExp in. [ChangeLog][Potentially Source-Incompatible Changes] qstringlist.h no longer includes qregexp.h. Change-Id: I32847532f16e419d4cb735ddc11a26551127e923 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDirIterator docs: add a cool recursive file-finding snippetShawn Rutledge2017-05-161-0/+4
| | | | | | | | This is one of the main use cases for QDirIterator, but it wasn't obvious enough that it's possible. Change-Id: Idae11cfe75dd0e16f1a960bba2470b1695d11241 Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* Warn if files are not found because of features.filesystemiteratorStephan Binner2017-05-081-0/+2
| | | | | | Change-Id: Ife3197aa1c56ba3ab6e7f530fbcbcf761f223b16 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Avoid re-use of QFileSystemMetaData instance in dir entry listingSimon Hausmann2016-09-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | We've observed that on machines with SELinux installed but disabled, the behavior of readdir() changes slightly. In the case of tst_qdir's entryList QDir::Hidden test case, the listing of the directory contents returns DT_UNKNOWN for the files and (broken) symlink(s) that are present. When SELinux is enabled, we do see DT_REG and DT_LNK. Our fallback to DT_UNKNOWN however resets merely the knownFlags, it does not reset entryFlags, as all the other cases do. The bug comes when QDirIteratorPrivate::advance() re-uses the QFileSystemMetaData instance across iterations, and this way we get the entryFlags values from a previous iteration (with != DT_UNKNOWN) into the evaluation of an entry with DT_UNKNOWN. The more conservative approach to fixing this is here by assuming that QFileSystemMetaData is not designed for re-use and re-initialize it explicitly in the iteration. Change-Id: I875856f5ee63a7072d172033e90d02cf41bcab20 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Updated license headersJani Heikkinen2016-01-151-14/+20
| | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* Doc: don't promise a null QString if we can't be held to itThiago Macieira2013-12-071-1/+1
| | | | | | | | | | | QDirIterator::next() returns QDirIterator::filePath(), which returns QFileInfo::filePath() on a default-constructed QFileInfo. That specifically returns a non-null QString for some reason. I don't know why but I won't change it. Task-number: QTBUG-35422 Change-Id: I6bbcf8b83153e44c36d6320d27ce223ef28503ba Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Doc: Adding mark-up to boolean default values.Jerome Pasion2013-10-081-3/+3
| | | | | | | | | | | | | | | | | Default values should have mark-up to denote that they are code. This commit changes: -"property is true" to "property is \c true". -"Returns true" to "Returns \c true". -"property is false" to "property is \c false". -"returns true" to "returns \c true". -"returns false" to "returns \c false". src/3rdparty and non-documentation instances were ignored. Task-number: QTBUG-33360 Change-Id: Ie87eaa57af947caa1230602b61c5c46292a4cf4e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Doc: Add \inmodule QtCore to all QtCore class doc bodiesThiago Macieira2012-08-231-0/+1
| | | | | Change-Id: I19100755c97cc155c76a859e19940e9f9222d34e Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Fix qdoc erros in qfile and related classesLars Knoll2012-08-181-4/+1
| | | | | Change-Id: I56b66e6eeb06c84e1157a701a814aebb1ddf4845 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Don't use the QRegExp methods that modify the object [QtCore]Thiago Macieira2012-04-271-1/+2
| | | | | | | | | | | | | | QRegExp matching methods modify the object, which we don't want to. In particular, when we receive a QRegExp from the user or we store in a context that might require thread-safety, make sure we make a copy before using it. QRegularExpression has no such shortcoming. Task-number: QTBUG-25064 Change-Id: Icf22986cd5f6fd086518c78a7d56e6cadfe9f5f6 Reviewed-by: Giuseppe D'Angelo <dangelog@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Doc: Prepare for building modular QtCore docs.Casper van Donderen2012-04-191-1/+1
| | | | | | | | | | | | This change fixes most qdoc errors in QtCore. There are about 900 left. The main thing this change does is moving documentation from qtcore from /doc/src to /src/corelib/doc. Other issues resolved are mis-use of qdoc commands. Change-Id: I002d01edfb13575e8bf27ce91596a577a92562d1 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com> Reviewed-by: Jerome Pasion <jerome.pasion@nokia.com>
* QDirIterator: don't inherit from QDirMarc Mutz2012-03-231-3/+1
| | | | | | | | | | | | Remove the inheritance hack used in QDirIterator to gain access to QDir's d-pointer by simply making QDirIterator a friend of QDir. This allows to turn QDir into a final class. Change-Id: I97efef8714bb194d62b9fe5192ce240a90f2bf97 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Drop file-engine abstraction from public APIJoão Abecasis2012-02-221-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This abstraction imposed serious performance penalties and is being dropped from the public API. In particular, by allowing file names to be arbitrarily hijacked by different file engines, and requiring engines to be instantiated in order to decide, it imposed unnecessary overhead on all file operations. Another flaw in the design with direct impact on performance is how engines have no way to provide (or retain) additional information obtained when querying the filesystem. In many places this has meant repeated operations on the file system, where useful information is immediately discarded to be queried again subsequently. For Qt 4.8 a major refactoring of the code base took place to allow bypassing the file-engine abstraction in select places, with considerable performance gains observed. In Qt 5 it is expected we'll be able to take this further, reaping even more benefits, but the abstraction has to go. [Dropping this now does not preclude that virtual file systems make an appearance in Qt at a later point in Qt 5's lifecycle. Hopefully with a new and improved abstraction.] Forward declarations for QFileExtension(Result) were dropped, as the classes were never used or defined. Tests using "internalized" classes will only fully run on developer builds. QFSFileEngine was removed altogether from exception safety test, as it isn't its intent to test internal API. Change-Id: Ie910e6c2628be202ea9e05366b091d6d529b246b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* QDir::NoDotAndDotDot is now QDir::NoDot|QDir::NoDotDot.Jonas M. Gastal2012-01-311-2/+0
| | | | | | Change-Id: I8ef7782258c2ec02ad2ec2a5d5cab90f53c62aa3 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I311e001373776812699d6efc045b5f742890c689 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I431bbbf76d7c27d8b502f87947675c116994c415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update licenseheader text in source files for qtbase Qt moduleJyri Tahtela2011-05-241-17/+17
| | | | | | | Updated version of LGPL and FDL licenseheaders. Apply release phase licenseheaders for all source files. Reviewed-by: Trust Me
* Initial import from the monolithic Qt.Qt by Nokia2011-04-271-0/+561
This is the beginning of revision history for this module. If you want to look at revision history older than this, please refer to the Qt Git wiki for how to use Git history grafting. At the time of writing, this wiki is located here: http://qt.gitorious.org/qt/pages/GitIntroductionWithQt If you have already performed the grafting and you don't see any history beyond this commit, try running "git log" with the "--follow" argument. Branched from the monolithic repo, Qt master branch, at commit 896db169ea224deb96c59ce8af800d019de63f12