summaryrefslogtreecommitdiff
path: root/src/xdgmime.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xdgmime.c')
-rw-r--r--src/xdgmime.c18
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 *