summaryrefslogtreecommitdiffstats
path: root/src/corelib/mimetypes
Commit message (Collapse)AuthorAgeFilesLines
* QMimeType: towards re-entrancy: do not cache iconName made from mimetype nameMarc Mutz2019-06-161-6/+9
| | | | | | | | | | | | To not write into a shared object without mutex protection. If the stored icon name is empty, just calculate a new one on each call. Task-number: QTBUG-45684 Change-Id: I01dfb6697b5275e69451da91fdc7346f40bc424e Reviewed-by: David Faure <david.faure@kdab.com>
* QMimeType: make deep const breakages explicitMarc Mutz2019-06-161-9/+10
| | | | | | | | | | | | | QExplicitlySharedDataPointer is propagating const in my tree, and I will be proposing this for inclusion into Qt 6, so proactively fix the breakage here. QMimeType is known to be non-reentrant (QTBUG-45684), and this patch doesn't fix it. Change-Id: If68b148c44439d76ab1d95e8db93b90d12650e51 Reviewed-by: David Faure <david.faure@kdab.com>
* Remove a few usages of deprecated APIShawn Rutledge2019-06-131-1/+1
| | | | | | Change-Id: I94bad0b8d3891c6b4a55178836cfff2a4312e330 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QtCore: use qUtf16Printable and %ls, qErrnoWarning()Marc Mutz2019-05-291-1/+1
| | | | | | | | | | | | ... instead of qPrintable(), %s, and explicit qt_error_string(). Saves 2KiB in text size on optimized Linux AMD64 GCC 9.1 builds. Change-Id: I98b6717da1ed1b678f01167d704a96f10da47966 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix corelib build without feature.regularexpressionTasuku Suzuki2019-05-221-0/+6
| | | | | | | | | | | | | | | | | | | Change-Id: I208d6cb7f57a74873fae3a36fe094a92d287c2f0 Reviewed-by: David Faure <david.faure@kdab.com>
* Remove handling of missing Q_COMPILER_RVALUE_REFSAllan Sandfeld Jensen2019-05-011-19/+0
| | | | | | | | Remove remaining handling of missing support for rvalue refs. Change-Id: I78bab8bccfeeb9c76f464f345874364a37e4840a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove handling of missing Q_COMPILER_RVALUE_REFSAllan Sandfeld Jensen2019-04-082-4/+0
| | | | | Change-Id: I7bc6c455fbae4cdad584c76773299a6d8cd40c82 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Replace Q_DECL_NOEXCEPT with noexcept in corelibAllan Sandfeld Jensen2019-04-035-8/+8
| | | | | | | In preparation of Qt6 move away from pre-C++11 macros. Change-Id: I44126693c20c18eca5620caab4f7e746218e0ce3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-03-312-1/+3
|\ | | | | | | | | | | | | Conflicts: src/corelib/configure.json Change-Id: I93ac67f3bf4844bc7c691183e94bceb922b7b919
| * QMimeDatabase: allow building without our internal copyThiago Macieira2019-03-262-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Saves 234kB of read-only data (when compressed with zstd) in QtCore, plus one load-time execution. With Zlib, the size was 315 kB. [ChangeLog][QtCore][QMimeDatabase] Added configure option -no-mimetype-database that tells Qt not to bundle its own copy of the XDG MIME database. If this option is passed, QMimeDatabase will only work if there's a system copy in $XDG_DATA_DIRS/mime. This option is useful for Linux distributions that ensure the data is always present. Change-Id: I1004b4b819774c4c9296fffd158e69c490e88fb6 Reviewed-by: David Faure <david.faure@kdab.com>
* | Fix warnings when compiling with QT_NO_XMLSTREAMJędrzej Nowacki2019-03-042-1/+3
|/ | | | | | | | Some of function arguments were unused. Change-Id: I29e8e4acbed87836044cac4f0b7ac59168181f5a Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QMimeGlobPattern: update use of wildcardToRegularExpresionSamuel Gaist2019-01-261-1/+1
| | | | | | | | | | | Following the update of qtbase because of QTBUG-72539, the code using wildcardToRegularExpression must be updated as anchoredPattern is not needed anymore. Task-number: QTBUG-72539 Change-Id: I4989b42c737eb17d65c6b1d3cefab3ffd2163bfc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Use QRegularExpression instead of QRegExpLars Knoll2018-12-141-3/+3
| | | | | Change-Id: I14abbf81a9d0fb72f75417da06b6456b8f1a20a2 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* Use Q_DISABLE_COPY_MOVE for private classesFriedemann Kleint2018-12-122-2/+2
| | | | | Change-Id: I3cfcfba892ff4a0ab4e31f308620b445162bb17b Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* RCC: introduce compression algorithm "best"Thiago Macieira2018-12-111-1/+1
| | | | | | | | | | | | | | | | | | | This compression algorithm is permitted in the XML sources, which instructs RCC to apply the best compression algorithm it has available. If we have Zstandard available, that's its level 19 (levels 20 and up are experimental). If not, we apply zlib compression level 9. And apply this technique for the XDG MIME database that is built-in to QtCore. Payload size Compr. time Previously 313916 17.9ms Zlib -9 310899 53.6ms Zstd -14 253364 63.3ms (plus 4.0 ms on L1 heuristic check) Zstd -19 230647 642.5ms Change-Id: I343f2beed55440a7ac0bfffd1562de44dbaf09cd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add a few qAsConst() to range-for to prevent detachmentsSergio Martins2018-12-101-2/+2
| | | | | | | | | | | places indicated by clazy As a drive-by, fixed minor styling issues in the affected lines. Change-Id: I88d3fc0c8573cde0e61f19a18dd9ea697ee40c34 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Luca Beldi <v.ronin@yahoo.it> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QMimeDatabasePrivate: Match shared-mime-info behavior betterAlbert Astals Cid2018-11-131-1/+1
| | | | | | | | | | | | * Take into account alias when resolving inheritance FAIL! : tst_QMimeDatabase::findByFile(sqlite3.kexi) Compared values are not the same Actual (resultMimeTypeName.toLower()): "application/vnd.sqlite3" Expected (mimeTypeName.toLower()) : "application/x-kexiproject-sqlite3" Loc: [/home/tsdgeos/qt/qtbase_dev/tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/../tst_qmimedatabase.cpp(841)] Change-Id: Ie5b095669979efef0b1de4175723190ea1f4d5a0 Reviewed-by: David Faure <david.faure@kdab.com>
* QMimeDatabase: update freedesktop.org.xml to shared-mime-info 1.10Albert Astals Cid2018-11-131-1465/+2952
| | | | | | | | Including https://gitlab.freedesktop.org/xdg/shared-mime-info/commit/4f7ad5ec448d38137ddc4de5624215ba0f8ebfa9 to make appimage not ambiguous Change-Id: I8db13fc785b267c09667ef38430bf98135c7f0d6 Reviewed-by: David Faure <david.faure@kdab.com>
* Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-11-063-3/+4
|\ | | | | | | Change-Id: Id1e4664d3c942226b76e2c3b338df3116ff89297
| * QMimeType: Use default key as fallback for comment() propertyGary Wang2018-11-023-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QMimeProvider parses the shared mime database xml files, it will read the <comment> element for mime comment and treat the `xml:lang` attribute as locale language string. When no `xml:lang` attr is provided, QMimeProvider will read the value and treat it as a en_US locale string as the default key. When we call QMimeType::comment(), it will try to get the locale comment string with the default language (QLocale().name()), once it can't find a matched result, it should return the default key (which QMimeProvider set it as en_US locale before) as fallback. Task-number: QTBUG-71314 Change-Id: I444f8159d6f19dfef6338cd79312f608d8f13394 Reviewed-by: David Faure <david.faure@kdab.com>
* | Merge remote-tracking branch 'origin/5.12' into devLiang Qi2018-10-2516-58/+11
|\| | | | | | | | | | | | | | | | | Conflicts: src/corelib/animation/qpropertyanimation.cpp src/gui/image/qicon.cpp tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp Change-Id: I3698172b7b44ebb487cb38f50fd2c4a9f8a35b21
| * Merge remote-tracking branch 'origin/5.11' into 5.12Liang Qi2018-10-1716-45/+9
| |\ | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platformthemes/platformthemes.pro src/printsupport/kernel/qplatformprintdevice.cpp Change-Id: Iac01729ad954bb1c7af5867d982eb243b2139ee6
| | * Modernize the "mimetype" featureLiang Qi2018-10-1216-45/+9
| | | | | | | | | | | | | | | | | | Change-Id: I9b67c2cbc0891a38ece18d521c86fbc7344dce7a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * | Doc: Move literal code block to a separate fileCristian Maureira-Fredes2018-10-151-13/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to override this snippet for the documentation we generate for Qt for Python, and it is easier to have it on a separate file. Task-number: PYSIDE-801 Task-number: PYSIDE-691 Change-Id: Ideb5b6af25024279f167137d3b65660bb9c96a7e Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | Use std::unique_ptr for memory management in QMimeDataBasePrivateIvan Komissarov2018-10-222-15/+16
| | | | | | | | | | | | | | | | | | | | | | | | This change simplifies memory management as long as it doesn't requires manuall calls to qDeleteAll and manual deleting/nulling pointers. Change-Id: Id0dc563d0b1e74ae33939d90d4b39999020cd7ce Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* | | Use a std::vector instead of a QVector in QMimeDatabasePrivateIvan Komissarov2018-09-292-26/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using std::vector saves a bit c++ code when using range-for loop over the vector. Besides, no shared copies created anymore which is a bit faster. Change-Id: I564306ed9ac907e9f32f59b33ed15c027a59b4eb Reviewed-by: David Faure <david.faure@kdab.com>
* | | Fix a few overrides in Qt CoreAlessandro Portale2018-09-251-8/+8
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change removes redundant 'virtual' from function declarations. Clang Tidy's modernize-use-override check reports: warning: 'virtual' is redundant since the function is already declared 'override' CppCoreGuidelines say: C.128: Virtual functions should specify exactly one of virtual, override, or final Change-Id: I9a4bdd6cc041d46ae64b25597ba4f7268ac4c2b7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
* | WebAssembly for QtBaseMorten Johan Sørvig2018-08-301-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | This is the squashed diff from wip/webassembly to dev. Done-with: Peng Wu <peng.wu@intopalo.com> Done-with: Sami Enne <sami.enne@intopalo.com> Done-with: Morten Johan Sørvig <morten.sorvig@qt.io> Started-by: Andrew Knight <andrew.knight@intopalo.com> Change-Id: I6562433c0a38d6ec49ab675e0f104f2665f3392d Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | QMimeDatabase: Fix MIME detection issues with magics in MIME hierarchiesEike Ziller2018-08-201-2/+5
|/ | | | | | | | | | | | | | | | | | | Assume two MIME types A and B are registered, both with the same glob pattern, A being parent of B, A with some magic rule, and B with another magic rule. Given a file that matches the glob pattern and the magic rule of A, the resulting MIME type depended on the order of registration of A and B, because it would just check if some glob matching MIME type was also a subclass of the magic matching MIME type. The patch prefers the the MIME type that matches by magic if that matches by glob pattern as well (i.e. A in our example). The "recommended checking order" of the spec does handle that case. Task-number: QTBUG-44846 Change-Id: I2af43f6199faf9a42cd9c35d3a045441afbd6217 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: David Faure <david.faure@kdab.com>
* Fix build for Android with android-clang in r17Liang Qi2018-06-061-10/+6
| | | | | | Task-number: QTBUG-67464 Change-Id: Ib971a5da82b31bce9ac1c9ac623ad7d5302cfaec Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QMimeDatabase: check 128 bytes rather than 32, for text vs binaryDavid Faure2018-04-271-2/+2
| | | | | | | | As per today's change in the MIME spec. https://bugs.freedesktop.org/show_bug.cgi?id=97372 Change-Id: Iba4fdd95c3ebec8a042404956db3466a46c97f1d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeDatabase: fix assert when fetching data for invalid mimetypeDavid Faure2018-04-061-0/+2
| | | | | | | | | The Q_ASSERT(mimePrivate.fromCache) at qmimedatabase.cpp:218 which I added in commit 7a5644d648, was being triggered when calling comment() for invalid mimetypes such as db.mimeTypeForName(""). Change-Id: I8037041a4b435d2a5ba24ec94b7858e38b2f0bf2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeDatabase: fix regression in alias resolvingDavid Faure2018-02-281-2/+2
| | | | | | | | | | | | The refactoring to support multiple providers broke alias resolving (e.g. "text/directory" would be an invalid mimetype, instead of being resolved to "text/vcard"). The unittest didn't catch it because most of it was running with a single mime directory (and therefore a single provider, in the new model). Fixed by re-running a number of test methods once we have a second mime directory. Change-Id: Ib5da89ba79c11ed41813b2aff4bc71c30afcde7d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeType: remove unwanted *.bin as preferredSuffix for octet-streamDavid Faure2018-01-281-0/+2
| | | | | | | | | | | | This leads to an automatically appended .bin when saving a file. https://bugs.freedesktop.org/show_bug.cgi?id=101667 https://bugs.kde.org/382437 Fixed upstream in shared-mime-info 1.10 Change-Id: I125a0bc72c91a082706bf2bf149adcf63ff1ec6b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeDatabase: only export var for unittests if QT_BUILD_INTERNALDavid Faure2018-01-021-1/+6
| | | | | Change-Id: I7fa25b64cf39667c8cea95431f68baab623c8a2a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeMagicRule: fix inconsequential out-of-bounds accessMarc Mutz2017-11-301-1/+1
| | | | | | | | | | The penultimate entry in mimeRuleTypes_strings is "byte", which, incl. the terminating NUL character, has length five. But 65-59 == 6, so the last index in magicRuleType_indices was off by one. No harm done, since there's one more NUL (three in total...), but fix for the next reader of the code. Change-Id: Ibdf855014a313a0486d013c9d06d55cea96435fd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeDatabase: handle removal of a mime directoryDavid Faure2017-11-301-4/+7
| | | | | | | | | | The previous commit didn't handle correctly the case where an entire mime directory is deleted. The unittest wasn't testing that case, now it is. We need to move providers into a new list, and then delete those left over (i.e. now unused). Change-Id: I04fd8b39b511a2331d706864f695ce5074acf916 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeDatabase: redesign to use both binary and XML providersDavid Faure2017-11-3010-347/+391
| | | | | | | | | | | | | | | | | | | | | | Previously, we would use mime.cache in all mime directories if at least one of them had such a file (other than the most-local one), otherwise the "source" XML would be used in all directories. Now it's possible to use mime.cache in those directories which have one, and XML in those directories that don't. Not only is this more correct, it will allow in a subsequent commit to bundle the binary cache in QtCore's qrc rather than the very big XML file. The design change to allow this is that now every provider only deals with a single directory, and QMimeDatabasePrivate takes care of creating multiple providers, one for each dir. This required to move most of the loops from the binary provider up to QMimeDatabasePrivate itself. Change-Id: Iac82d5f5836b80d45076e586b903d16fa2525b34 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeDatabase: move recheck test up from the mime providersDavid Faure2017-11-304-75/+54
| | | | | | | | | | This is actually simpler (two calls to ensureLoaded are enough, rather than one in every implementation method) and is necessary for further refactoring steps (which will instanciate more provider instances). Change-Id: I9fb8acf3556515babecb88ba88e25af43937af5a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMimeDatabase: ensure mutex is locked in provider()David Faure2017-11-303-20/+69
| | | | | | | | This wasn't the case when called from QMimeType, or some QMimeDatabase methods. Now fixed. Change-Id: Ifd515c1520482e4a23c399f1f773269659c92359 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Replace Q_NULLPTR with nullptr where possibleKevin Funk2017-09-191-1/+1
| | | | | | | | | | | | | Remaining uses of Q_NULLPTR are in: src/corelib/global/qcompilerdetection.h (definition and documentation of Q_NULLPTR) tests/manual/qcursor/qcursorhighdpi/main.cpp (a test executable compilable both under Qt4 and Qt5) Change-Id: If6b074d91486e9b784138f4514f5c6d072acda9a Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Replace Q_DECL_OVERRIDE with override where possibleKevin Funk2017-09-191-19/+19
| | | | | | | | | | | | | | | | Remaining uses of Q_DECL_OVERRIDE are in: src/corelib/global/qcompilerdetection.h src/corelib/global/qglobal.cpp doc/global/qt-cpp-defines.qdocconf (definition and documentation of Q_DECL_OVERRIDE) tests/manual/qcursor/qcursorhighdpi/main.cpp (a test executable compilable both under Qt4 and Qt5) Change-Id: Ib9b05d829add69e98a86238274b6a1fcb19b49ba Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-07-061-1/+1
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I43531e087bb810889d5c1fbfcdffb29b78804839
| * QMimeDatabase::mimeTypeForUrl: skip content check for remote URLsDavid Faure2017-07-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | The code was trying to open a local file with the same path as the remote URL, which is unnecessary and wrong in the unlikely case where such a file would exist. Spotted by Christoph Feck when reading the code. Change-Id: I1d77e5781cf606b025d2877f48a9914dd1e36b1d Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-05-291-2719/+10499
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf mkspecs/common/msvc-desktop.conf mkspecs/win32-g++/qmake.conf mkspecs/win32-icc/qmake.conf src/platformsupport/fontdatabases/mac/coretext.pri src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm Change-Id: I74a6f7705c9547ed8bbac7260eb4645543e32655
| * QMimeDatabase: update freedesktop.org.xml to shared-mime-info 1.8David Faure2017-05-081-2719/+10499
| | | | | | | | | | | | | | | | | | | | | | | | ... and update the unittest accordingly. Compared to the 1.8 release there is one change in freedesktop.org.xml, the magic for application/x-java-keystore was changed from host32 to big32, as done upstream, see https://bugs.freedesktop.org/show_bug.cgi?id=99328 Task-number: QTBUG-60608 Change-Id: I47de71c9396cfc3eabc884d5679c73a3e4850a17 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QMimeType: add Q_GADGETAlberto Mardegan2017-05-082-19/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The QMimeType class can be quite useful to graphical QML applications, especially on the desktop. [ChangeLog][QtCore][QMimeType] Add Q_GADGET, so that QML applications can make use of QMimeType's properties and methods. Change-Id: I03e6e82062558a72f5b97e65bbddfc4b7470e735 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Jeremy Katz <jeremy@panix.com> Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-04-041-4/+2
|\| | | | | | | | | | | | | | | Conflicts: src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h src/plugins/platforms/xcb/qxcbwindow.cpp Change-Id: Ic747c3c50e68c005b425e7a1ec2a90965527c8bd
| * QMimeGlobPattern: init all members only onceAnton Kudryavtsev2017-03-281-4/+2
| | | | | | | | | | | | | | ... by initializer list. Change-Id: I39d2f933dac171273f500963eb47ffa9165978de Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QMimeBinaryProvider: avoid QString creation just to check for isEmpty()Marc Mutz2017-03-032-5/+5
| | | | | | | | | | | | | | | | | | | | | | Return a QLatin1String instead and only if that is not empty, convert it into a QString. Also saves 320B in text size on optimized GCC 6.1 AMD64 Linux builds. Change-Id: I5432d213a6200e45414626bedb9f216bafaf1108 Reviewed-by: David Faure <david.faure@kdab.com>