The format of Shared MIME Database magic values

Jerome Leclanche adys.wh at gmail.com
Mon Dec 16 05:33:35 PST 2013


Mime types are interesting to know about, so if you want to learn more
about them why not. A windows-compatible lib would be interesting. But
all in all, Qt already has a mime type solution.

J. Leclanche


On Mon, Dec 16, 2013 at 9:55 AM, Alexander Kamyshnikov
<axill777 at gmail.com> wrote:
> Oh thanks, Kevin! This library is exactly i need for.
> However, yet-another-implementation-of MIME loader might be useful for
> somebody, or i'm just wasted my time? :)
> This was funny and interesting quest.
>
>
> 2013/12/16 Kevin Krammer <krammer at kde.org>
>>
>> On Monday, 2013-12-16, 12:45:47, Alexander Kamyshnikov wrote:
>> > I'm confused a bit.
>> > So, you want to say that QMimeDatabase from Qt5 can be separately used
>> > in
>> > Qt4?
>> > I.e. i can just include this code in mine.
>>
>> Not the Qt5 based code obviously. But Jerome said that there is a Qt4 port
>> of
>> the Qt5 code.
>>
>> I guess he is referring to
>> https://github.com/pasnox/mimetypes-qt4
>>
>> Cheers,
>> Kevin
>>
>> > Also, i'm trying to google "qmimedatabase qt4", but find nothing
>> > appropriate.
>> > A more concrete search direction will be welcome.
>> > P.S. Sorry, if i don't understand simple things. My english is not
>> > perfect
>> > yet.
>> >
>> >
>> > 2013/12/16 Kevin Krammer <krammer at kde.org>
>> >
>> > > On Monday, 2013-12-16, 11:41:34, Alexander Kamyshnikov wrote:
>> > > > Hi Kevin. I'm glad to see KDE developer here because i'm KDE fan for
>> > > > many
>> > > > years :)
>> > > > But this KDE MIME-support code hardly depend from other KDE stuff,
>> > > > isn't
>> > >
>> > > it?
>> > >
>> > > > I need "pure" Qt code - this is our software client requirement :/
>> > > > So
>> > > > i'm
>> > > > wrote CMimeDatabase class. And just want to make it fully compliant
>> > > > with
>> > > > freedesktop standart.
>> > >
>> > > Just wanted to point out that the Qt5 implementation was contributed
>> > > by
>> > > KDE
>> > > developers, so additional to the Qt4 port of that code there is also
>> > > "the
>> > > original" Qt4 code available.
>> > >
>> > > But of course if you need a pure C++ implementation without Qt then
>> > > writing a
>> > > new one is your only choice.
>> > >
>> > > Cheers,
>> > > Kevin
>> > >
>> > > > (see
>> > >
>> > >
>> > > http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/kmimetype_8h_sourc
>> > > e
>> > > .
>> > >
>> > > > html -
>> > > > KUrl, KServiceType etc.)
>> > > >
>> > > >
>> > > > 2013/12/14 Kevin Krammer <krammer at kde.org>
>> > > >
>> > > > > On Friday, 2013-12-13, 20:11:34, Jerome Leclanche wrote:
>> > > > > > There is a Qt 4 port of this.
>> > > > >
>> > > > > And there should also be the original Qt4 based code in the
>> > > > > kdelibs
>> > > > > repository.
>> > > > >
>> > > > > Cheers,
>> > > > > Kevin
>> > > > >
>> > > > > > As for windows support... I've been down that road, trying to
>> > > > > > provide
>> > > > > > it. Windows' feature set doesn't even sort of come close; it
>> > > > > > only
>> > > > > > provides real mime types for a limited set of registered
>> > > > > > extensions,
>> > > > > > and it doesn't provide any of the very useful features such as
>> > > > > > subclassing, etc. In the end, I gave up and am only providing
>> > > > > > xdg-based mime types. I think Qt made an excellent choice in
>> > >
>> > > providing
>> > >
>> > > > > > the xdg database itself. But if you choose against that, good
>> > > > > > luck.
>> > > > > >
>> > > > > > Anyway you can have a look at my python-based mimetype lib.
>> > > > > > Magic
>> > > > > > matches are implemented on line 192 onwards.
>> > > > > >
>> > > > > > https://github.com/Adys/python-xdg/blob/master/xdg/mime.py
>> > > > > >
>> > > > > > J. Leclanche
>> > > > > >
>> > > > > >
>> > > > > > On Fri, Dec 13, 2013 at 7:56 PM, Alexander Kamyshnikov
>> > > > > >
>> > > > > > <axill777 at gmail.com> wrote:
>> > > > > > > Yes, i had. But i decided to write my own implementation
>> > > > > > > because:
>> > > > > > > a) my project is forced to use Qt4 only (clients have very old
>> > > > >
>> > > > > versions of
>> > > > >
>> > > > > > > modified Red Hat with XDG_DATA_DIRS undefined);
>> > > > > > > b) Windows support (through reading registry HKCR/.ext keys)
>> > > > > > > is
>> > > > >
>> > > > > required;
>> > > > >
>> > > > > > > c) I'm very curious :)
>> > > > > > >
>> > > > > > > You think i'm should look deeply at the qmimedatabase.cpp
>> > > > > > > however?
>> > > > > > >
>> > > > > > >
>> > > > > > > 2013/12/13 Jerome Leclanche <adys.wh at gmail.com>
>> > > > > > >
>> > > > > > >> Have you had a look at the Qt 5 mimetype module?
>> > > > > > >>
>> > > > > > >> http://qt-project.org/doc/qt-5.0/qtcore/qmimedatabase.html
>> > > > > > >> J. Leclanche
>> > > > > > >>
>> > > > > > >>
>> > > > > > >> On Fri, Dec 13, 2013 at 7:35 PM, Alexander Kamyshnikov
>> > > > > > >>
>> > > > > > >> <axill777 at gmail.com> wrote:
>> > > > > > >> > Hi all!
>> > > > > > >> > I'm developing the implementation of MIME database in
>> > > > > > >> > C++/Qt
>> > > > > > >> > for
>> > > > > > >> > one
>> > > > > > >> > commercial program (requirement managment tool, if one will
>> > > > > > >> > be
>> > > > > > >> > interested).
>> > > > > > >> > So my question is: the format of magic values to compare
>> > > > > > >> > file
>> > > > > > >> > header
>> > > > > > >> > data
>> > > > > > >> > with is not specified exactly in the spec. I mean the
>> > > > >
>> > > > > magic/match/value
>> > > > >
>> > > > > > >> > attribute.
>> > > > > > >> > What exactly mean those magic strings from
>> > > > > > >> > /usr/share/mime/packages/freedesktop.org.xml from my
>> > > > > > >> > Kubuntu?
>> > > > > > >> > 1) "\1\9"
>> > > > > > >> > 2) "\376\067\0\043"
>> > > > > > >> > 3) "\x8AMNG\x0D\x0A\x1A\x0A"
>> > > > > > >> > Second is looks like octal number in C notation, third -
>> > > > >
>> > > > > hexadecimal,
>> > > > >
>> > > > > > >> > but
>> > > > > > >> > about first i'm not sure. It is just "usual" decimal value?
>> > > > > > >> > What format exactly should use magic values?
>> > > > > > >> > Thanks for your help. WBR, Alexander
>> > >
>> > > > > > >> > P.S. Spec i'm using living here:
>> > >
>> > > http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info
>> > >
>> > > > > > >> > -spec-latest.html#id2661973 P.S. <match> items can be
>> > > > > > >> > nested.
>> > >
>> > > But i
>> > >
>> > > > > > >> > can't find yet the clear way to implement their storage
>> > > > > > >> > programmatically. Some kind of tree, or reverse polish
>> > > > > > >> > notation
>> > > > >
>> > > > > should
>> > > > >
>> > > > > > >> > be used here? nevermind
>> > > > > > >> >
>> > > > > > >> > _______________________________________________
>> > > > > > >> > xdg mailing list
>> > > > > > >> > xdg at lists.freedesktop.org
>> > > > > > >> > http://lists.freedesktop.org/mailman/listinfo/xdg
>> > > > > >
>> > > > > > _______________________________________________
>> > > > > > xdg mailing list
>> > > > > > xdg at lists.freedesktop.org
>> > > > > > http://lists.freedesktop.org/mailman/listinfo/xdg
>> > > > >
>> > > > > --
>> > > > > Kevin Krammer, KDE developer, xdg-utils developer
>> > > > > KDE user support, developer mentoring
>> > > > >
>> > > > > _______________________________________________
>> > > > > xdg mailing list
>> > > > > xdg at lists.freedesktop.org
>> > > > > http://lists.freedesktop.org/mailman/listinfo/xdg
>> > >
>> > > --
>> > > Kevin Krammer, KDE developer, xdg-utils developer
>> > > KDE user support, developer mentoring
>> > >
>> > > _______________________________________________
>> > > xdg mailing list
>> > > xdg at lists.freedesktop.org
>> > > http://lists.freedesktop.org/mailman/listinfo/xdg
>> --
>> Kevin Krammer, KDE developer, xdg-utils developer
>> KDE user support, developer mentoring
>>
>> _______________________________________________
>> xdg mailing list
>> xdg at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/xdg
>>
>
>
> _______________________________________________
> xdg mailing list
> xdg at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xdg
>


More information about the xdg mailing list