We've been having some discussion on IRC over the current mimetype detection...
There are several issues with the current call: - it assumes a local file, so implementations try to read xattrs, - it returns "text/html" on failure instead of NULL, which have some side effects. In several places I would need some similar calls but for urls or data buffers but I can't use the existing call correctly. For example, with gopher some item types don't have a specific mime type so it must be probed either by extension or by sniffing the incoming data. But using fetch_filetype() which returns text/html by default makes it try to display binary files... BeOS had a mime sniffer for 15 years, and other "sane" OS have one too. XDG seems to have something specified as well: http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec There seems to be an attempt at normalizing some mime sniffing as part of HTML5 also: http://code.google.com/p/mimesniff/ http://tools.ietf.org/html/draft-abarth-mime-sniff-03 What I'd propose is to have something like: [const?] char *fetch_mime_localfile(const char *path); [const?] char *fetch_mime_by_ext(const char *filename); [const?] char *fetch_mime_by_data(const void *data, size_t size); The last 2, the new ones, are easily implemented in BeOS for ex. with the BMimeType:GuessMimeType() variants: http://cvincent.pagesperso-orange.fr/bebook/Release Notes/StorageKit.html#GuessMimeType() François.
