diff options
Diffstat (limited to 'src/corelib/mimetypes')
-rw-r--r-- | src/corelib/mimetypes/mimetypes.pri | 6 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimeglobpattern.cpp | 2 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimeglobpattern_p.h | 2 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimemagicrule_p.h | 2 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimeprovider.cpp | 50 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimetype.cpp | 9 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimetype_p.h | 1 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimetypeparser.cpp | 2 |
8 files changed, 39 insertions, 35 deletions
diff --git a/src/corelib/mimetypes/mimetypes.pri b/src/corelib/mimetypes/mimetypes.pri index 1ab773fc10..870b6c65a5 100644 --- a/src/corelib/mimetypes/mimetypes.pri +++ b/src/corelib/mimetypes/mimetypes.pri @@ -1,6 +1,7 @@ # Qt core mimetype module -HEADERS += \ +qtConfig(mimetype) { + HEADERS += \ mimetypes/qmimedatabase.h \ mimetypes/qmimetype.h \ mimetypes/qmimemagicrulematcher_p.h \ @@ -11,7 +12,7 @@ HEADERS += \ mimetypes/qmimeglobpattern_p.h \ mimetypes/qmimeprovider_p.h -SOURCES += \ + SOURCES += \ mimetypes/qmimedatabase.cpp \ mimetypes/qmimetype.cpp \ mimetypes/qmimemagicrulematcher.cpp \ @@ -20,6 +21,5 @@ SOURCES += \ mimetypes/qmimeglobpattern.cpp \ mimetypes/qmimeprovider.cpp -!contains(DEFINES, QT_NO_MIMETYPE) { RESOURCES += mimetypes/mimetypes.qrc } diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp index 94be5385f3..568f9bf4de 100644 --- a/src/corelib/mimetypes/qmimeglobpattern.cpp +++ b/src/corelib/mimetypes/qmimeglobpattern.cpp @@ -124,7 +124,7 @@ bool QMimeGlobPattern::matchFileName(const QString &inputFilename) const if (starCount == 1 && m_pattern.at(pattern_len - 1) == QLatin1Char('*')) { if (len + 1 < pattern_len) return false; if (m_pattern.at(0) == QLatin1Char('*')) - return filename.indexOf(m_pattern.mid(1, pattern_len - 2)) != -1; + return filename.indexOf(m_pattern.midRef(1, pattern_len - 2)) != -1; const QChar *c1 = m_pattern.unicode(); const QChar *c2 = filename.unicode(); diff --git a/src/corelib/mimetypes/qmimeglobpattern_p.h b/src/corelib/mimetypes/qmimeglobpattern_p.h index e4c74ff7fa..3e4fdb50f6 100644 --- a/src/corelib/mimetypes/qmimeglobpattern_p.h +++ b/src/corelib/mimetypes/qmimeglobpattern_p.h @@ -51,7 +51,7 @@ // We mean it. // -#include <QtCore/qglobal.h> +#include <QtCore/private/qglobal_p.h> #ifndef QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimemagicrule_p.h b/src/corelib/mimetypes/qmimemagicrule_p.h index 26f93d96cc..0c6c1dbcd7 100644 --- a/src/corelib/mimetypes/qmimemagicrule_p.h +++ b/src/corelib/mimetypes/qmimemagicrule_p.h @@ -51,7 +51,7 @@ // We mean it. // -#include <QtCore/qglobal.h> +#include <QtCore/private/qglobal_p.h> #ifndef QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp index aae5cc411b..65b011b439 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE static QString fallbackParent(const QString &mimeTypeName) { - const QString myGroup = mimeTypeName.left(mimeTypeName.indexOf(QLatin1Char('/'))); + const QStringRef myGroup = mimeTypeName.leftRef(mimeTypeName.indexOf(QLatin1Char('/'))); // All text/* types are subclasses of text/plain. if (myGroup == QLatin1String("text") && mimeTypeName != QLatin1String("text/plain")) return QLatin1String("text/plain"); @@ -217,22 +217,24 @@ bool QMimeBinaryProvider::isValid() bool QMimeBinaryProvider::CacheFileList::checkCacheChanged() { bool somethingChanged = false; - QMutableListIterator<CacheFile *> it(*this); - while (it.hasNext()) { - CacheFile *cacheFile = it.next(); + for (CacheFile *cacheFile : qAsConst(*this)) { QFileInfo fileInfo(cacheFile->file); - if (!fileInfo.exists()) { // This can't happen by just running update-mime-database. But the user could use rm -rf :-) - delete cacheFile; - it.remove(); - somethingChanged = true; - } else if (fileInfo.lastModified() > cacheFile->m_mtime) { - if (!cacheFile->reload()) { - delete cacheFile; - it.remove(); - } + if (!fileInfo.exists() || fileInfo.lastModified() > cacheFile->m_mtime) { + // Deletion can't happen by just running update-mime-database. + // But the user could use rm -rf :-) + cacheFile->reload(); // will mark itself as invalid on failure somethingChanged = true; } } + if (somethingChanged) { + auto deleteIfNoLongerValid = [](CacheFile *cacheFile) -> bool { + const bool invalid = !cacheFile->isValid(); + if (invalid) + delete cacheFile; + return invalid; + }; + erase(std::remove_if(begin(), end(), deleteIfNoLongerValid), end()); + } return somethingChanged; } @@ -363,7 +365,8 @@ bool QMimeBinaryProvider::matchSuffixTree(QMimeGlobMatchResult &result, QMimeBin const int weight = flagsAndWeight & 0xff; const bool caseSensitive = flagsAndWeight & 0x100; if (caseSensitiveCheck || !caseSensitive) { - result.addMatch(QLatin1String(mimeType), weight, QLatin1Char('*') + fileName.mid(charPos+1)); + result.addMatch(QLatin1String(mimeType), weight, + QLatin1Char('*') + fileName.midRef(charPos + 1)); success = true; } } @@ -533,11 +536,11 @@ void QMimeBinaryProvider::loadMimeTypeList() for (const QString &typeFilename : typesFilenames) { QFile file(typeFilename); if (file.open(QIODevice::ReadOnly)) { - while (!file.atEnd()) { - QByteArray line = file.readLine(); - line.chop(1); - m_mimetypeNames.insert(QString::fromLatin1(line.constData(), line.size())); - } + QTextStream stream(&file); + stream.setCodec("ISO 8859-1"); + QString line; + while (stream.readLineInto(&line)) + m_mimetypeNames.insert(line); } } } @@ -569,10 +572,9 @@ void QMimeBinaryProvider::loadMimeTypePrivate(QMimeTypePrivate &data) const QString file = data.name + QLatin1String(".xml"); // shared-mime-info since 1.3 lowercases the xml files - QStringList mimeFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString::fromLatin1("mime/") + file.toLower()); - if (mimeFiles.isEmpty()) { - mimeFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString::fromLatin1("mime/") + file); // pre-1.3 - } + QStringList mimeFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("mime/") + file.toLower()); + if (mimeFiles.isEmpty()) + mimeFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("mime/") + file); // pre-1.3 if (mimeFiles.isEmpty()) { qWarning() << "No file found for" << file << ", even though update-mime-info said it would exist.\n" "Either it was just removed, or the directory doesn't have executable permission..." @@ -808,7 +810,7 @@ bool QMimeXMLProvider::load(const QString &fileName, QString *errorMessage) QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { if (errorMessage) - *errorMessage = QString::fromLatin1("Cannot open %1: %2").arg(fileName, file.errorString()); + *errorMessage = QLatin1String("Cannot open ") + fileName + QLatin1String(": ") + file.errorString(); return false; } diff --git a/src/corelib/mimetypes/qmimetype.cpp b/src/corelib/mimetypes/qmimetype.cpp index b259b42ac8..98a0e8eb1b 100644 --- a/src/corelib/mimetypes/qmimetype.cpp +++ b/src/corelib/mimetypes/qmimetype.cpp @@ -286,11 +286,12 @@ QString QMimeType::genericIconName() const // then the mimetype is used to generate the generic icon by using the top-level // media type (e.g. "video" in "video/ogg") and appending "-x-generic" // (i.e. "video-x-generic" in the previous example). - QString group = name(); - const int slashindex = group.indexOf(QLatin1Char('/')); + const QString group = name(); + QStringRef groupRef(&group); + const int slashindex = groupRef.indexOf(QLatin1Char('/')); if (slashindex != -1) - group = group.left(slashindex); - return group + QLatin1String("-x-generic"); + groupRef = groupRef.left(slashindex); + return groupRef + QLatin1String("-x-generic"); } return d->genericIconName; } diff --git a/src/corelib/mimetypes/qmimetype_p.h b/src/corelib/mimetypes/qmimetype_p.h index c89ffbefa3..b0bfad2f65 100644 --- a/src/corelib/mimetypes/qmimetype_p.h +++ b/src/corelib/mimetypes/qmimetype_p.h @@ -51,6 +51,7 @@ // We mean it. // +#include <QtCore/private/qglobal_p.h> #include "qmimetype.h" #ifndef QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimetypeparser.cpp b/src/corelib/mimetypes/qmimetypeparser.cpp index 535fa51c92..7693055cc1 100644 --- a/src/corelib/mimetypes/qmimetypeparser.cpp +++ b/src/corelib/mimetypes/qmimetypeparser.cpp @@ -85,7 +85,7 @@ static const char matchMaskAttributeC[] = "mask"; \class QMimeTypeParser \inmodule QtCore \internal - \brief The QMimeTypeParser class parses MIME types, and builds a MIME database hierarchy by adding to QMimeDatabasePrivate. + \brief The QMimeTypeParser class parses MIME types, and builds a MIME database hierarchy by adding to QMimeDatabase. Populates QMimeDataBase |