From 3c8949ec48267430710ec3e04710b48c487c47ff Mon Sep 17 00:00:00 2001 From: David Faure Date: Mon, 24 Oct 2011 00:50:22 +0200 Subject: [PATCH] Fix xdgmime bug #18109: implement better use of magic result when resolving conflicting globs --- src/xdgmimecache.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/xdgmimecache.c b/src/xdgmimecache.c index f1d58a90..91482020 100644 --- a/src/xdgmimecache.c +++ b/src/xdgmimecache.c @@ -687,14 +687,25 @@ cache_get_mime_type_for_data (const void *data, if (result_prio) *result_prio = priority; - + if (priority > 0) - return mime_type; + { + /* Pick glob-result R where mime_type inherits from R */ + for (n = 0; n < n_mime_types; n++) + { + if (mime_types[n] && _xdg_mime_cache_mime_type_subclass(mime_types[n], mime_type)) + return mime_types[n]; + } + + /* Return magic match */ + return mime_type; + } + /* Pick first glob result, as fallback */ for (n = 0; n < n_mime_types; n++) { if (mime_types[n]) - return mime_types[n]; + return mime_types[n]; } return NULL; -- 2.11.4.GIT