Subject: bug#72448: "xdg-mime query filetype" fails silently on many filetypes (with fixes I see)

From: Sébastien Lerique <[email-masked]>
Date: Sat, 03 Aug 2024 20:33:47 +0200

Ahoy Guix!

"xdg-mime query filetype a-book.epub" or "whatever.pdf" returns nothing,
which is both puzzling and limiting as it blocks "xdg-open" to work for
many files.

My case was opening pdf or epub files from Emacs, which "xdg-open"
always sends to the browser, whatever my config (instead of e.g. evince
or Foliate).

So debugging shows that:
in ".xdg-mime-real",
(/gnu/store/06ll0ydqsf4bjxwpwsi68dmn2cg0biy6-xdg-utils-1.1.3/bin/xdg-mime
points there),
l.673-684 in "info_gnome()",
even if the "if ... elif ... elif ... fi" fails
(i.e. none of "gio", "gvfs-info", or "gnomevfs-info" are available),
then l.696 "if [ $? -eq 0 ]" gives always true.

Why? I don't know. I guess having a "case ..." instead of "if ... fi"
would solve this.

But the result is "exit_success" gets called whatever the situation, and
xdg-mime often gives no output, which then bugs "xdg-open".

Running this in "guix shell gnome-vfs" solves it, but what should be
done to fix? And how did this not appear earlier? (is xdg* new?)

The options I see are adding the "gnome-vfs" dependency ("gvfs" doesn't
provide "gvfs-info", and "gio" is not a package), or proposing "case"
instead of "if" upstream.

-- 
Sébastien Lerique
https://slvh.fr/