summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2011-10-24 00:50:22 +0200
committerDavid Faure <faure@kde.org>2011-10-24 00:50:22 +0200
commit3c8949ec48267430710ec3e04710b48c487c47ff (patch)
treebf13cd6e20616f5b1bcd966b039bc9f1bcc3698d
parent2ba7c6df566f2821528839e19eb0fa0239201420 (diff)
Fix xdgmime bug #18109: implement better use of magic result
when resolving conflicting globs
-rw-r--r--src/xdgmimecache.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/xdgmimecache.c b/src/xdgmimecache.c
index f1d58a9..9148202 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;