[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE
From: David Faure <faure () kde ! org>
Date: 2008-07-07 23:20:36
Message-ID: 1215472836.003058.6870.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 829270 by dfaure:
Fix mimetype determination with pattern like *.pkg.tar.gz
Analysis and patch by Pino, unit test by me.
M +6 -2 kdebase/apps/konqueror/settings/filetypes/tests/filetypestest.cpp
M +4 -2 kdelibs/kdecore/services/kmimetypefactory.cpp
--- trunk/KDE/kdebase/apps/konqueror/settings/filetypes/tests/filetypestest.cpp \
#829269:829270 @@ -248,7 +248,7 @@
MimeTypeData data(mimeTypeName, true);
data.setComment("Fake MimeType");
- QStringList patterns = QStringList() << "*.fake";
+ QStringList patterns = QStringList() << "*.pkg.tar.gz";
data.setPatterns(patterns);
QVERIFY(data.isDirty());
QVERIFY(data.sync());
@@ -257,7 +257,11 @@
KMimeType::Ptr mime = KMimeType::mimeType(mimeTypeName);
QVERIFY(mime);
QCOMPARE(mime->comment(), QString("Fake MimeType"));
- QCOMPARE(mime->patterns(), patterns);
+ QCOMPARE(mime->patterns(), patterns); // must sort them if more than one
+
+ // Testcase for the shaman.xml bug
+ QCOMPARE(KMimeType::findByPath("/whatever/foo.pkg.tar.gz")->name(), \
QString("fake/unit-test-fake-mimetype")); +
m_mimeTypeCreatedSuccessfully = true;
}
--- trunk/KDE/kdelibs/kdecore/services/kmimetypefactory.cpp #829269:829270
@@ -193,7 +193,7 @@
if (pattern[0] == '*' && pattern.indexOf('[') == -1)
{
if ( len + 1 < pattern_len ) return false;
-
+
const QChar *c1 = pattern.unicode() + pattern_len - 1;
const QChar *c2 = filename.unicode() + len - 1;
int cnt = 1;
@@ -217,7 +217,7 @@
}
// Names without any wildcards like "README"
- if (pattern.indexOf('[') == -1 && pattern.indexOf('*') == -1 && \
pattern.indexOf('?')) + if (pattern.indexOf('[') == -1 && pattern.indexOf('*') == \
-1 && pattern.indexOf('?')) return (pattern == filename);
// Other patterns, like "[Mm]akefile": use slow but correct method
@@ -284,6 +284,8 @@
} else if (pattern.length() > matchingPatternLength) {
// longer: clear any previous match (like *.bz2, when pattern is \
*.tar.bz2) matchingMimeTypes.clear();
+ // remember the new "longer" length
+ matchingPatternLength = pattern.length();
}
KMimeType *newMimeType = createEntry( *it_offset );
assert (newMimeType && newMimeType->isType( KST_KMimeType ));
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic