diff options
Diffstat (limited to 'src/xdgmime.c')
-rw-r--r-- | src/xdgmime.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/xdgmime.c b/src/xdgmime.c index c3b21cb..c7b16bb 100644 --- a/src/xdgmime.c +++ b/src/xdgmime.c @@ -64,6 +64,8 @@ XdgMimeCache **_caches = NULL; static int n_caches = 0; const char xdg_mime_type_unknown[] = "application/octet-stream"; +const char xdg_mime_type_empty[] = "application/x-zerosize"; +const char xdg_mime_type_textplain[] = "text/plain"; enum @@ -467,17 +469,23 @@ xdg_mime_get_mime_type_for_data (const void *data, { const char *mime_type; + if (len == 0) + { + *result_prio = 100; + return XDG_MIME_TYPE_EMPTY; + } + xdg_mime_init (); if (_caches) - return _xdg_mime_cache_get_mime_type_for_data (data, len, result_prio); - - mime_type = _xdg_mime_magic_lookup_data (global_magic, data, len, result_prio, NULL, 0); + mime_type = _xdg_mime_cache_get_mime_type_for_data (data, len, result_prio); + else + mime_type = _xdg_mime_magic_lookup_data (global_magic, data, len, result_prio, NULL, 0); if (mime_type) return mime_type; - return XDG_MIME_TYPE_UNKNOWN; + return _xdg_binary_or_text_fallback(data, len); } const char * @@ -556,7 +564,7 @@ xdg_mime_get_mime_type_for_file (const char *file_name, if (mime_type) return mime_type; - return XDG_MIME_TYPE_UNKNOWN; + return _xdg_binary_or_text_fallback(data, bytes_read); } const char * |