summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
Commit message (Collapse)AuthorAgeFilesLines
...
* QAbstractFileEngine: remove redundant endEntryList() overridesAhmad Samir2024-03-036-25/+1
| | | | | | | | QAFE sub-classes endEntryList() overrides returned nullptr, which is exactly what the base class implementation does. Change-Id: I2e901647cd087c3b8ba674db6e7b371e620af340 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QAbstractFileEngineIterator: ensure `m_path` ends with '/'Ahmad Samir2024-03-031-10/+12
| | | | | | | | ... when it's first assigned, instead of in currentFilePath(), muck like what QFileSystemIterator does. Change-Id: Id58ddcd6df5ad911fd5a62f1ca386e25626cb781 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QAbstractFileEngineIterator: general code cleanupAhmad Samir2024-03-032-48/+15
| | | | | | | | | | | | | | | | | | | - This is private API, no point having the d-pointer indirection; store the members in QAbstractFileEngineIterator directly. In subsequent commits sub-classes can use m_fileInfo from the base class, saving some space in e.g. QFSFileEngineIterator - Make setPath() public, it's a setter called by some QAFEI sub-classes - Remove EntryInfoType enum, nothing uses it This is a step towards remodeling QAFEIterator, and its subclasses, after QFileSystemIterator, i.e. adding a `virtual bool advance()` method, and dropping next()/hasNext(). This also is more inline with the QDirListing class (which uses STL-style iterators). Change-Id: I8ad774b854231e3cdce4935f04c8bf24031001dd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDirIterator: port to QDirListing internallyAhmad Samir2024-03-031-309/+61
| | | | | | | | | | De-duplicates the code between the two classes. [ChangeLog][Core][QDirIterator] This class has been deprecated and may be removed in a future Qt release. Use QDirListing instead. Change-Id: Iceba5091e72ea462dc9c5145a474bf312ee78043 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Port to QDirListingAhmad Samir2024-03-037-60/+43
| | | | | | | | | | | 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>
* QDirListing: minor code cleanupAhmad Samir2024-02-291-31/+32
| | | | | Change-Id: I37144958c67dd116972e2822868e29684c406757 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add QDirListing, an STL-style iterator for directory entriesAhmad Samir2024-02-296-237/+559
| | | | | | | | | | | | | | | | | | | | | | | | This class offers a forward-only const_iterator, that matches the system low-level functions' logic (e.g. readdir()/dirstream logic). This iterator is a std::input_iterator_tag. QDirIterator uses Java-style iterators that have a couple of issues: - They don't fit the logic of the underlying native system functions (readdir()/__dirstream and co.), there is no way to know if there is a next entry except by advancing the iterator (calling readdir()) first - As a consequence of the above, two QFileInfo objects, current and next, had to be used to fit that paradigm; and the code always iterated/stat'ed an extra entry past the one we want, e.g. when filtering The next step is porting QAbstractFileEngineIterator and its subclasses to be like QFileSystemIterator, i.e. replace hasNext()/next() with a `bool advance()` virtual method. This is easier to reason about than the Java-style iterators, and is more in-line with the new class. Discussed-on: https://lists.qt-project.org/pipermail/development/2023-December/044745.html Change-Id: I8e696cefdca18d8c78f803efdb83a73dd43eb720 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Copy QDirIterator.{cpp,h} to QDirListing.{cpp,h}Ahmad Samir2024-02-292-0/+630
| | | | | | | To make it easier to follow the history in git. Change-Id: I094056c1ec130aeef77aa2d20289ab766bc25083 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Containers: add max_size()Giuseppe D'Angelo2024-02-271-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One more method for STL compatibility. This one is particularly subtle as it's required by the `reservable-container` concept: https://eel.is/c++draft/ranges#range.utility.conv.general-3 Without this concept, ranges::to won't reserve() before copying the elements (out of a sized range which isn't a common_range). Implementation notes: there were already a couple of constants denoting the maximum QByteArray and QString size. Centralize that implementation in QTypedArrayData, so that QList can use it too. The maximum allocation size (private constant) needs a even more central place so that even QVLA can use it. Lacking anything better, I've put it in qcontainerfwd.h. Since our containers aren't allocator-aware, I can make max_size() a static member, and replace the existing constants throughout the rest of qtbase. (I can't kill them yet as they're used by other submodules.) [ChangeLog][QtCore][QList] Added max_size(). [ChangeLog][QtCore][QString] Added max_size(). [ChangeLog][QtCore][QByteArray] Added max_size(). [ChangeLog][QtCore][QVarLengthArray] Added max_size(). Change-Id: I176142e31b998f4f787c96333894b8f6653eb70d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QProcess: set the error message and state if qt_create_pipe() failsThiago Macieira2024-02-262-8/+29
| | | | | | | | | | | | | | | | | | | | It can only happen on resource exhaustion, which is an unlikely situation. That's probably why we didn't handle this case. But let's do it now. This necessitated that qt_create_pipe() return with errno/GetLastError() properly set, so save it and restore around functions that may change it (like qErrnoWarning()). Drive-by update of some warning messages. Testing this is not practical and is fragile, because it requires causing the resource exhaustion problem. Pick-to: 6.6 6.7 Change-Id: I76ffba14ece04f24b43efffd17aafe4f11f54c21 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* corelib: settings - make qsettings.cpp unity buildableTim Blechmann2024-02-261-0/+7
| | | | | | | | | | Both qsettings.cpp and qjsonparser.cpp defined Space in the global namespace. Hiding it in one of them in an implementation namespace resolves the name clash. Pick-to: 6.7 6.6 6.5 Change-Id: I8dd1244f80d87f3908597ed82c8e41b49b7b916c Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QUrlQuery: Use new comparison helper macrosRym Bouabid2024-02-232-13/+24
| | | | | | | | | | | | | | | QUrlQuery had operator==() and operator!=() defined as public member functions, so use QT_CORE_REMOVED_SINCE and removed_api.cpp to get rid of these methods and replace them with a hidden friend. Use QT_TEST_ALL_EQUALITY_OPS macro in unit-tests. Use new \compares command in the documentation to describe the comparison operators provided by QUrlQuery. Task-number: QTBUG-120303 Change-Id: I083487a134887010ebbb78906d2c1982f2ad41b5 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QFileSystemIterator/Darwin: enforce NFC encoding in QStringThiago Macieira2024-02-221-1/+9
| | | | | | | | | | | | | Amends 83f7125ac866ed5a2aaace56ffc866f21f9730b4. We replaced QFile::decodeName() with QStringDecoder so we'd know whether the decoding from UTF-8 had failed, but forgot about Darwin's enforced normalization. Fixes: QTBUG-122624 Change-Id: I01ec3c774d9943adb903fffd17b5edc54c34c067 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Robert Griebl <robert.griebl@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QStorageInfo: Use new comparison helper macrosRym Bouabid2024-02-222-17/+18
| | | | | | | | | | | | | | Replace operator==() and operator!=() private friends with comparesEqual(). Use QT_TEST_ALL_EQUALITY_OPS macro in unit-tests. Use new \compares command in the documentation to describe the comparison operators provided by QStorageInfo. Task-number: QTBUG-120303 Change-Id: I6434dc8382f6554b9e60840bac4abaeb95b70db6 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QProcessEnvironment: Use new comparison helper macrosRym Bouabid2024-02-222-7/+17
| | | | | | | | | | | | | | | QProcessEnvironment had operator==() and operator!=() defined as public member functions, so use QT_CORE_REMOVED_SINCE and removed_api.cpp to get rid of these methods and replace them with a hidden friend. Use QT_TEST_ALL_EQUALITY_OPS macro in unit-tests. Use new \compares command in the documentation to describe the comparison operators provided by QProcessEnvironment. Task-number: QTBUG-120303 Change-Id: I4c57f6cfb9589e82a37eea6993e079212b34cecd Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QFileInfo and QDir: use new \compares commandRym Bouabid2024-02-212-0/+3
| | | | | | | | ... to describe the comparison operators provided by these classes. Task-number: QTBUG-120303 Change-Id: I611a1801eb038586bfe57be9b502b6f17f3d5742 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Be more verbose if QT_LOGGING_DEBUG is setKai Köhne2024-02-201-9/+29
| | | | | | | Pick-to: 6.7 Fixes: QTBUG-121380 Change-Id: Ieb977ada03aa0128cbaeee796f42508fd6db4031 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Apple: Fix a few deprecation warnings after bumping deployment targetsTor Arne Vestbø2024-02-191-13/+8
| | | | | | | | | | | | - kIOMasterPortDefault -> kIOMainPortDefault - Use UTType instead of Carbon Core functions/constants - NSWorkspace iconForFileType -> iconForContentType - Removed obsoleted kUTTypeInkText pasteboard type There are still a few more, but these will be fixed in follow ups. Change-Id: Ibbca226d578b4ba64bd9c8c5d0addc1870114a20 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* QLoggingRegistry: cut out the QMap middle-manMarc Mutz2024-02-172-4/+5
| | | | | | | | | | | | | | | | | | | In Qt 6, QMap is just a shared pointer to a std::map. QLoggingRegistry::qtCategoryEnvironmentOverrides is never copied, though, so the implicit sharing that QMap adds on top of std::map is useless. Use the underlying std::map directly. Yes, the std::map API is a bit raw around the edges (std::pair value_type), but we're professionals here. This saves more than 1.1KiB in TEXT size on optimized AMD64 GCC 11 C++20 Linux builds. Change-Id: Id72b2432ed41a97700cc2d9ecafa902b919efe84 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QLoggingRegistry: further defend against non-NUL-terminated stringsMarc Mutz2024-02-172-7/+7
| | | | | | | | | | | | | | | | | Various functions in QLoggingRegistry took QByteArrayView, but they continued to assume that the data was NUL-terminated (converting back to const char* by calling data()). Make sure only NUL-terminated strings are passed by taking in the tranditional way, as const char*. Keep QByteArrayView when storing in the map as key, to avoid comparing just pointer values (as opposed to the string content). Amends 806545fcc8d6b3b96a5191a00a31e9a39837189c. Pick-to: 6.7 6.6 6.5 Change-Id: I232167d4c91070369e770c41d3ea53bd2406a03f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFileInfo: Use new comparison helper macrosRym Bouabid2024-02-142-16/+20
| | | | | | | | | | | | QFileInfo had operator==() and operator!=() defined as public member functions, so use QT_CORE_REMOVED_SINCE and removed_api.cpp to get rid of these methods and replace them with a hidden friend. Use QT_TEST_ALL_EQUALITY_OPS macro in unit-tests. Task-number: QTBUG-120303 Change-Id: Ie290df230b0f608a0965dccba9184382291cad8e Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QFilesystemWatcher: speed up the unittestsAhmad Samir2024-02-141-1/+11
| | | | | | | | | | | | | | | | | | | The only backend that requires longer wait times is QPollingFileSystemWatcherEngine; lower the interval of the polling engine for the unittests (using the same objectName() trick that is used to force using a specific watcher engine). Remove the comment about FAT32 filesystems, there is no where on the CI where this test fails so far. Before: Totals: 23 passed, 0 failed, 0 skipped, 0 blacklisted, 127027ms After: Totals: 23 passed, 0 failed, 0 skipped, 0 blacklisted, 666ms Change-Id: I96378f810463fa5c4ebdc13946ea23810e80f144 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDir: Use new comparison helper macrosRym Bouabid2024-02-132-12/+18
| | | | | | | | | | | | QDir had operator==() and operator!=() defined as public member functions, so use QT_CORE_REMOVED_SINCE and removed_api.cpp to get rid of these methods and replace them with a hidden friend. Use QTestPrivate::testEqualityOperators() helper function in unit-tests. Task-number: QTBUG-120303 Change-Id: I86c2ba18b8b114efd9f62fc2fd628bc9065b04b2 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Doc: Qt Core: Fully qualify \variable documentationTopi Reinio2024-02-131-7/+7
| | | | | | | | | | | Upcoming changes to QDoc require API entities to be fully qualified; previously, QDoc maintained a list of 'open namespaces' that were part of matching the documented entity with its declaration, but that concept does not work for parallelized parsing where the order of processing can be arbitrary. Change-Id: If8f84df4f429ef92c861d6094e58448bd658a540 Reviewed-by: Luca Di Sera <luca.disera@qt.io>
* QLoggingRegistry: disable copyingMarc Mutz2024-02-091-0/+1
| | | | | | | | | It's not copied, and copying would probably be a bad idea, so make sure it's not done inadvertently. Pick-to: 6.7 6.6 6.5 Change-Id: Ia7397906c0efb07ac5e079580bdbb15f4bf4911e Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* QFileSystemIterator/Unix: use QStringDecoderAhmad Samir2024-02-093-20/+27
| | | | | | | | | | | | | | | | | | | | The end result is a QFileInfo constructed from the QFileSystemEntry; QFileSystemEntry's API will at some point convert the NativePath (QBA on Unix) to a QString, e.g. when it calls findLastSeparator(). So instead of converting the parent dir path from Utf8 to Utf16 multiple times, store the dir path as a QString once in the constructor. Use QStringDecoder to convert the dirent->d_name to Utf16 and check the decoder's hasError(); which as Thiago pointed out, is more efficient than using isValidUtf8(), throwing away the results, then converting to unicode anyway later on in QDirIteratorPrivate::advance(). (Ironically) `QFileSystemEntry::NativePath nativePath` is still used on Windows. Change-Id: Icd2b130103640b502862d210d64926b99c499a01 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUrl IDNA: Update to Unicode 15.1Ievgenii Meshcheriakov2024-02-081-17/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | Unicode 15.1 (more spcifically UTS #46, revision 31) changes how host names are processed. The initial Unicode host name mapping is done without validity checking. That check was used in the past to mark QUrl's invalid. This patch inserts simplified validity check later. This check is similar to one performed before conversion to unicode, but does not include BiDi check to keep names starting with xn-- valid. Additional complication is that U+1E9E LATIN CAPITAL LETTER SHARP S must be mapped to "ss" with transitional processing. It is not possible anymore to predict whether Qt implementation considers a URL valid by using only error codes in the tests vectors file. The test was adjusted to expect an empty string (indicating invalid QUrl) or string matching the entry in vectors file if there are any processing errors specified for that entry. Unblacklist tst_QUrlUts46::idnaTestV2. Task-number: QTBUG-121529 Change-Id: Iad5dadd1a6695fa54b432e35000b350cd6e06341 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QFileSystemMetaData: add is{Readable,Writable,Executable} gettersAhmad Samir2024-02-082-3/+7
| | | | | Change-Id: I18cc56435f5e725ad6b80797291cabaf63fc2fb3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make use of methods defined in utils unix layerKrzysztof Sommerfeld2024-02-061-1/+2
| | | | | | | | | | Some unix-like concepts are supported by VxWorks VSB layer - UTILS_UNIX. One of such methods is getgrgid(). Include it in `qfilesystemengine_unix.cpp`, so that we don't need to exclude VxWorks from code that uses it anymore. Task-number: QTBUG-115777 Change-Id: I72b301647bfdb208cb6859bb0f9994e3537fc345 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFileSystemIterator: simplify the constructorAhmad Samir2024-02-035-14/+5
| | | | | | | | Neither implementation (Unix and Windows) uses the QStringList or the QDir::Filters args. Change-Id: I6a552e41eb37e4b76246e35d43ac4d34a4ae9d12 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFileSystemIterator: set errno to 0 before calling readdir()Ahmad Samir2024-02-031-0/+12
| | | | | | | | | | | So that errno can be used to distinguish between "reached end of dir stream" state and an error. Set errno to something more useful (EILSEQ) when we fail to decode an entry's name, requested by Thiago in code review. Change-Id: I8091144d25e5e5aa875cf40eaf6ee13c9e409ee7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFileSystemIterator: manage dirstream with unique_ptrAhmad Samir2024-02-032-17/+13
| | | | | | | | | | | Less manual resource clean-ups. Drive-by changes, initialize members in-class. Also remove an unused include. Change-Id: I03cd12e1c6c12338d09daba916cd34cb36f04260 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFileInfo: clarify the docs with respect to "file" == file system entryAhmad Samir2024-02-021-156/+188
| | | | | | | | | | | | | The word "file" could be slightly misleading in this context, because it refers to an entry on the file system, which could be a regular file, a dir, a special character device. Clarify the meaning by using "file system entry" instead of just "file". Fixes: QTBUG-120688 Pick-to: 6.7 6.6 6.5 Change-Id: Ic2a91cc74336a6718c13ad1ffd9f2c4001e5d63f Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFileSystemEngine: use nativeFilePath()Ahmad Samir2024-02-011-4/+3
| | | | | | | Instead of filePath() then converting to QByteArray. Change-Id: I6f656774979bedde5c657613303518750ab06855 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUrl IDNA: Fix typoIevgenii Meshcheriakov2024-01-261-3/+3
| | | | | | Change-Id: I5188e00f515486ef27a38c1181490bcb7c4695ec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QAbstractFileEngine: remove forward declarations of non-existent classesAhmad Samir2024-01-261-3/+0
| | | | | | | | Amends 7bbe79fe5f54ed7542d935600036d3c8b401505f, which dropped QAbstractFileEngine from the public API. Change-Id: I1877eb32a61c0457d2fa0d4dadf3a98cb78c78ef Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFileInfo: de-duplicate docs wrt. fetching info of a symlink's targetAhmad Samir2024-01-261-52/+34
| | | | | | | | | | | Not the symlink itself. Drive-by change: fix a typo, `treats` not `threats` :) Pick-to: 6.7 6.6 6.5 Change-Id: Iac793cf80bdd17e6424e877de780fce0b28236bb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* QFileInfo: de-duplicate docs wrt. QResource pathsAhmad Samir2024-01-251-4/+4
| | | | | | | Pick-to: 6.7 6.6 6.5 Change-Id: I8a99a3aacc68bf43da21e1101c838154d06aef6e Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFile::moveToTrash: add documentation about run time and fail conditionsThiago Macieira2024-01-251-0/+21
| | | | | | | | | | | | | | | | | | All of the implementations will attempt to perform a filesystem rename, so the runtime is constant for a single file and possibly for a directory full of files too. The macOS and Windows implementations use the OS API so they run with slightly elevated privileges. That means they don't fail under normal conditions. The XDG implementation will fail if the file or dir being trashed resides on a volume which doesn't have an existing trash location for the current user and one such cannot be created either, or if the hardlinking/renaming fails (usually with EXDEV). Pick-to: 6.6 6.7 Change-Id: I76ffba14ece04f24b43efffd17abd67e20196f2b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Remove qfunctions_vxworks files and usage as it is no longer neededMarcin Zdunek2024-01-251-2/+2
| | | | | | Task-number: QTBUG-115777 Change-Id: I0d803ac7ce067737b79a39a267a2b0eb509ae0b8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix code style - add missing trailing commaJonathan Ketchker2024-01-231-1/+1
| | | | | | | | | | | | For better consistency and git changes tracking add trailing comma at the end of the last value of an enum. See also code-review at: https://codereview.qt-project.org /c/qt/qtbase/+/528392/comment/663ba25a_51ed514b/ Pick-to: 6.7 Change-Id: Ibcfcfb1ba1a8ba4b59297bf17103181a0ee6eafc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QProcess: align treatment of early start errorsThiago Macieira2024-01-222-5/+5
| | | | | | | | | | | | | | | | There are a couple of possible runtime errors that could happen before the state was changed to QProcess::Starting. This aligns the Unix code with Windows, which has the state transition at the top, and with the documentation which says we will enter QProcess::Starting state. Complements commit 956b2495285251e4840ec32885ffa2cfbb7bd79c, repeating what it did for Unix (removing the overwriting of the error message that openChannel() sets) on Windows. We also need to ensure cleanup() is always called. Pick-to: 6.6 6.7 Change-Id: I76ffba14ece04f24b43efffd17aafdd47f908bf1 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QStorageInfo/Linux: use FS_IOC_GETFSLABEL to get the labelsThiago Macieira2024-01-221-7/+46
| | | | | | | | | | | | | | | | | | | | | | | | This ioctl was introduced in kernel version 4.18 and before that it was used for btrfs alone. It is currently (kernel v6.7) supported by: * btrfs * ext2/ext4 * f2fs * gfs2 * xfs See man ioctl_fslabel(2) This means we won't need to list the /dev/disks/by-label directory if you only have mounted filesystems like the above or tmpfs (which doesn't support labels). On my system, there are still two cases that cause the listing: * a mount point not readable by my user, such as /.snapshots and /root * a FAT32 filesystem mounted on /boot/efi Pick-to: 6.7 Change-Id: I76ffba14ece04f24b43efffd17ab3dced74ffd2c Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QStorageInfo/Linux: merge doStat() and initRootPath()Thiago Macieira2024-01-222-25/+8
| | | | | | | | | | The doStat() function was too simple. Plus, we can now avoid having to come up with an non-zero-but-unused device ID for some corner cases. Pick-to: 6.7 Change-Id: I76ffba14ece04f24b43efffd17ab3a79e54e636d Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QStorageInfo/Linux: move retrieveVolumeInfo() up because it won't failThiago Macieira2024-01-221-1/+1
| | | | | | | | | | | | | initRootPath() may fail, so let's make sure we do extract some information from the FS even if that does. Issue introduced by 3e330a79ec8d273630660eefae42995018421c0c ("QStorageInfo/Linux: rewrite the label retriever to use device IDs") Task-number: QTBUG-121140 Pick-to: 6.7 Change-Id: I76ffba14ece04f24b43efffd17ab2df71af8c4e0 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QStorageInfo/Linux: fix getting information on unmounted btrfs subvolsThiago Macieira2024-01-211-5/+23
| | | | | | | | | | | | | | | Amends 1cd6c6c69e9813c791f8bebb6c0c9214ce765060. Btrfs can have subvolumes and each one of them is assigned a device ID when the filesystem is loaded into the kernel. But subvolumes don't all have to be a mountpoint of their own: if we insist on matching device IDs, as initRootPath() was doing, we'd fail at finding the mount point. Fixes: QTBUG-121140 Pick-to: 6.7 Change-Id: I76ffba14ece04f24b43efffd17ab39f503000dd7 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QProcess/Doc: clarify that early crashes happen after started()Thiago Macieira2024-01-211-0/+6
| | | | | | | | | | | This is notable when dynamic linking fails, because that happens before the first line of main() (or equivalent) of the child process, so even banners printed by that function may be missing. Pick-to: 6.7 Change-Id: I5201966b308e48989c06fffd17aa9837156e23f4 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
* QProcess/Doc: clarify that started() may be emitted very earlyThiago Macieira2024-01-211-12/+15
| | | | | | | | | | | | | | | | | | | | On Windows, process creation is synchronous so we will always emit either started() or errorOccurred() before QProcess::start() returns. This condition doesn't currently happen on Unix systems, but we could do that because we're now using vfork() on most platforms, so the child process has either successfully execve()d or _exit()ed before QProcessPrivate::startProcess continued. Drive-by reorganization of the code to remove the one-line \note in the middle of the docs. Pick-to: 6.5 6.6 6.7 Fixes: QTBUG-120968 Task-number: QTCREATORBUG-30066 Change-Id: I4d0668e0fae5299551ff91480828a68e62fdacec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Doc: fix QStandardPaths::displayName qdoc warning on macOSVolker Hilsheimer2024-01-201-0/+2
| | | | | | | | | | | | | | | The function definition at the location of the documentation is not used on Q_OS_DARWIN, so qdoc cannot tie the documentation to it, leaving broken links and qdoc warnings when building the documentation on macOS. Fix this by explicitly specifying the function that's being documented. Pick-to: 6.7 Change-Id: Icf2ad1eba9e9ec8cbeea3818b414f740fa31083f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
* Add sys/types.h include to fix build with muslAndré Klitzing2024-01-152-1/+4
| | | | | | | | | This amends c82ed8b2795cbf6d82dfe3857fec7c16688137a4. Pick-to: 6.7 Fixes: QTBUG-120766 Change-Id: I2584c62d35c6ee0a9c8687a476f7eab52bd52af2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>