summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
Commit message (Collapse)AuthorAgeFilesLines
* Clarify StripTrailingSlash behaviorKavindra Palaraja2017-01-081-1/+1
| | | | | | | | | StripTrailingSlash removes trailing slashes from the path, but not the entire URL. Task-number: QTBUG-47607 Change-Id: Id62b971e563e290b7ca000576bcc328616a3f1a2 Reviewed-by: David Faure <david.faure@kdab.com>
* Doc: add note about unsupported platforms for QProcessAleksey Lysenko2017-01-041-0/+3
| | | | | | | Task-number: QTBUG-57840 Change-Id: I46a26a9c4c6ad0aa6994945091a2904c3b51080f Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Doc: add a quick note about unfixed Windows encoding bugThiago Macieira2016-12-281-0/+3
| | | | | | Task-number: QTBUG-49640 Change-Id: Icb0289e3118a41dd9438fffd1492925b03de62d6 Reviewed-by: David Faure <david.faure@kdab.com>
* QLockFile: make sure we encode the hostname as UTF-8 in the lock fileDavid Faure2016-12-211-11/+2
| | | | | | | | | | | | | | | | | | | | We chose to use UTF-8 as it allows us to ensure there's no mistaking the hostname in case the locale is changed, if the host name contains characters outside of US-ASCII. But this didn't work because the code that wrote the hostname always used the local 8-bit codec instead of UTF-8. On Unix, we used the result of gethostname(3) directly, which is supposedly on the locale codec. This commit doesn't fix Windows, which requires _wgetenv, the plan being to encapsulate that with a qEnvironmentVariable() method. [ChangeLog][QtCore][QLockFile] Fixed a bug that caused QLockFile not to recognize a stale lock file if the machine's hostname contained non-US- ASCII characters, on Unix. A Windows fix is still pending. Task-number: QTBUG-49640 Change-Id: Ib9d045544ff370ec901626658a84ec4e6575fe21 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.8.0' into 5.8Liang Qi2016-12-161-0/+16
|\ | | | | | | | | | | | | | | | | Conflicts: doc/global/qt-cpp-defines.qdocconf src/plugins/platforms/android/qandroidplatformopenglcontext.h src/plugins/platforms/android/qandroidplatformtheme.h Change-Id: I13d51cc66f708138ff4d667ceea7d515992e58a4
| * qdoc: Define Q_COMPILER_UNICODE_STRINGSTopi Reinio2016-12-151-0/+16
| | | | | | | | | | | | | | | | | | | | | | Some public functions in QString and QDebug are declared inside Q_COMPILER_UNICODE_STRINGS. This commit defines it for QDoc, and adds documentation for QDebug functions that are now visible to QDoc. Change-Id: Ia7f2501c1dc7b8244dcc3ce4adcd2019fdbffcb6 Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDir::cd(): Handle UNC server paths correctlyFriedemann Kleint2016-12-122-37/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a bool *ok out parameter to qt_normalizePathSegments() and return false when ".." are left over for an absolute path, indicating an attempt to change above root. Factor out static helper qt_cleanPath() to be able to pass the return value to QDir::cd() and return on failure from there. Amends change 63f634322b2c0f795bd424be9e51953a10c701de, which did not handle UNC paths. Task-number: QTBUG-53712 Change-Id: I3e63a5dd0259306a0b99145348d815899582f78e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDir::cleanPath(): Do not cd above root paths (UNC, WinRT)Friedemann Kleint2016-12-121-19/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling QDir::cleanPath() on "//server/path/.." resulted in "/". Factor out a function to determine the root path part of an absolute path for later use, and handle some special cases: - Consider server name of "//server/path/.." as part of the prefix. - Check on the root path for WinRT. Task-number: QTBUG-53712 Change-Id: Ibddacf06212b6fc86fa74a5e4078df6cfd5b66f5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QSettings: Avoid unneeded sync() on destructionAlbert Astals Cid2016-11-291-0/+1
|/ | | | | | | | ... if sync() has already been called manually. Change-Id: I11bd6810aa3c1065a72ffaa2001d1bdbf8bf9c89 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge "Merge remote-tracking branch 'origin/5.7' into 5.8" into refs/staging/5.8Liang Qi2016-11-244-10/+29
|\
| * Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-244-10/+29
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/network/socket/qnativesocketengine_winrt.cpp tools/configure/configureapp.cpp tools/configure/environment.cpp Change-Id: Ieae6f2ee004a87f041751852b687484f91ee4480
| | * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-11-232-2/+21
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This also reverts commit 0d2f0164f45cb626c40a7c95026ba00fa56ac249. Conflicts: header.BSD-NEW qmake/Makefile.win32 src/openglextensions/qopenglextensions.cpp src/openglextensions/qopenglextensions.h src/winmain/qtmain_win.cpp src/winmain/qtmain_winrt.cpp tools/configure/configureapp.cpp util/glgen/qopenglextensions.cpp.header util/glgen/qopenglextensions.h.header Change-Id: If26c6f4111b342378dd88bbdc657e322d2ab6ad8
| | | * QDir::tempPath - use NSTemporaryDirectory on DarwinTimur Pocheptsov2016-11-221-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of hardcoded "/tmp". Task-number: QTBUG-57165 Change-Id: I9d3ae157c22ce131281b8279149eea87a26244e8 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| | | * Handle RemovePath correctly when calling matches()Andy Shaw2016-11-221-0/+3
| | | | | | | | | | | | | | | | | | | | Change-Id: Ied324a537df127e676fad26b42e658a9d5aeec9b Reviewed-by: David Faure <david.faure@kdab.com>
| | * | QtCore: Add missing overrideAlexander Volkov2016-11-162-8/+8
| | | | | | | | | | | | | | | | | | | | Change-Id: Ifdec31aabdd0371f36abbb382e49f52f5b58ee94 Reviewed-by: hjk <hjk@qt.io>
* | | | Clean up the resource reading codeSimon Hausmann2016-11-231-45/+24
|/ / / | | | | | | | | | | | | | | | | | | | | | Instead of doing the conversion from the big-endian data by hand, let's use the convenience functions from qendian.h. Change-Id: If3966ca94428afabb1f5c922967fb9970f976622 Reviewed-by: hjk <hjk@qt.io>
* | | QSettings: Replace deprecated Win32 SHGetSpecialFolderPathKai Koehne2016-11-231-35/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SHGetSpecialFolderPath is declared 'unsupported' by Microsoft, and has problems with non-ASCII characters. Replace it by the newer SHGetKnownFolderPath. Task-number: QTBUG-50570 Change-Id: I8b2dfa10fa5dc30e6c3be094a2ba8d7c3504f2ca GPush-Base: 4d181bd93234a3747b520d10417825a0147bfeb1 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | | Document The Public Suffix ListKai Koehne2016-11-233-3/+402
| | | | | | | | | | | | | | | | | | Change-Id: I3c8b00e04ed30209b0de0927b473ba2b9a4f0c87 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | Fix missing last modification time stamp in qrc contentSimon Hausmann2016-11-222-13/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | The time stamp is added at the end of the node information and consequently this also bumps the version. Task-number: QTBUG-57182 Change-Id: Ia10e006f28c0b168b2bcd74ed8b7098f84d10af3 Reviewed-by: hjk <hjk@qt.io>
* | | Unbreak a couple of configurationsLars Knoll2016-11-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Fix compilation with topleveldomain, textodfwriter and cssparser features disabled. Change-Id: I3f061fb09eef36cd640256a46cf77dde85a54d3d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | QStandardPaths: Do not check whether path exists (Windows)Kai Koehne2016-11-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's arguably better to return a non-existing location than no location at all. This makes it in line with the documentation for e.g. QStandardPaths::writableLocation that says Note: The storage location returned can be a directory that does not exist; i.e., it may need to be created by the system or the user. Finally, this was also the behavior of code that used SHGetSpecialFolderPath before. Change-Id: I5ee44747a38434535610e45a4d303b36ef79d42a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | | QStandardPaths: Replace deprecated Win32 SHGetSpecialFolderPathKai Koehne2016-11-081-50/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SHGetSpecialFolderPath is declared 'unsupported' by Microsoft, and has problems with non-ASCII characters. Replace it by the newer SHGetKnownFolderPath. To fix compilation with MinGW, we have to link in libuuid also in the bootstrapped tools. The alternative is redefining all GUID's (like we did for FOLDERID_Downloads), which is arguably less elegant. Task-number: QTBUG-50570 Change-Id: If99be559bc72de3734ae1fa4d50f960659739898 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-083-48/+2
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qalgorithms.h Change-Id: Ib8ce4d5d9ecd5b9c166d5b8b44e58f3e4e7283ff
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-11-043-48/+2
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/json/qjsonparser.cpp src/gui/opengl/qopengl.cpp Change-Id: Ib4d3208398399691839e6c6eaeb9006f99e3a62b
| | * Stop using readdir_r: glibc deprecated it and it's not a good ideaThiago Macieira2016-11-033-48/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | POSIX does not require that readdir() be reentrant even for operations on different dirent objects, but all implementations (according to the glibc documentation) already do that. Moreover, it's not a good idea to use readdir_r since the buffer space is limited by the caller, so certain file names may be too long (ENAMETOOLONG) -- we had a workaround for QNX, but for no other OS. According to the glibc documentation, it is expected that POSIX will mark readdir_r obsolete and instead require some form of reentrancy for readdir. This commit makes everyone use readdir instead. The macros in qplatformdefs.h are left behind in case someone else is using them. With glibc 2.24, we started getting: qplatformdefs.h:150:35: warning: ‘int readdir_r(DIR*, dirent*, dirent**)’ is deprecated [-Wdeprecated-declarations] qfilesystemiterator_unix.cpp:112:17: note: in expansion of macro ‘QT_READDIR_R’ Task-number: QTBUG-56088 Change-Id: I33dc971f005a4848bb8ffffd14749b4082f62e69 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
* | | Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-018-11312/+12857
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/win/msvc_version.cpp configure.pri mkspecs/macx-ios-clang/features/default_post.prf mkspecs/macx-ios-clang/features/resolve_config.prf mkspecs/features/uikit/default_post.prf mkspecs/features/uikit/resolve_config.prf src/corelib/io/qsettings_mac.cpp src/corelib/json/qjsondocument.cpp src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/cocoa/qnswindowdelegate.h src/plugins/platforms/cocoa/qnswindowdelegate.mm src/plugins/platforms/ios/ios.pro src/plugins/platforms/ios/kernel.pro src/plugins/platforms/ios/qiosintegration.h src/plugins/platforms/minimalegl/qminimaleglintegration.cpp tests/auto/gui/painting/qpainter/tst_qpainter.cpp tools/configure/environment.cpp Change-Id: I654845e54e40f5951fb78aab349ca667e9f27843
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-271-1/+1
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/ios/ios.pro src/plugins/platforms/ios/kernel.pro src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h src/plugins/platforms/ios/qiosintegration.h src/widgets/widgets/qcombobox.cpp tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp Change-Id: Ibaee7cbbba99e7c4b1d8926e55932ffa6030ce45
| | * Darwin: normalize all watched paths to composed fromErik Verbruggen2016-10-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will be done by all POSIX APIs for strings coming in that way, but because other code (like NSWhateverViews) will most likely return decomposed form, we make sure that those are in composed form too. Task-number: QTBUG-55896 Change-Id: I065e11cee6b59706d4346ed20d4b59b9b95163b8 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-2210-11326/+12883
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/eglfs/qeglfshooks.cpp Change-Id: I483f0dbd876943b184803f0fe65a0c686ad75db2
| | * QFileInfo: fix double sentence in apidocFrederik Schwarzer2016-10-211-2/+1
| | | | | | | | | | | | | | | Change-Id: Ie1cf32565b2fcb828ec381c45595adad1392e2ec Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
| | * Fix some typos in docs and apidocsFrederik Schwarzer2016-10-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | While "commonest" is still correct English, it's rather old-fashioned and "most common" predominates Qt's wording style. Change-Id: I20d72c098ee40b2a89f91e42f7208fe5b87286a2 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
| | * Normalize realpath(3) output to composed formErik Verbruggen2016-10-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All strings coming out of POSIX API calls are converted to composed form by QFile::decodeName. Do the same for realpath(3) output. This is especially important for HFS+, which will store file names in decomposed form, and APIs will therefore return strings in decomposed form. Task-number: QTBUG-55896 Change-Id: I5e51f4e5712ff26bf9644cbcf9a9603995748892 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| | * QUrl effective TLDs: update tableKai Koehne2016-10-212-11304/+12851
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are more than 1000 new entries since the table has been generated the last time. The autotest needs to be tweaked because the rules for the .mz domains have changed; use the .ck domain instead. Change-Id: Ife692afd46ac41a66604e966e5e8cb57c7aa649c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Windows: Fix regression in QFSFileEnginePrivate::nativeWrite()Andy Shaw2016-10-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change 0696566b1e19c8178e00c0d14f185935e17d9e8b caused the block size to be incorrect for data > 32MB. Since bytesToWrite changes within the do...while loop, then the block size can potentially change too each time. So it needs to be recalculated each time rather than just once. Task-number: QTBUG-56616 Change-Id: I9880d0985f2d0242c30e67230be7271eb806db95 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| | * Apple OS: Handle QSetting strings with embedded zero-bytesTor Arne Vestbø2016-10-184-16/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Saving strings with embedded zero-bytes (\0) as CFStrings would sometimes fail, and only write the part of the string leading up to the first zero-byte, instead of all the way to the final zero-terminator. This bug was revealed by the code-path that falls back to storing e.g. QTime as strings, via the helper method QSettingsPrivate::variantToString(). We now use the same approach as on platforms such as Windows and WinRT, where the string produced by variantToString() is checked for null-bytes, and if so, stored using a binary representation instead of as a string. For our case that means we fall back to CFData when detecting the null-byte. To separate strings from regular byte arrays, new logic has been added to variantToString() that wraps the null-byte strings in @String(). That way we can implement a fast-path when converting back from CFData, that doesn't go via the slow and lossy conversion via UTF8, and the resulting QVariant will be of type QVariant::ByteArray. The reason for using UTF-8 as the binary representation of the string is that in the case of storing a QByteArray("@foo") we need to still be able to convert it back to the same byte array, which doesn't work if the on-disk format is UTF-16. Task-number: QTBUG-56124 Change-Id: Iab2f71cf96cf3225de48dc5e71870d74b6dde1e8 Cherry-picked: 764f5bf48cc87f4c72550b853ab93b815454cd48 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Document use of BSD code in Qt CoreKai Koehne2016-10-282-0/+39
| | | | | | | | | | | | | | | Change-Id: I31305e40dc57ddd37e5ef35a52cc99dc7ebb3bc5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Recontribute QUrl::fromUserInputJames McDonnell2016-10-271-30/+0
| | | | | | | | | | | | | | | | | | | | | | | | Recontribute QUrl::fromUserInput under the corporate license agreement; i.e. remove the separate BSD license from the code. Change-Id: I1e0b4aab921fb20d2fd558fe732cea596ecbc9ca Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix QStandardPaths::FontsLocation to be compliant with the latest XDG specLars Knoll2016-10-261-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | According to the latest XDG spec, FontsLocation should point to XDG_DATA_DIR/fonts, not ~/.fonts. Task-number: QTBUG-55507 Change-Id: Ia62ffe172abbb93d5ce7fd58bdf038ff13954f1b Reviewed-by: David Faure <david.faure@kdab.com>
* | | Add configure feature for QUrl::topLevelDomainLars Knoll2016-10-114-0/+12
| | | | | | | | | | | | | | | Change-Id: I237af8c60a9572c707e7004c9a284dd6cd3306ce Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-10-113-46/+78
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/image/qpixmap.cpp src/widgets/kernel/qformlayout.cpp Change-Id: I8a8391a202adf7f18464a22ddf0a6c4974eab692
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-083-46/+78
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/network/access/qhttpnetworkconnection.cpp src/network/access/qhttpnetworkconnection_p.h Change-Id: I11f8641ef482efa8cee1b79977d19cc3182814b4
| | * Darwin: correct state restore when FSEventsStream starting failsErik Verbruggen2016-10-072-45/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous state was not restored completely when adding/removing paths resulted in a stream start failure. It also removes an autoreleasepool in restartStream, because both stopStream and startStream do already create an autoreleasepool of their own. (So, this pool will always be empty.) Change-Id: Idc674e9c040f346703ab3ec256957e787a0ade73 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| | * QTemporaryFile's setFileTemplate operates not only on XXXXXX in the endSune Vuorela2016-10-061-1/+1
| | | | | | | | | | | | | | | | | | | | | Is even covered by unit tests. Change-Id: I7b22da2a338868fdb99c6238925f944bfea88190 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-10-061-9/+10
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/mac/default_pre.prf mkspecs/features/qpa/genericunixfontdatabase.prf mkspecs/features/uikit/default_post.prf mkspecs/features/uikit/resolve_config.prf mkspecs/macx-ios-clang/features/default_post.prf mkspecs/macx-ios-clang/features/resolve_config.prf src/corelib/io/qiodevice.cpp Change-Id: I6f210f71f177a3c3278a4f380542195e14e4b491
| * | QIODevice: add CHECK_MAXBYTEARRAYSIZE macroAlex Trotsenko2016-10-011-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | It unifies handling of QByteArray's size limit in read(), readLine() and will be used in a follow-up change which optimizes the performance of QIODevice::peek() function. Change-Id: Idb9fbbe14d9632ee267d2a0e47c8a88603c024a2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Replace QCFString::to(CF/NS/Q)String usage with QString methodsTor Arne Vestbø2016-10-064-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | Slims down QCFString and leaves only one implementation of converting back and forth between CF/NS strings and QStrings. Change-Id: I068568ffa25e6f4f6d6c99dcf47078b7a8e70e10 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | | Don't truncate QDateTime milliseconds when storing QSettings on Apple platformsTor Arne Vestbø2016-10-052-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The fix is trivial, but the patch adds a new QSettings tests that iterates most of the QMetaTypes and verifies that storing and retrieving them again gives the same value. This is a more complete test than the testVariantTypes tests, which is limited to a subset of the QVariant types. The new tests borrows logic from the QMetaType test machinery. QSettings has been Q_ENUM'ified in the process, for improved debug output. Note that on backends such as the INI backend, the metatype of the QVariant read from the settings will be a string, so it won't match the input QVariant type, but the result of converting that to the original value type should still work. Task-number: QTBUG-56124 Change-Id: Ib03a26abf77c9fb449b94160d28bc4baeb095f25 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | | Apple OS: Handle QSetting strings with embedded zero-bytesTor Arne Vestbø2016-10-054-18/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Saving strings with embedded zero-bytes (\0) as CFStrings would sometimes fail, and only write the part of the string leading up to the first zero-byte, instead of all the way to the final zero-terminator. This bug was revealed by the code-path that falls back to storing e.g. QTime as strings, via the helper method QSettingsPrivate::variantToString(). We now use the same approach as on platforms such as Windows and WinRT, where the string produced by variantToString() is checked for null-bytes, and if so, stored using a binary representation instead of as a string. For our case that means we fall back to CFData when detecting the null-byte. To separate strings from regular byte arrays, new logic has been added to variantToString() that wraps the null-byte strings in @String(). That way we can implement a fast-path when converting back from CFData, that doesn't go via the slow and lossy conversion via UTF8, and the resulting QVariant will be of type QVariant::ByteArray. The reason for using UTF-8 as the binary representation of the string is that in the case of storing a QByteArray("@foo") we need to still be able to convert it back to the same byte array, which doesn't work if the on-disk format is UTF-16. Task-number: QTBUG-56124 Change-Id: Iab2f71cf96cf3225de48dc5e71870d74b6dde1e8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Apple OS: Resolve QStandardPaths test data locations based on real locationsTor Arne Vestbø2016-10-041-29/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of the manual logic for computing test data locations, we use the locations from baseWritableLocation, but make sure to put them all under '.qttest' in the home directory. This approach handles more cases for test data, and also plays nice with locations that are not in the home directory due to being containerized (and hence do not need a separate test data scope). Change-Id: Iea4f21acb75c0191be35a3619c05143e8929bd6e Reviewed-by: Jake Petroules <jake.petroules@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>