diff options
author | David Faure <faure@kde.org> | 2011-10-24 00:50:22 +0200 |
---|---|---|
committer | David Faure <faure@kde.org> | 2011-10-24 00:50:22 +0200 |
commit | 3c8949ec48267430710ec3e04710b48c487c47ff (patch) | |
tree | bf13cd6e20616f5b1bcd966b039bc9f1bcc3698d | |
parent | 2ba7c6df566f2821528839e19eb0fa0239201420 (diff) |
Fix xdgmime bug #18109: implement better use of magic result
when resolving conflicting globs
-rw-r--r-- | src/xdgmimecache.c | 17 |
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; |