file(1) / magic(5) database vs shared-mime-info database

Emmanuele Bassi ebassi at gmail.com
Sat Feb 24 12:10:51 UTC 2018


On 24 February 2018 at 07:39, Kip Warner <kip at thevertigo.com> wrote:
> Hey list,
>
> Unless I'm misunderstanding things, it seems to me as though typical
> GNU typical distros seem to ship two different systems for determining
> a file's magic.

The file(1) commands predates not just Linux by about 20 years, but
the whole of freedesktp.org, including the shared-mime database, by
about 30 years.

>From a portability perspective, file(1) is probably the best option if
you find yourself stranded in the past, or on Unix-like systems like
macOS. I think it'd be kind of unreasonable to make file(1) depend on
the shared-mime database, considering the tool's history and the fact
that the people that tend to use exclusively file(1) are a fairly
conservative bunch. Nevertheless, you could ask the author to detect
if the shared-mime database is installed, and use that instead of the
magic numbers database:

  http://www.darwinsys.com/file/

Ideally, though, you should ignore file(1) and magic(5) altogether on
Linux, if you are dealing with MIME types.

> If the second mechanism is intended to superannuate the
> first, would it not make sense to provide an fd.o replacement for
> file(1) which queries the system's shared-mime-info database instead? I
> would think this should be trivial to implement.

Considering that every single xdg-util utility is a shell script that
calls existing binaries, you can very likely write an
"xdg-content-type" that calls things like `gio info -a
standard::content-type` on a file under GNOME, or any other utility
under other environments, and propose it for inclusion in the xdg-util
suite:

  https://cgit.freedesktop.org/xdg/xdg-utils

Ciao,
 Emmanuele.

-- 
https://www.bassi.io
[@] ebassi [@gmail.com]


More information about the xdg mailing list