summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
...
* | QFileSystemEngine/Unix: rework the getting of nsec-precision file timesThiago Macieira2017-08-062-23/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was working on Linux because _GNU_SOURCE gets us POSIX.1-2008 compatibility, but not on macOS or the BSDs. There, we were still stuck to full second precision. This commit uses the template trick introduced by the futimes code (which itself was inspired by commit 2fb42eb4af3444b11e7b1210323637937ef in QtNetwork). Also note how it adds support for birth time, if the system's stat struct has that information. Tested to work on MacOS and FreeBSD. The manual filetest produces: Name: . Path: . (/usr/home/tjmaciei/src/qt/qt5) Size: 1536 Type: Directory Attrs: readable writable executable hidden nativepath Mode: drwxr-xr-x Owner: tjmaciei (1001) Group: tjmaciei (1001) Access: 2017-07-13T20:03:47.916 Birth: 2017-07-13T20:03:47.916 Change: 2017-07-13T20:04:41.648 Modified: 2017-07-13T20:04:41.648 Linux will require support for statx(2). Change-Id: I8d96dea9955d4c749b99fffd14cd97d7a8c6d45d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QFileSystemEngine::fillMetaData: simplify and comment the codeThiago Macieira2017-08-061-38/+65
| | | | | | | | | | | | | | | | | | | | | | Took me a long while to understand what it did. Now that I do, I can also answer the question left behind during the original implementation in Qt 4.8 (commit 4fd2aced96d9095254d89f9da9c911bd88f15245 in the old history): how to know if a file exists? Change-Id: I8d96dea9955d4c749b99fffd14cdae135499a0d3 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Move Unix code from qfilesystemengine.cpp to qfilesystemengine_unix.cppThiago Macieira2017-08-062-223/+218
| | | | | | | | | | | | | | The comment about Symbian no longer applies. Change-Id: I8d96dea9955d4c749b99fffd14cd966f07d95948 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Migrate QStandardPaths to use QRegularExpressionSamuel Gaist2017-08-051-3/+5
| | | | | | | | | | | | | | | | | | | | This patch updates the code from the unix implementation of QStandardPaths to use QRegularExpression in place of the deprecated QRegExp. Change-Id: I51fa231dcd70ca55d1bfffb31d8f28f964ac44fe Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: David Faure <david.faure@kdab.com>
* | Doc: add warning against bulk random data creation to QRandomGeneratorSamuel Gaist2017-08-051-1/+4
| | | | | | | | | | | | | | | | | | The full documentation explains it well but a more prominent warning will help avoid the wrong use of that class and encourage user to read further the documentation. Change-Id: I3178749f2b1b0350040f81eef253fd85c7ba0a5f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QFileSystemEngine/Windows: fix setFileTime when input date is UTCThiago Macieira2017-08-051-15/+30
| | | | | | | | | | | | | | | | | | | | | | I was getting a weird 7-hour offset when doing: QVERIFY(file.setFileTime(before.addSecs(-10), QFile::FileModificationTime)); mtime = file.fileTime(QFile::FileModificationTime).toUTC(); QCOMPARE(mtime, before.addSecs(-10)); Change-Id: I35c4da69d754686a43e675b3d215213e448df7cf Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | QFileSystemEngine::setFileTime/Unix: remove the fallback to futimesatThiago Macieira2017-08-053-17/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The use as in the code: futimesat(fd, NULL, &tv) is not documented to work. The file descriptor should be a directory's one, not an open file (though the Linux source code seems to handle that case). This call was done as a fallback to futimes, so it's very unlikely a system would have futimesat and not futimes. Both the Linux and the FreeBSD man pages say it's deprecated anyway. Change-Id: I8d96dea9955d4c749b99fffd14cd94068dc7668a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Filesystem: Use "birth time" to avoid confusion with Unix ctimeThiago Macieira2017-08-0511-75/+111
| | | | | | | | | | | | | | | | | | | | | | The Unix stat fields "st_ctime" and "st_ctim" mean "change time", the last time that the file/inode status fields were changed. It does not mean "creation time". So this commit splits all of the internal API to "birth" and "metadata change" instead of "creation" to avoid the conflict. Change-Id: I149e0540c00745fe8119fffd1463fe78b619649e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Move platform-specific code from QFSFileEngine to QFileSystemEngineThiago Macieira2017-08-055-162/+178
| | | | | | | | | | Change-Id: I8d96dea9955d4c749b99fffd14cd9395174ba005 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Introduce QFileInfo::birthTime and metadataChangeTimeThiago Macieira2017-08-052-10/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QFileInfo] Deprecated created() because it could return one of three different file times depending on the OS and filesystem type, without the ability to determine which one is which. It is replaced by metadataChangeTime() and birthTime(). [ChangeLog][QtCore][QFileInfo] Added QFileInfo::metadataChangeTime(), which returns the time the file's metadata was last changed, if it is known, and falling back to the same value as lastModified() otherwise. On Unix systems, this corresponds to the file's ctime. [ChangeLog][QtCore][QFileInfo] Added QFileInfo::birthTime(), which returns the file's birth time if it is known, an invalid QDateTime otherwise. This function is supported on Windows and on some Unix systems. Change-Id: I0031aa609e714ae983c3fffd1467bd8b3e3a593d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QFileSystemEngine::renameFile: use calls that don't overwriteThiago Macieira2017-08-044-1/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The renameat2(2) Linux system call, new in 3.16, allows for the atomic renaming of a file if and only if it won't clobber an existing file. None of the Linux libcs have enabled this syscall as an API, so we use syscall(3) to place the call. If your libc has SYS_renameat2 but your kernel doesn't support it, we'll keep issuing the unknown syscall, every time. Users in that situation should upgrade (3.16 is from 2014). On Darwin, there's a similar renameatx_np (guessing "np" stands for "non-portable"). I haven't found anything similar on the other BSDs. Change-Id: I1eba2b016de74620bfc8fffd14ccb4e455a3ec9e Reviewed-by: David Faure <david.faure@kdab.com>
* | Allow QSettings to synchronize non-atomicallyThiago Macieira2017-08-043-14/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is required so that one can use QSettings in situations that temporary files or renaming may not work. [ChangeLog][QtCore][QSettings] Added setAtomicSyncRequired(), which allows one to use QSettings with config files in unwriteable directories or in Alternate Data Streams on NTFS on Windows. This used to work before Qt 5.4, but remains a non-default behavior due to the potential of data corruption. Task-number: QTBUG-47379 Change-Id: I81480fdb578d4d43b3fcfffd14d4f77112f0402f Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* | Support Alternate Data Streams in QSaveFileThiago Macieira2017-08-041-5/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't use MoveFile to do atomic commits on an ADS, so QSaveFile needs to detect when the target name is ADS and then use the direct fallback mode. [ChangeLog][QtCore][QSaveFile] Saving to Alternate Data Streams on NTFS on Windows is now possible, but requires setDirectWriteFallback(true). Task-number: QTBUG-47379 Change-Id: I81480fdb578d4d43b3fcfffd14d4bc062ae1750d Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | QTemporaryFileName: use the random data more wiselyThiago Macieira2017-08-041-46/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First, instead of getting 32 bits of random for every character, we can get reasonable randomness with just 10 bits, so we can replace 3 characters per get32() call. A typical template with six X will only need 64 bits of random data. Second, using the PID is not random at all. The reason why mktemp used to use it is irrelevant (probably because applications failed to seed rand()). Either way, we don't need nor want the PID anymore. And because the code is completely rewritten, the UCB copyright no longer applies. Change-Id: I84e45059a888497fb55ffffd14d2d4cfe159abca Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QFile::rename: use QTemporaryFileName instead of QTemporaryFileThiago Macieira2017-08-041-24/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This means the workaround for Linux's behavior now works even if QTemporaryFile is disabled. We also avoid the creation of an otherwise unused temporary file just so we can take its name. Tested with tests/manual/filetest. Strace shows: renameat2(AT_FDCWD, "a", AT_FDCWD, "/var/run/media/tjmaciei/B852-6088/a.EBG705", RENAME_NOREPLACE) = 0 renameat2(AT_FDCWD, "/var/run/media/tjmaciei/B852-6088/a.EBG705", AT_FDCWD, "A", RENAME_NOREPLACE) = 0 Before it was: open("/var/run/media/tjmaciei/B852-6088/a.VuL412", O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC, 0600) = 4 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 lseek(4, 0, SEEK_SET) = 0 rename("a", "/var/run/media/tjmaciei/B852-6088/a.VuL412") = 0 stat("A", 0x7fff13260f00) = -1 ENOENT (No such file or directory) close(4) = 0 renameat2(AT_FDCWD, "/var/run/media/tjmaciei/B852-6088/a.VuL412", AT_FDCWD, "A", RENAME_NOREPLACE) = 0 (the absolute path comes from fd61059d359f0bee1c37d6bf08bf4b83381658ca and it seems it was needed for Symbian) Change-Id: I1eba2b016de74620bfc8fffd14ccc7c4ded009c8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Long live QTemporaryFileName!Thiago Macieira2017-08-043-151/+95
| | | | | | | | | | | | | | | | | | | | | | So we can use it in QTemporaryFile, QTemporaryDir and QFile::rename() [ChangeLog][QtCore][QTemporaryDir] The class now supports the "XXXXXX" replacement token anywhere in the template, not just at the end. This behavior is similar to what QTemporaryFile supports. Change-Id: I1eba2b016de74620bfc8fffd14ccb645729de170 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QTemporaryFile: split the template parsing and generationThiago Macieira2017-08-041-62/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes the code more reusable by the unnamed file feature. This commit removes the backwards compatibility in using sequential file names if the first one failed. Since 5483b30868e44bc0799d7a1998f1907775, there are at least three random characters, so the chance of collision is 1 in 52³ = 140608. That commit also did not take a system failure into account. If we ended up getting EEXIST for all attempts, we'd attempt on average 26³*53³ file creations. For that reason, I've added an upper limit in the number of attempts to create a file. Change-Id: I1eba2b016de74620bfc8fffd14cc7e31c6e50558 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QTemporaryFile: give the engine access to the template nameThiago Macieira2017-08-043-15/+13
| | | | | | | | | | | | | | | | | | | | | | Instead of storing it in d->fileEntry. The QFSFileEngine methods may try to use it before the file entry is filled with the actual file name and that's no good. This change is using a reference to avoid keeping an extra QString reference and to avoid going out of sync. Change-Id: I1eba2b016de74620bfc8fffd14cca9e340e4b1e2 Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | QTemporaryFile: add a simpler rename() (non-virtual) overrideThiago Macieira2017-08-042-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling the parent version is still ok, but if you call the new one you get a bit of benefit. Since we control the file name, we don't have to worry about a case-changing renaming (by choice). We also know that the file is a regular one, because we created it. [ChangeLog][Important Behavior Changes][QTemporaryFile] rename() no longer attempts to do block copying, as that usually indicates a mistake in the user's code. Instead, either create the temporary file in the same directory as the new name to be, or use QSaveFile. Change-Id: I1eba2b016de74620bfc8fffd14ccaac0cdb9fe87 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | QFSFileEngine: make rename() on Unix not overwriteThiago Macieira2017-08-046-12/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The rename(2) system call overwrites, so instead of using it, we try to use the link/unlink pair. This works for regular cases, but can fail if trying to change case in case-insensitive filesystems, if we're operating on a non-Unix filesystem (FAT) or, on Linux, if the file doesn't belong to the calling user (BSDs permit this). For those cases, we fall back to rename(2). That means there's a race condition if a new file is created there. But we at least reduce the likelihood of that happening for regular files. Change-Id: I1eba2b016de74620bfc8fffd14ccb38fd929e5aa Reviewed-by: David Faure <david.faure@kdab.com>
* | Implement conversion from nullptr QVariant to QString and QByteArrayAllan Sandfeld Jensen2017-08-041-2/+8
| | | | | | | | | | | | | | | | | | A nullptr QVariant should become a null QString or QByteArray, since null strings have previous in our APIs represented the null value in the absence of a dedicated null metatype. Change-Id: I3b8f6386ece314d7c196959fbcf042c4fe0508a0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Clean-up in QDateTime's parsing of ISODate{,WithMs}Edward Welbourne2017-08-041-7/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Actually check that there's a T where ISO 8601 wants it (instead of just skipping over whatever's there), with something after it; move some declarations later; add some comments; and use the QStringRef API more cleanly (so that it's easier to see what's going on). Simplify a loop condition to avoid the need for a post-loop fix-up. This incidentally prevents an assertion failure (which brought the mess to my attention) parsing a short string as an ISO date-time; if there's a T with nothing after it, we won't try to read at index -1 in the following text. (The actual fail seen had a Z where the T should have been, with nothing after it.) Add tests for invalid ISOdate cases that triggered the assertion. Change-Id: Ided9adf62a56d98f144bdf91b40f918e22bd82cd Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QVariants of null pointers should be nullAllan Sandfeld Jensen2017-08-042-4/+25
| | | | | | | | | | | | | | | | | | | | | | Changes the QVariant::isNull() implementation for pointer types so they return true if null. [ChangeLog][QVariant] QVariants containing pointers will now return true on isNull() if the contained pointer is null. Change-Id: I8aa0dab482403837073fb2f376a46126cc3bc6b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Long live qEnvironmentVariable()Thiago Macieira2017-08-043-17/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore] Added qEnvironmentVariable, which returns the value of an environment variable in a QString, while qgetenv continues to be used to return it in a QByteArray. For Unix, since most environment variables seem to contain path names, qEnvironmentVariable will do the same as QFile::decodeName, which means NFC/NFD conversion on Apple OSes. I opted not to #include <qfile.h> from qglobal.cpp to implement that QFile::decodeName functionality, so qglobal.cpp doesn't depend on corelib/io and to avoid possible recursions. Task-number: QTBUG-41006 Change-Id: I14839ba5678944c2864bffff141794b8aaa7aa28 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge "Merge remote-tracking branch 'origin/5.9' into dev" into refs/staging/devFrederik Gladhorn2017-08-0217-88/+270
|\ \
| * | Merge remote-tracking branch 'origin/5.9' into devOswald Buddenhagen2017-08-0217-88/+270
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/xcb/qxcbconnection.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp src/plugins/styles/mac/qmacstyle_mac.mm src/widgets/widgets/qdockarealayout.cpp src/widgets/widgets/qmainwindow.cpp src/widgets/widgets/qmainwindowlayout.cpp src/widgets/widgets/qmainwindowlayout_p.h tests/auto/corelib/tools/qlocale/tst_qlocale.cpp tests/auto/other/macnativeevents/BLACKLIST tests/auto/widgets/widgets/qmenu/BLACKLIST Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
| | * configure: un-namespace remaining non-inline configure testsOswald Buddenhagen2017-08-021-5/+5
| | | | | | | | | | | | | | | | | | | | | only few tests remain, and many of these were mis-classified anyway. Change-Id: Ic3bc96928a0c79fe77b9ec10e6508d4822f18df2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: Add a feature to write tests in the .json fileThiago Macieira2017-08-021-21/+199
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're adding a lot of unnecessary files that end up later as cargo-cult, for at most a handful of lines. So instead move the testcases directly into the .json file. The following sources were not inlined, because multiple tests share them, and the inlining infra does not support that (yet): - avx512 - openssl - gnu-libiconv/sun-libiconv (there is also a command line option to select the exact variant, which makes it hard/impossible to properly coalesce the library sources) The following sources were not inlined because of "complications": - verifyspec contains a lengthy function in the project file - stl contains lots of code in the source file - xlocalescanprint includes a private header from the source tree via a relative path, which we can't do, as the test's physical location is variable. - corewlan uses objective c++, which the inline system doesn't support reduce_relocs and reduce_exports now create libraries with main(), which is weird enough, but doesn't hurt. Done-with: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Change-Id: Ic3a088f9f08a4fd7ae91fffd14ce8a262021cca0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| | * configure: standardize handling of 64 bit atomicsOswald Buddenhagen2017-08-023-15/+6
| | | | | | | | | | | | | | | | | | | | | | | | replace the custom QT_NO_STD_ATOMIC64 with a regular public feature, and give libatomic an empty source rather than using a separate config test. Change-Id: Iaf4a7f4c4874f61bf93aa58fe41843a86baf1ab7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: prune dead tests::journaldOswald Buddenhagen2017-08-021-5/+0
| | | | | | | | | | | | | | | | | | | | | libraries::journald is the actually used one. Change-Id: I2da4ae106dd1041cdb269e05def93523ed5011b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Windows/QFileSystemModel: Fix updating of removed drivesFriedemann Kleint2017-07-311-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the updating of drives in QFileSystemModel was connected to a signal triggering when a drive containing watched files was removed via QFileSystemWatcher notification. This did not trigger when a drive that was not expanded in the view was removed, since no files were watched. Since QFileSystemModel is not interested in the path of the drive being removed, add a generic signal triggered by DBT_DEVTYP_VOLUME/DBT_DEVICEREMOVECOMPLETE and use that to update the drives. Complements 8e79806d08ab77aa0f87b69a2ef65789216f41c0. Task-number: QTBUG-18729 Task-number: QTBUG-53436 Change-Id: Ibcde4665824c41151042237d4d620c48bc1e2e18 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| | * QEventDispatcherWin32: Check for WM_QT_SOCKETNOTIFIER on internal window onlyFriedemann Kleint2017-07-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Restrict the checking to the internal window handle to prevent it being thrown off by other WM_USER messages used by applications. Complements change 124b9a6ff89da8be83a256135ec6c4d0603e9a6f. Task-number: QTBUG-62083 Change-Id: Ifb1b00e4ff70cb7e53873943e46cea0d72ff6257 Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Fix build for -no-feature-icu -no-feature-textcodecStephan Binner2017-07-291-1/+1
| | | | | | | | | | | | | | | Change-Id: Ibb19e5bce3da81518f0967ae7677f42de80ec73e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Fix open/chmod race condition in QSaveFileAntonio Larrosa2017-07-281-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a problem introduced in a60571b3700e80f44705ebc4bab9628cf852891c The problem happens when an application like Kate (actually, ktexteditor) uses QSaveFile to save files. So if you open a secretfile.txt file (with permissions 0600), edit and save it, then QSaveFile currently generates a temporary file with 0666 that afterwards gets chmod'ed to 0600 again, but in between, some other user in the system can open the temporary file and get a file descriptor that would allow him/her to read the contents of a file with 0600 permissions. Change-Id: I824025f54d6faf853da88e4dfcb092b577b4df04 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| | * Use correct paths in Qt5CoreConfigExtrasMkspecDirKevin Funk2017-07-281-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before we generated the following content: set(_qt5_corelib_extra_includes "${_qt5Core_install_prefix}/X:/src/qt5.9/qtbase/mkspecs/win32-msvc") Which lead to the following error when used: CMake Error at Z:/build/qt59/qtbase/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:15 (message): The imported target "Qt5::Core" references the file "Z:/build/qt59/qtbase/X:/src/qt5.9/qtbase//mkspecs/win32-msvc" => We prefixed an absolute path with another absolute path which is obviously wrong After the patch we generate this content: set(_qt5_corelib_extra_includes "X:/src/qt5.9/qtbase/mkspecs/win32-msvc") This patch ensures we never prefix an absolute path additionally Patch by Konstantin Tokarev Change-Id: I05dab7f681958723594ceb78064be41798e83fb8 Task-number: QTBUG-61768 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
| | * Revert "Make QFile::open fail when using an invalid file name"Thiago Macieira2017-07-271-14/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 346cd79192ef71afa572812e17f1d422594651a0. The bug report was incorrect, since the suggested file name is actually valid, it just happens to name an Alternate Data Stream (ADS) "20:803Z.txt" in file "testLog-03". [ChangeLog][QtCore][QFile] Reverted an incorrect change from Qt 5.9.0 that forbade the creation and access to Alternate Data Streams on NTFS on Windows. This means that file names containing a colon (':') are allowed again, but note that they are not regular files. Task-number: QTBUG-57023 Change-Id: I81480fdb578d4d43b3fcfffd14d4f2147e8a0ade Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
| | * Blacklist use of [[nodiscard]] with ClangThiago Macieira2017-07-261-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | __has_cpp_attribute(nodiscard) is 1 in all compilation modes, but if you use it outside of C++1z, you get a warning. LLVM-bug: https://bugs.llvm.org/show_bug.cgi?id=33518 Task-number: QTBUG-61840 Task-number: QTBUG-62085 Change-Id: I84e45059a888497fb55ffffd14d3683f4808978b Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Return "en" for QLocale::c().bcp47Name()Jüri Valdmann2017-07-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently QLocale::c().bcp47Name() returns "C" which, according to [BCP47], is not a valid language tag. In particular it does not conform to the ABNF grammar in section 2.1 which specifies a minimum length of 2 characters for all language tags. [BCP47]: https://tools.ietf.org/html/bcp47 This patch changes the return value to "en" seeing as the documentation for QLocale::Language states that the C language is identical in behavior to English. Task-number: QTBUG-61949 Change-Id: I2a381def8fb7156467e01d105da92bb1f4821204 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| | * Convert features.itemviews to QT_[REQUIRE_]CONFIGStephan Binner2017-07-253-11/+0
| | | | | | | | | | | | | | | | | | | | | The QT_NO_ITEMVIEWS queries in corelib/ seem to had no effect at all. Change-Id: I494ee2309a96b0cf25de18781fc9a675878a2ee9 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| | * Let QWindowsPipeWriter::write only warn about unexpected errorsJoerg Bornemann2017-07-241-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | Do not print a critical message when the pipe connection dropped as this can happen with regular QLocalSocket usage as demonstrated in qtremoteobjects. Change-Id: If79915ce5d83b8cae5e090c04e893dafcb5a88a7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| | * QFileSystemEngine::id/Windows: Fix use with directoriesThiago Macieira2017-07-221-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Microsoft documentation says that CreateFile cannot be used to create directories, so you can only use it on a directory with OPEN_EXISTING and FILE_FLAG_BACKUP_SEMANTICS. This commit implements that. Change-Id: I658f552684924f8aa2cafffd14cfc0e5660a4a62 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * QFileSystemWatcher/kqueue: make the fd duplication + FD_CLOEXEC atomicThiago Macieira2017-07-211-2/+1
| | | | | | | | | | | | | | | | | | | | | The original fd was already FD_CLOEXEC due to qt_safe_open. Change-Id: Ief61d358e2b54a0fac37fffd14d2394ee02da059 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| | * QHash: make MSVC happy about the iterators passed to is_permutationGiuseppe D'Angelo2017-07-201-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MSVC warns about iterators being passed to certain Standard Library algorithms. dbd55cdaf367bdc9d6774bcb9927cbe19f18065f introduced a usa of std::is_permutation in a public header, which is causing such a warning to be emitted. To suppress the warning, Microsoft suggests to either use the 4-arg std::is_permutation overload (which however is not available in MSVC 2013) or to use a Standard Library extension, which we are already using elsewhere in Qt to deal with the same problem. However, that extension requires the iterator to be moved by size_t quantities, which isn't the case for QHash::iterator, and therefore generates more warnings about loss of precision (size_t -> int). Therefore, go with the 4-arg std::is_permutation, only on MSVC >= 2015. Change-Id: Idfcff28d14e0f1fde5d77f1deb9eec27c87ff5cd Task-number: QTBUG-61902 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Correct QThread::idealThreadCount() docsMorten Johan Sørvig2017-08-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | QThread::idealThreadCount() now returns 1 if the number of CPU cores could not be detected. Change-Id: I60b75c46fbfa2891c28e71fed65589e2ce5a5c17 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Add QThreadPool::stackSizeMorten Johan Sørvig2017-08-023-1/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | Allows setting the stack size for the thread pool worker threads. Implemented using QThread::stackSize. Task-number: QTBUG-2568 Change-Id: Ic7f3981289290685195bbaee977a23e0c3c49bf0 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | | Make QThreadPoolPrivate use NSDMIsMorten Johan Sørvig2017-08-022-10/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (non static data member initializers) Also, taking the absolute value of the idealThreadCount() return value is no longer needed since the function now returns 1 for the "CPU detection failure" case. Change-Id: I2214fd15ed24413bba796ead38bbf1355dfd37d9 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | | Allow conversion of QVariants with real null valuesAllan Sandfeld Jensen2017-08-021-12/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | Update documentation to be clearer on the special null variant state with no value as opposed to a variant with a null value, and only block conversions of the former. Change-Id: I24fd50285414e049de87de54a63700a89bd5adf1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Fix some qdoc warningsFriedemann Kleint2017-08-022-12/+7
|/ / | | | | | | | | | | | | | | | | | | qtbase/src/corelib/io/qfsfileengine.cpp:926: warning: Overrides a previous doc qtbase/src/corelib/io/qfsfileengine.cpp:527: warning: (The previous doc is here) qtbase/src/corelib/tools/qbytearray.cpp:689: warning: Cannot tie this documentation to anything Change-Id: Ie7009f565a11a01859ccd0488ddeebe1b953305d Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QXmlStream: resolve puzzle in translatable stringsOswald Buddenhagen2017-07-311-22/+15
| | | | | | | | | | | | | | Task-number: QTBUG-60159 Change-Id: I4cc83f50d38205eb2996d4122d487d07cc3d8677 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> Reviewed-by: GunChleoc <fios@foramnagaidhlig.net>
* | QTzTimeZonePrivate: resolve a misguided TODOEdward Welbourne2017-07-311-24/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A three-way if/else-if/else had the same line of code as all three branches and a TODO to fix that. As it happens, the flags being tested here are irrelevant; they indicate whether the transition time (which is always given in UTC) was *specified* (i.e. the how a relevant authority identified the transition time) in terms of local wall-clock time, local standard time or UTC. The correction contemplated by TODO (and experimented with in an earlier version of this change, that broke correct tests) has in fact been done for us by the zoneinfo package's zic (zone-info compiler) in the course of writing the binary file we're parsing. These flags are only present in the binary file to enable the date command to correctly handle POSIX-style values for the TZ environment variable. We consequently have no need for the tz_ttisgmt or tz_ttisstd fields of our QTzType and can save the bother of recording them, when reading their part of the file. Change-Id: Ia33e87291ecc383eb5cb796d7b8a5213a94f1648 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>