Bug 55120 - application/x-zerosize isn't supported when not using cache.
application/x-zerosize isn't supported when not using cache.
Status: NEW
Product: xdgmime
Classification: Unclassified
Component: xdgmime
unspecified
x86 (IA32) Linux (All)
: medium normal
Assigned To: Jonathan Blandford
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-09-19 20:07 UTC by Norm Pierce
Modified: 2012-09-19 20:07 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Norm Pierce 2012-09-19 20:07:39 UTC
Last September support was implemented for the application/x-zerosize MIME type.  This works fine when there is support for loading the mime.cache file into shared memory (and the file exists), but not otherwise.

To reproduce, create an empty file that doesn't match any glob.  For instance:

touch /tmp/test_empty

Then hide all of your mime.cache files ($HOME/.local/share/mime/mime.cache, /usr/share/mime/mime.cache, /usr/local/share/mime/mime.cache) and run test-mime on the empty file.

Expected results:
File "/tmp/test_empty" has a mime-type of application/x-zerosize

Actual results:
File "/tmp/test_empty" has a mime-type of text/plain

Here is the commit from last September:

http://cgit.freedesktop.org/xdg/xdgmime/commit/?id=5181175d5fdaa3832b0fd094cda0120b1fe92af6
"xdg/xdgmime: Implement text vs binary fallback; support for application/x-zerosize"

Looking at the commit diff for xdgmimecache.c, you can see where

+  if (statbuf->st_size == 0)
+    return XDG_MIME_TYPE_EMPTY;
+

has been added just before the existing

   if (!S_ISREG (statbuf->st_mode))
     return XDG_MIME_TYPE_UNKNOWN;

in _xdg_mime_cache_get_mime_type_for_file().

To fix this bug, the same code also needs to be added to the general version of that function, xdg_mime_get_mime_type_for_file(), in xdgmime.c.