QMimeDatabasePrivate: remove unused output parameter
mimeTypeForFileNameAndData()'s output parameter int *priorityPtr (named differently "accuracyPtr" in the definition) is never used by its callers. Remove it to shorten the code and slightly improve performance. Change-Id: Ibc3d169501e89584b4318074ccb780580dc70fb6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
7a4da201b5
commit
153ded9b95
|
|
@ -365,19 +365,17 @@ QMimeType QMimeDatabasePrivate::findByData(const QByteArray &data, int *accuracy
|
|||
return mimeTypeForName(defaultMimeType());
|
||||
}
|
||||
|
||||
QMimeType QMimeDatabasePrivate::mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device, int *accuracyPtr)
|
||||
QMimeType QMimeDatabasePrivate::mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device)
|
||||
{
|
||||
// First, glob patterns are evaluated. If there is a match with max weight,
|
||||
// this one is selected and we are done. Otherwise, the file contents are
|
||||
// evaluated and the match with the highest value (either a magic priority or
|
||||
// a glob pattern weight) is selected. Matching starts from max level (most
|
||||
// specific) in both cases, even when there is already a suffix matching candidate.
|
||||
*accuracyPtr = 0;
|
||||
|
||||
// Pass 1) Try to match on the file name
|
||||
QMimeGlobMatchResult candidatesByName = findByFileName(fileName);
|
||||
if (candidatesByName.m_allMatchingMimeTypes.count() == 1) {
|
||||
*accuracyPtr = 100;
|
||||
const QMimeType mime = mimeTypeForName(candidatesByName.m_matchingMimeTypes.at(0));
|
||||
if (mime.isValid())
|
||||
return mime;
|
||||
|
|
@ -386,7 +384,7 @@ QMimeType QMimeDatabasePrivate::mimeTypeForFileNameAndData(const QString &fileNa
|
|||
|
||||
// Extension is unknown, or matches multiple mimetypes.
|
||||
// Pass 2) Match on content, if we can read the data
|
||||
const auto matchOnContent = [this, accuracyPtr, &candidatesByName](QIODevice *device) {
|
||||
const auto matchOnContent = [this, &candidatesByName](QIODevice *device) {
|
||||
if (device->isOpen()) {
|
||||
// Read 16K in one go (QIODEVICE_BUFFERSIZE in qiodevice_p.h).
|
||||
// This is much faster than seeking back and forth into QIODevice.
|
||||
|
|
@ -400,19 +398,16 @@ QMimeType QMimeDatabasePrivate::mimeTypeForFileNameAndData(const QString &fileNa
|
|||
const QString sniffedMime = candidateByData.name();
|
||||
// If the sniffedMime matches a highest-weight glob match, use it
|
||||
if (candidatesByName.m_matchingMimeTypes.contains(sniffedMime)) {
|
||||
*accuracyPtr = 100;
|
||||
return candidateByData;
|
||||
}
|
||||
for (const QString &m : qAsConst(candidatesByName.m_allMatchingMimeTypes)) {
|
||||
if (inherits(m, sniffedMime)) {
|
||||
// We have magic + pattern pointing to this, so it's a pretty good match
|
||||
*accuracyPtr = 100;
|
||||
return mimeTypeForName(m);
|
||||
}
|
||||
}
|
||||
if (candidatesByName.m_allMatchingMimeTypes.isEmpty()) {
|
||||
// No glob, use magic
|
||||
*accuracyPtr = magicAccuracy;
|
||||
return candidateByData;
|
||||
}
|
||||
}
|
||||
|
|
@ -420,7 +415,6 @@ QMimeType QMimeDatabasePrivate::mimeTypeForFileNameAndData(const QString &fileNa
|
|||
|
||||
if (candidatesByName.m_allMatchingMimeTypes.count() > 1) {
|
||||
candidatesByName.m_matchingMimeTypes.sort(); // make it deterministic
|
||||
*accuracyPtr = 20;
|
||||
const QMimeType mime = mimeTypeForName(candidatesByName.m_matchingMimeTypes.at(0));
|
||||
if (mime.isValid())
|
||||
return mime;
|
||||
|
|
@ -491,10 +485,9 @@ QMimeType QMimeDatabasePrivate::mimeTypeForFile(const QString &fileName,
|
|||
return mimeTypeForName(QLatin1String("inode/directory"));
|
||||
#endif
|
||||
|
||||
int priority = 0;
|
||||
switch (mode) {
|
||||
case QMimeDatabase::MatchDefault:
|
||||
return mimeTypeForFileNameAndData(fileName, nullptr, &priority);
|
||||
return mimeTypeForFileNameAndData(fileName, nullptr);
|
||||
case QMimeDatabase::MatchExtension:
|
||||
return mimeTypeForFileExtension(fileName);
|
||||
case QMimeDatabase::MatchContent: {
|
||||
|
|
@ -774,9 +767,8 @@ QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, QIO
|
|||
if (fileName.endsWith(QLatin1Char('/')))
|
||||
return d->mimeTypeForName(QLatin1String("inode/directory"));
|
||||
|
||||
int accuracy = 0;
|
||||
const bool openedByUs = !device->isOpen() && device->open(QIODevice::ReadOnly);
|
||||
const QMimeType result = d->mimeTypeForFileNameAndData(fileName, device, &accuracy);
|
||||
const QMimeType result = d->mimeTypeForFileNameAndData(fileName, device);
|
||||
if (openedByUs)
|
||||
device->close();
|
||||
return result;
|
||||
|
|
@ -807,8 +799,7 @@ QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, con
|
|||
|
||||
QBuffer buffer(const_cast<QByteArray *>(&data));
|
||||
buffer.open(QIODevice::ReadOnly);
|
||||
int accuracy = 0;
|
||||
return d->mimeTypeForFileNameAndData(fileName, &buffer, &accuracy);
|
||||
return d->mimeTypeForFileNameAndData(fileName, &buffer);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ public:
|
|||
QString resolveAlias(const QString &nameOrAlias);
|
||||
QStringList parents(const QString &mimeName);
|
||||
QMimeType mimeTypeForName(const QString &nameOrAlias);
|
||||
QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device, int *priorityPtr);
|
||||
QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device);
|
||||
QMimeType mimeTypeForFileExtension(const QString &fileName);
|
||||
QMimeType mimeTypeForData(QIODevice *device);
|
||||
QMimeType mimeTypeForFile(const QString &fileName, const QFileInfo *fileInfo, QMimeDatabase::MatchMode mode);
|
||||
|
|
|
|||
Loading…
Reference in New Issue