[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Re: doubled entries in ksycoca?
From: David Faure <faure () kde ! org>
Date: 2008-06-30 11:18:34
Message-ID: 200806301318.35783.faure () kde ! org
[Download RAW message or body]
On Saturday 28 June 2008, Christian Ehrlicher wrote:
> David Faure schrieb:
> > On Friday 27 June 2008, Christian Ehrlicher wrote:
> > > Hi,
> > >
> > > while trying to fix ksyscocatest on windows I found a problem in my
> > > ksycoca cache. Some entries doubled.
> > > Digging a little bit deeper I found out that the doubles are written in
> > > KBuildMimeTypeFactory::savePatternLists() --> m_fastPatternDict->save(str)
> > >
> > > I added some debug output:
> > >
> > > keyStr offset &payload
> > > "asc" 78230 0x1e7ef58
> > > "asc" 82709 0x1ea07f8
> > > "asc" 82709 0x1eb2610
> > > "asc" 127207 0x1e17c48
> >
> > Yes, this simply means you have multiple mimetypes associated with the same \
> > pattern *.asc. Same here:
> > KBuildMimeTypeFactory::savePatternLists: mimeType "application/pgp-keys" has \
> > patterns ("*.skr", "*.asc", "*.pkr") KBuildMimeTypeFactory::savePatternLists: \
> > mimeType "text/plain" has patterns ("*.asc", "*.txt", "*.doc") \
> > KBuildMimeTypeFactory::savePatternLists: mimeType "application/pgp-encrypted" has \
> > patterns ("*.asc", "*.gpg","*.pgp")
> > I added support for KSycocaDict being used as a multihash (multiple instances of \
> > a key), when I wrote the shared-mime-info support, see \
> > KSycocaDict::findMultiString. And this is indeed what \
> > KMimeTypeFactory::findFromFastPatternDict uses, to get all mimetypes matching a \
> > given extension. After that, KMimeType::findByUrlHelper chooses between those \
> > mimetypes by using sniffing. I still have to implement the support for the new \
> > pattern (=glob) priority concept from shared-mime-info, but it's pointless to do \
> > so before more people actually have an updated shared-mime-info :)
> The problem is that it breaks the kmimetypetest in line 233:
That test is about a foo.txt file that contains a PDF. This is completely unrelated \
to the *.asc pattern.
> KMimeType::findByUrlHelper() looks for (mimeList.count() == 1) in line 297
Yes (and uses sniffing if there is more than one mimetype in the list).
So, do you have more than one mimetype associated with *.txt? I don't.
-Asterix- dfaure 13:17 /d/kde/build/trunk/kdelibs/kded>../bin/kbuildsycoca4.shell \
2>&1 | grep -w '\.txt' kbuildsycoca4(29270) KBuildMimeTypeFactory::savePatternLists: \
mimeType "text/plain" has patterns ("*.asc", "*.txt", "*.doc")
--- kbuildmimetypefactory.cpp (revision 826270)
+++ kbuildmimetypefactory.cpp (working copy)
@@ -300,6 +300,7 @@ KBuildMimeTypeFactory::savePatternLists(
const KMimeType::Ptr mimeType = KMimeType::Ptr::staticCast( entry );
const QStringList pat = mimeType->patterns();
+ kDebug() << "mimeType" << mimeType->name() << "has patterns" << pat;
QStringList::ConstIterator patit = pat.begin();
for ( ; patit != pat.end() ; ++patit )
{
--
David Faure, faure@kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic